课程考查报告(JSP)

时间:2024.4.29

华 北 科 技 学 院

课程考查报告

班 级: 计科B123 姓名: 董帅帅 课程名称: JSP网络编程 课程性质: 专业选修 开设学期考核成绩:______________________________ 任课教师: 李永飞

20xx年5月19日

1 任务描述

学生根据新闻发布系统的需求文档,选用某种关系型数据库,采用JSP技术开发实现一个Web应用程序。

2 系统分析与设计 2.1 数据库设计

数据需要数据库的管理,数据的结构将影响整个系统。本实验是新闻发布系统的简单实现,所以使用简单的个人数据库管理软件mysql实现,数据库名称为testdata,共有三个表:news表,user表,comment表。

user表结构:

课程考查报告JSP

news表结构:

课程考查报告JSP

课程考查报告JSP

2.2 用户界面设计

用户界面是进入系统呈现在用户面前的界面,反映了这个系统的风格,本系统是简单的新闻发布系统,本着简约的设计理念设计,运用css+div的布局设计。如下为注册用户登录界面,页面上部由top.jsp页面实现,页面左部由hot.jsp页面实现热点新闻和最新评

comment表结构:

论,页面下部为页脚部分,由foot.jsp页面实现。如下为页面实现:

课程考查报告JSP

图1:主页面

2.3 功能模块设计

2.3.1 查看新闻列表模块

本模块主要实现查看新闻列表的功能,此功能是所有用户共有的功能,通过从数据库news表中查找新闻标题和内容,以列表的形式将新闻标题顺序显示在表格中。 主要代码如下:

连接数据库和执行sql语句通过封装的javabean实现,将从数据库中查出的新闻存放在列表中,以便之后的调用。

public List<News> NewsList() {

Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = DBget.getConnection(); String sql = "select * from news"; ps = con.prepareStatement(sql); rs = ps.executeQuery(); ArrayList<News> list = new ArrayList<News>(); News news; while (rs.next()) { news = new News(); news.setN_id(rs.getInt("n_id"));

} } } news.setN_title(rs.getString("n_title")); news.setN_author(rs.getString("n_author")); list.add(news); return list; e.printStackTrace(); DBget.closeResultSet(rs); DBget.closePreparedStatement(ps); DBget.closeConnection(con); } catch (Exception e) { } finally { return null;

jsp页面主要实现业务逻辑的功能,将从数据库查出来的数据显示在页面的表格中。 如下所示:

<body>

<h3> 新闻列表 </h3> <table align="center" border="1" cellspacing="0" <tr> <% %> <tr> <td><%=i + 1%></td> <td><%=news.getN_title()%></td> NewsDao newslist=new NewsDao(); List<News> list = new ArrayList<News>(); list = newslist.NewsList(); for (int i = 0; i < list.size(); i++) { News news = (News) list.get(i); <th> 新闻编号 </th> <th> 新闻标题 </th> <th> 操作 </th> width="50%"> </tr>

<% %> <td> </td> <a href="news/disNews.jsp?n_id=<%=news.getN_id()%>">view</a> </tr> } </table>

</body>

2.3.2 阅读新闻内容模块

本模块主要实现阅读新闻的功能,此功能是所有用户共有的功能,通过从数据库中news表中查出新闻的内容,在页面上显示新闻的标题,新闻的作者,发布日期,新闻内容。

主要代码如下:

数据库连接和sql语句的查询封装在javabean中,主要实现从数据库中按新闻Id查找新闻内容并封装在对象News中以便之后的调用。

public News getNewsById(int n_id) {

Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = DBget.getConnection(); String sql = "select * from news where n_id=?"; ps = con.prepareStatement(sql); ps.setInt(1, n_id); rs = ps.executeQuery(); News news = new News(); if (rs.next()) { } return news; e.printStackTrace(); DBget.closeResultSet(rs); DBget.closePreparedStatement(ps); news.setN_title(rs.getString("n_title")); news.setN_author(rs.getString("n_author")); news.setN_content(rs.getString("n_content")); news.setN_date(rs.getDate("n_date")); news.setN_lastdate(rs.getDate("n_lastdate")); news.setN_ishot(rs.getString("n_ishot")); } catch (Exception e) { } finally {

} } DBget.closeConnection(con); return null;

