您的当前位置:首页正文

jsp实训报告

2020-10-24 来源:意榕旅游网


目 录

一 项目简介..............................................................................3 1.1项目的意义........................................................................3 1.2 项目说明...........................................................................3 1.3 关键技术...........................................................................3 二 总体设计...............................................................................3 2.1 布局设计......................................................................................3

2.2 具体设计....................................................................................4

三 详细设计与实现...................................................................6 3.1注册界面......................................................................................6

3.2 登录主界面.................................................................................7 3.3 系统主页界面............................................................................7

3.4 发表界面.....................................................................................8 3.5帖子内容及其回复....................................................................8 3.6 个人信息管理...........................................................................9 3.7 他人帖子页面...........................................................................10 3.8 管理员管理页面.......................................................................10

四 代码设计(主要)........................................................................11

4.1 登陆代码...................................................................................11 4.2 注册代码...................................................................................12 4.3首页代码.....................................................................................12 4.4 回复代码...................................................................................13

4.5 分页代码.................................................................................14 4.6 更新的Serlet代码...................................................................15 4.7 乱码处理..................................................................................15

五 总结........................................................................................16

BBS系统

一、 项目简介

1.1项目的意义

论坛系统BBS(Bulletin Board System电子公告牌系统)是互联网上一种人与

人之间交流的必备工具。论坛系统是互联网上的一种应用服务模式,通过这种服务,互联网用户可以在上面浏览到其他用户发表的各种主题、文章、问题等内容,并且用户可以在上面针对某个具体的内容即时地发表自己的观点、看法、议论等,或者直接发表自己的文章、问题或其它内容。

1.2项目的说明

一个简单的BBS论坛,大致分为以下流程:

(1)用户登陆进入论坛(游客只能查看论坛首页的少许信息,查看帖子或其它的功能需注册、登录,会跳转到登录页面。

(2)就某个话题(贴子的主题)展开讨论。 (3)通过发帖功能发布新的话题。 (4)通过回帖功能恢复已有的话题。 (5)通过搜索功能查找已有的话题。

(6)在个人信息页面可以查看个人信息、自己所有的帖子以及对自己信息的修改,和对个人帖子的修改和删除。

(7)管理员对所有信息的管理。

1.3 关键技术

Jsp、html、javaScript、css叠层样式、数据库MySQL

二 、总体设计 2.1布局设计

系统总体功能需求框架图如下:

1

BBS论坛系统 前台基本业务模块 后台管理模块

前台基本业务模块 游客注册 会员登录 会员浏览帖子 会员发表帖子 个人信息管理 个人帖子管理 退出

后台管理摸快 管理员登录 分类信息查询 对应信息的修改 信息 的删除 退出

2

2.2具体设计

(1)数据库

Posts表

Reply表

User表

(2) 相关类的编写

connDb.java 数据库连接

获取相关数据:

3

Filter.Java 乱码处理

user的相关操作实现:

帖子的操作类和相关Servlet:

回复的相关类:

(3)前台的布局和相关参数的传递

三、详细设计与实现

3.1 用户注册界面

Registered.jsp注册用户名和密码有相关的校验,错误会跳出警告

4

3.2 用户登陆界面

Login.jsp已注册人员登录

3.3系统主界面

…BBS/hone登入系统首页后,可以选择操作项:查看帖子,热点帖子,点

击发帖人查看别人所发帖子(自己的就进入个人页面),发帖,刷新,返回顶部,退出

5

3.4 发表界面

点击发帖按钮或者右下角的发帖图标由home#fabiao(div的id)跳转到发帖框,如果未登录会有无法发表,有相关的登录链接,当前为已登录。

3.5 帖子查看及其回复页面

Reply.jsp帖子内容及其回复

6

3.6个人信息管理界面

7

个人信息修改:

帖子内容修改:

3.7他人帖子界面

-

3.8管理员管理界面

对相关信息的修改

8

搜索结果诸如此类:然后可以进行相关操作。

四、代码设计 4.1 登陆代码

//登录 public userGetSet login(String userName, String userPassword){

PreparedStatement ps=null; Connection conn=null;

conn = connDb.getDBconnection(); ResultSet rs=null;

String sql = \"select * from user where user_name= ? and password

userGetSet user = null;

= ?\";

9

try { ps = conn.prepareStatement(sql); ps.setString(1, userName); ps.setString(2, userPassword); rs = ps.executeQuery(); if(rs.next()){ user = new userGetSet();

user.setUser_id(rs.getInt(\"user_id\"));

user.setUser_name(rs.getString(\"user_name\")); user.setSex(rs.getString(\"sex\"));

user.setPassword(rs.getString(\"password\")); user.setEmail(rs.getString(\"email\")); user.setMobil(rs.getString(\"mobil\"));

}

rs.close(); ps.close();

} catch (Exception e) { e.printStackTrace(); }finally{

connDb.closeDB(conn, ps,rs);

}

return user;

}

4.2 注册代码

public class addUser {

//实现向数据库中添加记录的方法 public void userCreate(userGetSet users) throws Exception{

String INSERT_SQL=\"insert into user(user_name,password,sex,email,mobil) values(?,?,?,?,?)\";

Connection con=null;

PreparedStatement prepStmt=null; ResultSet rs=null; try{

con=(Connection) connDb.getDBconnection(); prepStmt = (PreparedStatement) con.prepareStatement(INSERT_SQL);

prepStmt.setString(1, users.getUser_name());

10

}

prepStmt.setString(2,users.getPassword()); prepStmt.setString(3,users.getSex()); prepStmt.setString(4,users.getEmail()); prepStmt.setString(5,users.getMobil()); prepStmt.executeUpdate(); } catch(Exception e){ } finally{

connDb.closeDB(con, prepStmt, rs); } }

4.3首页代码

public List find(int page){

}

return list;

conn.close();

e.printStackTrace(); } catch (SQLException e) {

while(rs.next()){

postsMethod posts = new postsMethod();

List list = new ArrayList(); Connection conn = connDb.getDBconnection();

String sql = \"select * from r_posts order by topic_id desc try {

PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, (page - 1) * postsMethod.PAGE_SIZE); ps.setInt(2, postsMethod.PAGE_SIZE); ResultSet rs = ps.executeQuery();

limit ?,?\";

posts.setCount_reply(rs.getInt(\"count_reply\")); posts.setTopic_id(rs.getInt(\"topic_id\")); posts.setTopic_name(rs.getString(\"topic_name\")); posts.setAuthor(rs.getString(\"author\"));

posts.setTopic_content(rs.getString(\"topic_content\")); posts.setAuthor_id(rs.getInt(\"author_id\"));

posts.setPosts_time(rs.getTimestamp(\"posts_time\")); }

rs.close(); ps.close();

list.add(posts);

11

}

4.4 回复代码

public void saveReply(replyGetSet reply){

Connection conn = connDb .getDBconnection();

PreparedStatement ps=null; String sql = \"insert into reply (topic_id,reply_content,reply_name) values(?,?,?)\";

try { ps = conn.prepareStatement(sql); ps.setInt(1,reply.getTopic_id());

ps.setString(2, reply.getReply_content());

ps.setString(3, reply.getReply_name());

ps.executeUpdate(); ps.close();

} catch (Exception e) { e.printStackTrace();

}finally{

connDb.closeDB(conn, ps, null);

}

}

}

4.5 分页代码

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(\"text/html\"); PrintWriter out = response.getWriter();

int currPage = 1;

if(request.getParameter(\"page\") != null){ currPage = Integer.parseInt(request.getParameter(\"page\"));

}

selectPosts dao = new selectPosts();

List list = dao.find(currPage); request.setAttribute(\"list\", list); int pages ;

int count = dao.findCount();

if(count % postsMethod.PAGE_SIZE == 0){

12

}

pages = count / postsMethod.PAGE_SIZE; pages = count / postsMethod.PAGE_SIZE + 1;

}else{

StringBuffer sb = new StringBuffer(); for(int i=1; i <= pages; i++){ }

request.setAttribute(\"bar\", sb.toString());

request.getRequestDispatcher(\"home.jsp\").forward(request, response);

if(i == currPage){

sb.append(\"『\" + i + \"』\"); }else{ }

sb.append(\" \");

sb.append(\"\" + i + \"\");

4.6 更新的Servlet代码

public void doPost(HttpServletRequest request, HttpServletResponse response)

response.setContentType(\"text/html\"); PrintWriter out = response.getWriter(); int topic_id=

String topic_content=request.getParameter(\"topic_content\"); postsMethod posts =new postsMethod(); posts.setTopic_id(topic_id);

posts.setTopic_content(topic_content); updateMyPosts update=new updateMyPosts();

throws ServletException, IOException {

Integer.parseInt(request.getParameter(\"topic_id\"));

try {

update.upadposts(posts);

}

} catch (Exception e) { }

request.getRequestDispatcher(\"home\").forward(request, out.flush(); out.close();

e.printStackTrace();

response);

4.7 乱码处理代码

13

public class filter implements Filter { }

}

public void init(FilterConfig arg0) throws ServletException { }

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse

FilterChain filterchain) throws IOException,

public void destroy() {

// TODO Auto-generated method stub

response,

ServletException {

request.setCharacterEncoding(\"UTF-8\"); response.setCharacterEncoding(\"UTF-8\"); filterchain.doFilter(request, response);

以上为部分相关代码,不分其他页面的类类似,页面布局和其他代码请看电子版BBS的制作文件

五、总结

本系统为简单的BBS论坛系统,系统在设计过程中不可避免地遇到了很多技术问题,有关页面设计的许多细节都要靠自己去摸索,加之本人水平有限,还未能够考虑到论坛系统的各种需求,所以在功能上仍存在着许多不足之处:

(1) 浏览器地址栏会显示登录人员的信息 (2) 退出存在缺陷 (3) 操作后的跳转等等

14

受开发条件和开发时间的限制,好多在系统实现的过程中想增加的功能还未能实现。如:

(1)论坛精华区这个功能还没有完成。 (2)目前论坛访问人数等数据没有实现。 (3)论坛积分制,各个用户的头衔还没有设置。

(4)如何实现一定时间内的帖子,如何过滤帖子里的不良语句。 (5)论坛版主设置还没能实现。

(6)上传和下载功能未实现。 同时界面还有待再加以美化。 这些都是需要完善的地方,该系统离实际使用也还有相当的距离,需要我进行不断地补充和完善。

15

因篇幅问题不能全部显示,请点此查看更多更全内容