jsp新闻界面完成业务逻辑,实例化对象News并将查找的内容显示在页面上,如下所示

<body>

NewsDao disNews=new NewsDao();

<%

%>

<h2><%=news.getN_title()%></h2> 作者:<%=news.getN_author()%> 发布日期:<%=news.getN_date()%><br /> <div style="text-align: right"> int n_id Integer.parseInt(request.getParameter("n_id")); News news = new News(); news = disNews.getNewsById(n_id);

<a href="comment/disComment.jsp?n_id=<%=n_id%>">查看评

()</a>

</div><br /> <div class="div1"> <%=news.getN_content()%> </div><br /><br />

</body>

2.3.3 评论新闻内容模块

本模块主要实现对新闻进行评论的功能,此功能是所有用户共有的功能,通过在页面输入评论内容,向数据库comment表中插入数据来实现评论的功能。

主要代码如下:

数据库连接和sql语句的执行封装在javaBean中, 主要实现向数据库中插入从业务逻辑层得到的评论内容并通过执行sql语句将内容插入到数据库中

public boolean addComment(Comment comment) { Connection con = null; PreparedStatement ps = null; try { con = DBget.getConnection();

String sql = "insert into

comment(c_id,c_content,c_date,n_id) values

(null,?,now(),?)";

ps = con.prepareStatement(sql); ps.setString(1, comment.getC_content()); ps.setInt(2, comment.getN_id());

} int num = ps.executeUpdate(); if (num > 0) { } e.printStackTrace(); if (con != null) { } DBget.closePreparedStatement(ps); DBget.closeConnection(con); return true; } catch (Exception e) { } finally { }return false;

如下chkAddComment.jsp页面主要实现将表单中输入的评论的内容通过业务逻辑调用数据连接层中的addComment方法来进行操作。

<% String c_content = request.getParameter("c_content"); int n_id = Comment com = new Comment(); com.setC_content(c_content); com.setN_id(n_id); CommentDao dao=new CommentDao(); if(dao.addComment(com)){ response.sendRedirect("success.jsp"); } else{ out.println("评论添加出现错误,请<a Integer.parseInt(request.getParameter("n_id"));

href=\"news/newsAdd.jsp\">返回</a>");

}

%>

2.3.4 用户注册模块

本模块主要实现用户的登录功能,通过从登录界面输入用户名和密码实现系统的登录,并对登录名称和密码进行验证。

主要代码如下:

以下为注册表单userRegister.jsp主要实现在页面上输入表单中各个项的内容,然后通过传值将表单中的值传给业务逻辑层进行操作。

<h3>

用户注册: </h3>

<form name="form2" method="post" onSubmit="return checkForm()"> 用&nbsp;户&nbsp;名: <input name="u_no" type="text" /> <br /> 密&nbsp;&nbsp;&nbsp;&nbsp;码: <input name="u_pwd" type="password" /> <br /> 确认密码: <input name="u_pwd2" type="password" /> <br /> 电子邮箱: <input name="email" type="text" id="email" <font color="red">*</font> <br /> <span>安全问题:</span> <select name='safequestion' id='safequestion'> <option value='0' selected> 没安全提示问题 </option> <option value='我的大学是哪所?'> 我的大学是哪所? </option> <option value='我是什么专业?'> 我是什么专业? </option> <option value='我的生日是哪天?'> 我的生日是哪天? </option> <option value='我母亲的名字是什么?'> 我母亲的名字是什么? </option> <option value='我父亲的名字是什么?'> 我父亲的名字是什么? </option> action="user/chkRegister.jsp" class="text" /> </select> <font color="red">(重设密码用)</font> <br /> <span>问题答案:</span> <input name="safeanswer" type="text" <span>性&nbsp;&nbsp;&nbsp;&nbsp;别id="safeanswer" class="text" value="" /><br />

&nbsp;&nbsp;</span>

<input type="radio" name="sex" value="男" /> 男 &nbsp; <input type="radio" name="sex" value="女" /> 女 &nbsp; <input name="sex" type="radio" value="" 保密 <br /> <input name="submit" type="submit" value="提交" /> checked="checked" /> <input name="reset" type="reset" value="清空" /> </form>

以下为业务逻辑层chkRegister.jsp主要实现将得到的表单值通过调用数据库连接层的addUser方法来向数据库中插入数据,如果插入成功就输出提示插入成功,如果失败则跳转回注表单界面。

<%

String u_no = request.getParameter("u_no"); String u_pwd = request.getParameter("u_pwd"); User user = new User(); user.setU_no(u_no); user.setU_pwd(u_pwd); UserDao dao = new UserDao(); if (dao.addUser(user) == 1) { out.println("已经注册成功,请%><%

<href=\"user/userLogin.jsp\">登录</a>");

} else {

%><% %> response.setHeader("refresh", } "3;url=userRegister.jsp");

2.3.5 用户登录模块

本模块主要实现用户的注册,通过在页面提交的表单,通过验证之后向数据库插入相关项,实现用户注册的功能。

登录功能流程图如下:

主要代码如下:

以下为数据库连接和sql语句执行部分,主要实现查询数据库中是否存在此用户。 public boolean login(User user) {

Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = DBget.getConnection(); String sql = "select * from user where u_no=? and ps = con.prepareStatement(sql); ps.setString(1, user.getU_no()); ps.setString(2, user.getU_pwd()); rs = ps.executeQuery(); if (rs.next()) { } e.printStackTrace(); DBget.closeResultSet(rs); DBget.closePreparedStatement(ps);

课程考查报告JSP

return true; u_pwd=?"; } catch (Exception e) { } finally {

} } DBget.closeConnection(con); return false;

chkLogin.jsp页面如下,主要实现登录功能的业务逻辑。

<body> <% String name=request.getParameter("u_no"); String password=request.getParameter("u_pwd"); %> <jsp:useBeanid="user"class="com.news.model.User"scope="ses <jsp:setProperty property="*" name="user" /> <%UserDao dao = new UserDao();

session.setAttribute("admin","ok"); sion" /> if(name.equals("admin")&&password.equals("admin")){

response.sendRedirect("/News2/adminindex.jsp");

%>

<% }else{

%> <% } else { out.println("用户名或者密码错误,请<a if (dao.login(user)) { session.setAttribute("login","ok"); response.sendRedirect("/News2/index.jsp");

href=\"user/userLogin.jsp\">重新登录</a>");

}}%>

</body>

2.3.6 用户管理模块

本模块蛀牙实现注册用户对用户信息的修改和管理员用户对用户的删除,通过对页面中的操作对数据库中的值进行操作,最后将结果显示出来。

主要代码乳如下:

用户信息管理分为用户的修改,此功能为注册用户和管理员特有的功能,这里省略用户的删除,下面为用户的修改的业务逻辑部分,页面名称为chkmodiUser.jsp,主要接收修改修改表单页面modiUser.jsp传来值,并调用数据库连接部分的updateUser方法来实现用户的修改。

<%

int u_id1 =

Integer.parseInt(request.getParameter("u_id"));

%> String u_no1 = request.getParameter("u_no"); String u_pwd1 = request.getParameter("u_pwd"); User user1 = new User(); user1.setU_no(u_no1); user1.setU_pwd(u_pwd1); UserDao dao1 = new UserDao(); if (dao1.updateUser(user1)==1) { user1.setU_id(u_id1); <jsp:forward page="userManage.jsp" /> <% %> } else { } response.sendRedirect("/default.jsp");

2.3.7 新闻发布模块

本模块主要实现管理员用户发布新闻的功能,通过表单输入新闻的内容向数据库中插入数据并输出结果。

主要代码如下:

新闻发布类似于用户注册功能,接收表单输入的值并调用数据库连接部分的AddNews方法来将新闻内容插入数据库。以下为新闻发布的业务逻辑部分chkaddNews.jsp功能界面。

NewsDao dao = new NewsDao(); if (dao.addNews(news)) { response.sendRedirect("success.jsp"); out.println("发布新闻出现错误请<a } else { <% String n_title = request.getParameter("n_title"); String n_author = request.getParameter("n_author"); String n_content = request.getParameter("n_content"); String n_ishot = request.getParameter("n_ishot"); String n_key = request.getParameter("n_key"); News news = new News(); news.setN_title(n_title); news.setN_author(n_author); news.setN_content(n_content); news.setN_ishot(n_ishot); news.setN_key(n_key);

href=\"news/newsAdd.jsp\">重新填写</a>");

%> }

3 系统实现

下面将对登录模块进行分析

3.1 接收用户输入的实现

接收用户输入的界面如下:

课程考查报告JSP

表单代码如下:

<form action="user/chklogin.jsp" method="post" name="userLogin"

onSubmit="return checkLogin()"> <h3> 用户登录: </h3> 用户名: <input name="u_no" type="text" /> <br> <p></p> 密&nbsp;&nbsp;码: <input name="u_pwd" type="password" /> <br /> <br /> <input name="login" type="submit" value="登录" /> <a href="user/userRegister.jsp" target="content">注册用户</a>

</form>

通过上述表单输入用户名和密码之后,调用user.js中的checkLogin()方法进行表单验证,验证完成之后才会将值传入功能界面chkLogin.jsp,表单验证代码如下:

function checkLogin() {

if (document.userLogin.u_no.value == "") { } if (document.userLogin.u_pwd.value == "") { alert("密码不能为空!"); alert("用户名不能为空!"); document.form2.u_no.focus(); return false;

document.form2.u_pwd.focus(); return false; }}

3.2 数据库访问的实现

数据库访问功能实现界面为chkLogin.jsp,主要实现接收表单输入的值,再调用数据库连接部分的login(user)方法来实现数据库的访问。

其中连接数据库代码如下:

public class DBget {

public static Connection getConnection(){ Connection con=null; try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:33 }catch(Exception e){ } e.printStackTrace(); 06/testdata","root","123456"); return con;} public static void closeConnection(Connection con){ } public static void } public static void closeResultSet(ResultSet rs){ try{ if(rs!=null){ } rs.close(); try{ } if(ps!=null){ } e.printStackTrace(); ps.close(); if(con!=null){ } try { } con.close(); // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { closePreparedStatement(PreparedStatement ps){ }catch(SQLException e){

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

数据库访问方法login(user)如下:

public boolean login(User user) {

<%

User user=new User();

{

%> <% } else { if (dao.login(user)) { session.setAttribute("login", "ok"); response.sendRedirect("/News2/index.jsp"); session.setAttribute("admin", "ok"); response.sendRedirect("/News2/adminindex.jsp"); UserDao dao = new UserDao(); if (name.equals("admin") && password.equals("admin")) Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { } return false; } con = DBget.getConnection(); String sql = "select * from user where u_no=? and ps = con.prepareStatement(sql); ps.setString(1, user.getU_no()); ps.setString(2, user.getU_pwd()); rs = ps.executeQuery(); if (rs.next()) { } e.printStackTrace(); DBget.closeResultSet(rs); DBget.closePreparedStatement(ps); DBget.closeConnection(con); return true; u_pwd=?"; } catch (Exception e) { } finally { chkLogin.jsp页面内容如下:

%> <% } else {

out.println("用户名或者密码错误,请<a

href=\"user/userLogin.jsp\">重新登录</a>");

}

}%>

3.3 运行结果显示的实现 ? 管理员用户登录成功直至跳转到管理员界面,使用如下代码跳转,将用户标识存入session,以便之后调用。 session.setAttribute("admin", "ok"); response.sendRedirect("/News2/adminindex.jsp");

? 注册用户登录成功直至跳转到管理员界面,使用如下代码跳转,将用户标识存入session,以便之后调用。 session.setAttribute("login", "ok"); response.sendRedirect("/News2/adminindex.jsp"); 登录失败界面如下两种:

图2错误有表单验证实现,

图3错误由如下代码实现

out.println("用户名或者密码错误,请<a href=\"user/

userLogin.jsp\">重新登录</a>");

课程考查报告JSP

图2:无输入错误

课程考查报告JSP

图3:用户名或密码错误

4 系统功能

4.1新闻列表功能

如下,此功能可显示数据库中的所有新闻显示在表格中,并提供查看新闻的超链接,可点击进入查看新闻和查看评论。

课程考查报告JSP

图4:新闻列表

4.2 新闻查看功能

界面如下,本界面主要显示新闻的标题、作者、发表日期、和内容,并提供查看评论的链接。

课程考查报告JSP

图5:新闻内容显示

4.3 评论功能

界面如下,本功能界面主要提供查看评论和发表评论的功能。

课程考查报告JSP

图6:评论界面

4.4 用户注册功能

如下,界面为输入表单,每个输入项都有提示功能,可根据要求注册用户。

课程考查报告JSP

图7:用户注册界面

4.5 用户管理和新闻管理功能

界面如下,主要提供显示所有用户和显示所有新闻的功能,并有修改用户和修改新闻以及删除用户和新闻的链接,可根据用户的ID值删除用户,根据新闻的ID值删除新闻。

课程考查报告JSP

图8:用户管理

课程考查报告JSP

图9:新闻管理

4.6 新闻发布功能:

界面如下,主要提供新闻的输入表单,输入完成之后可提交新闻完成新闻的发布。

课程考查报告JSP

图10:发布新闻

5 课程总结

两个多月的java web课程的学习到此结束,在这个过程中,我学到了很多,尤其是这一次的实验让我对一个完整的动态web网站设计过程有了更深的了解。

首先,对于需求分析,老师已经给了具体的要求,我们要做的就是实现其功能。在老师的指导下,我们开始一个一个模块的开发。在我第一遍做各个模块的时候,对工程的总体把握不好,以至于做出的网站系统看起来非常凌乱,哪里出现错误需要好半天才能找到错误的地方。借鉴第一次的教训,我将各个模块的内容重新整理了一下,使工程看起来错落有致,这样开发的过程就很有层次性,这让我对程序开发时的工程的布局有了注重。另外,从实现用户的注册和登录到用户信息和新闻信息的增删改查,我们的任务不再是单单只制作一个简单的页面,而引入了连接数据库和对数据库的操作。对数据库的操作只要学会对一个实例的增删改查,那么其他的功能都轻而易举的实现。在实现对数据库的操作过程中,我对页面的传值也有了更加深刻的理解,在页面的跳转过程中,值的传递至关重要,如果对访问数据库的机制不清楚,就不好把握。在对数据库实例的了解之后这个功能的实现就变的很简单。最后对页面布局进行整合,至此实现了新闻发布系统的基本功能。

在完成课设的同时,也遇到了很多的困难,如新闻列表的实现中用到列表的知识,但我对列表还不太了解,就花了很长的时间完成新闻列表的功能。再如用户的标识问题,作为匿名用户也可以进入主页的情况,采用了封装session的方法,将用户表示封装在session中,在每个需要用到登录用户的时候验证用户标识。还有就是主页面的查找功能,由于刚开始的数据库设计的不合理,导致主界面的关键字查找出现问题。

在实验的过程中遇到了很多的困难,也让我学到了很多解决问题的办法,课程设计不仅是对一学期学习的总结,也是我们学习网站设计必须经历的过程。“千里之行,始于足下”,只有我们认真对待每一件事,脚踏实地地迈出这一步,才能稳健地为以后的实战浪潮中打下坚实的基础。

更多相关推荐:
外出学习考察报告

外出学习考察报告按照公司杨董事长的指示和要求由我带队外出参观学习内容主要包括现场管理工艺特点质量控制考核分配等我们一行四人滚子分厂厂长吴红军技术组长蒲小英精装分厂技术组长张桂琴考察参观了洛阳宜华滚动体有限公司洛...

考察报告范文

XXXXXXXXX艺术设计学院艺术考察报告专业:艺术设计(产品造型方向)班级:09产品造型2班姓名:XXX学号:20xx10040018指导教师:XXX实习地点:华东地区报告日期:时间:20xx.11.01——…

考察报告格式范文

设计考察写作格式要求一考察报告基本要求1考察结束时学生必须提交考察报告学生应充分运用所学专业基础理论知识结合自己的考察经历和调查资料进行比较深入的分析和总结2考察报告要有独立的见解重点突出条理清晰字数不少于30...

领导干部考察报告

副科级干部考察材料一基本情况张XX男年月生现年岁汉族大专文化年月参加工作年月加入中国共 产 党现任县XX局办公室主任科员张XX同志于年月毕业于XX学校XX专业同年月分配到县XX工作至今其间年月考取省委党校函授学院法...

外出学习考察报告

外出学习考察报告20xx年10月2日17日,在师党校的组织下,我们秋季学习班在党校老师的带领下,赴江苏、浙江等地进行了考察学习。这次江、浙之行,使我开阔了眼界,启发了思路,收益匪浅。通过学习考察,我们近距离、多…

考察报告

考察报告根据大安市公安局政工监察室的要求按照实事求是客观公正的原则长春工业大学对刘超同学的政治思想道德品质能力素质学习和工作表现遵纪守法廉洁自律以及与职位相匹配等情况进行了考察考察情况报告如下一自然情况介绍姓名...

考察报告

酒店考察报告考察时间20xx年5月19日至5月23日考察地点花水湾名人度假酒店青城豪生国际酒店成都城市名人酒店考察人考察目的通过实地考察加深对酒店的了解了解酒店的现状和酒店的宣传推广方式亲自体会酒店环境感受酒店...

综合考查报告

中共委员会关于同志的综合考查报告党委同志于年月日被确定为入党积极分子培养考察时间自年月日至今我支部在听取培养人汇报培养情况后召开党内外群众座谈会听取了群众的意见现将对同志的考察培养和政审情况报告如下一基本情况女...

网络信息实用检索考查报告 - 样本

网络信息实用检索考查报告课题名称1超导体在不同领域的应用研究课题名称2中国古代爱国诗歌欣赏报告完成日期6月10号成绩一课题分析二检索过程明细1检索策略2检索结果列表同一数据库使用多种检索式时记录不同结果可拆分表...

专业考查报告

专业考察实习报告系别艺术系专业艺术设计班级学号姓名指导教师20xx年10月27日实习报告一实习目的通过实习使学生对艺术设计增强感性认识了解艺术设计的一般方法和手法提高审美能力加强艺术修养培养对艺术设计的观察能力...

牛冬冬考查报告

关于对牛冬冬同志的考查报告牛冬冬女30岁汉族大专20xx年9月参加工作同年招聘为协议教师20xx年9月到我校任教担任四年级语文及班主任工作在工作中该同志具有强烈的事业心和高度的工作责任感勤勤恳恳任劳任怨每天早出...

考查报告

综掘机考察报告摘要1摘要正文为使我矿新购综掘机尽快投入生产使用提高掘进工艺及掘进进尺改善我矿工作面接替紧张局面10月10日至10月30日XX煤矿三掘队机电副队长技术员以及维修工赴XX集团XX煤矿及沈阳三一重装公...

考查报告(41篇)