构建web应用系统基于jsp servlet javabean 教学课件 孙华林 第八章 jsp内置对象在新闻发布系统中的运用_第1页
构建web应用系统基于jsp servlet javabean 教学课件 孙华林 第八章 jsp内置对象在新闻发布系统中的运用_第2页
构建web应用系统基于jsp servlet javabean 教学课件 孙华林 第八章 jsp内置对象在新闻发布系统中的运用_第3页
构建web应用系统基于jsp servlet javabean 教学课件 孙华林 第八章 jsp内置对象在新闻发布系统中的运用_第4页
构建web应用系统基于jsp servlet javabean 教学课件 孙华林 第八章 jsp内置对象在新闻发布系统中的运用_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息工程系信息工程系 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 第八章 JSP内置对象在新闻发布系统中的运用 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 回顾 v列举一些page指令的常用属性,并说明它们的作用 v在JSP文件中,有几种输出数值的方法(如:输出10 与30的乘积)?分别怎样表示? 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 预习检查 v使用JSP编程时,如何在服务器端获得用户在文本 框中输入的数值? v什么是JSP内置对象?列举一些常用的JSP内置对 象,并说明它们的作用 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 本章任务 v继续升级新闻发布系统: 任务一:实现用户登陆功能; 任务二:为系统页面增加页面访问控制; 任务三:实现新闻栏目的添加功能; 任务四:实现新闻内容的添加功能; 任务五:完善新闻栏目的查询列表功能-条件检索; 任务六:完善新闻内容的查询列表功能-条件检索; 任务七:为系统增加已访问人数统。 任务二:实现新闻内容的查询列表功能; 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 掌握JSP常用内置对象的用法 out对象、request对象、response对象、session对象、application对象; 掌握Form表单的请求处理方法及编程模式; 掌握使用reuqest对象处理客户端请求的方式; 掌握JSP中文乱码解决办法; 了解exception、page、pageContext、config内置对象的作用和用法; 掌握使用session会话实现JSP页面访问控制; 掌握页面跳转参数处理方式。 本章目标 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 什么是JSP内置对象 v 什么是JSP内置对象?有何作用? JSP 内置对象是 Web 容器创建的一组对象 JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new” 获取实例 JSP 内置对象的名称是 JSP 的保留字 常用内置对象 request response out application session 示例 没有出现new关键 字,但却可以使用 request对象 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 作用域范围 v JSP提供了四种属性作用域范围: page,request,session和application。 在JSP中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性 1)page作用域 在当前页面有效。 2)request作用域 指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,那么该属性就失效了。这 里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他页面或者通过浏览器地址栏浏览其 他页面。如果使用服务器端跳转或request对象的转发方法,则该属性仍然生效。 3)session作用域 指客户浏览器与服务器一次会话范围内,如果服务器断开连接,那么属性就失效了。同理通过 session对象的setAttribute()和getAttribute()。session范围的例外比如重新打开一个浏览器。 4)application作用域 指在整个服务器范围,知道服务器停止以后才会失效。同理通过application对象的setAttribute()和 getAttribute()。application范围就是保存的属性只要服务器不重启,就能在任意页面中获取,就算重新打开 浏览器也是可以获取属性的。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象Out vout对象用于向客户端输出数据 out对象常用方法: print():在页面中打印出字符串信息 现在是 小时 分 秒 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象request vrequest对象主要用于处理客户端请求 该对象封装了由客户端生成的HTTP请求以及用户提交的数据信息 JSP 页面 request 对象 客户端 请求请求信息 request对象常用方法 方法名称说明 String getParameter(String name)根据页面表单组件名称获取页面提交数据 String getParameterValues (String name)获取一个页面表单组件对应多个值时的用户的请求数据 void setCharacterEncoding (String charset) 指定每个请求的编码 。在调用request.getParameter()之前 进行设定,可以解决中文乱码问题 request.getRequestDispatcher(String path) 返回一个javax.servlet.RequestDispatcher对象,该对象的 forward方法用于转发请求 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 超链接访问请求参数处理 在构建Web应用程序的界面时,免不了要通过超链接的形式进行页面之 间的跳转,这时有可能还需要传递参数: Go 可以通过request对象的getParameter()方法来获取传递的参数值,具体做法如下 【知识点拓展练习】: 1)创建一个param.jsp的页面,在这个页面中使用超链接为页面deal.jsp传递三个参数,即sno、name和age ,将自己的学号、姓名和年龄传递过去。 2)创建deal.jsp页面,使用request对象接收三个参数,并在页面中显示出来。 3)请大家思考下,如果在deal.jsp页面中接受参数”name”时不小心将参数名写成了“nam”或“Name”,则运行 时会出现什么情况呢? 4)请大家思考下,如果在param.jsp页面中传递“name”参数时忘记了给参数“name”赋值,则在deal.jsp页面显 示这个参数的时候,又会出现什么情况呢? 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 编程实现如下页面效果: input.jsp output.jsp 1 2 信息工程系信息工程系 使用request对象处理客户端请求 input.jspoutput.jsp 请选择您的性别: 女 男 请选择您喜欢的食物: 薯条 奶酪 String sex = request.getParameter(“sex“); String foods = request.getParameterValues(“foods“); String foodStr=“; if (foods != null) for (int i = 0; i 您的性别是: 您喜欢的食物是: 单选框 复选框 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 表单请求处理 Web开发中表单(Form)元素是处理用户提交信息时使用最频繁的 邮箱系统是如何获取我们在文本框中输入的数据的呢? 下面为大家讲解表单处理编程模式 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 表单处理编程模 首先,用户通过表单控件输入用户相关信息并提交; 其次,JSP页面获取用户提交的表单数据,使用这些数据进行逻辑处理; 最后,JSP页面根据处理结果的不同,转向不同的结果页面。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 表单请求处理应用案例 1)页面“requestTest.jsp”: 用户名: 密 码: 2)页面“middle.jsp” : 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理客户端请求 表单请求处理应用案例 3)页面resultSuccess.jsp: your name is : your password is : 注意红色的 内容 和form 中的对应 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理页面间数据传递 在requestDataTransfer1页面中采用request对象保存的信息 result值为 : 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用request对象处理页面间数据传递 下述错误是什么原因? 乱码 ? JSP页面乱码问题 new String(request.getParameter(“name”).getBytes(“iso-8859-1”),”GBK”); new String(request.getParameter(“name”).getBytes(“iso-8859-1”),”GBK”); new String(request.getParameter(“name”).getBytes(“iso-8859-1”),”GBK”); new String(request.getParameter(“name”) .getBytes(“iso-8859-1”),”GBK”); request.setCharacterEncording(“GBK”); 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象response vrequest对象主要用于处理客户端请求 response对象用于响应客户请求并向客户端输出信息 response 对象常用方法 void sendRedirect (String location):将请求重新定位到一个不同的URL 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象response vrequest对象主要用于处理客户端请求 response对象常用方法及描述 方法返回值类 型方法说明 getCharacterEncoding()String获取响应用的字符编码 类型 setContentType(String type)void设置响应的MIME类型 sendRedirect(java.lang.String location)void重新定向客户端的请求 addCookie(Cookie)void 在客户端添加一个cookie,用来保存客户端的 信息 setHeader(String name,String value)void设置HTTP文件头信息 常可以使用response对象进行如下应用: 1)定时刷新:response.setHeader(“refresh“,“seconds“):几秒刷新一次。 2)定时跳转:response.setHeader(“refresh“,“2;URL=hello.jsp“);2秒后跳转到 hello.jsp。 3)直接跳转:response.sendRedirect(“hello.jsp“); 4)操纵Cookie 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象response vresponse客户端请求动态响应 页面重定向 在响应客户端请求时,有时需要将页面重新定向到另一个页面,可以采用 response对象中的sendRedirect(url)方法来实现,其中URL是目标路径,可以是 相对路径,也可以是其他主机的URL地址. 用户名: 密 码: 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象response vresponse客户端请求动态响应 【知识点拓展练习】 1)请读者自行在“responseSuccess.jsp”页面采用request对象的getParameter() 方法获取“responseTest.jsp”页面中的用户名并将其显示在页面上。你能做到么? 想想结果为什么是“null”呢? 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象response vresponse客户端请求动态响应 页面定时刷新或延时跳转 在Web项目开发中,有时需要对页面的自动刷新,这种功能怎么实现呢? 可以通过response对象设置HTTP的头信息来实现页面的自动刷新效果。 response对象实现页面的自动刷新,只需要在需要自动刷新的JSP页面中加上如下代码: 或 另外,还可以通过设 置HTTP头信息实现页 面的定时跳转功能。 实现页 面自动跳转功能,可以通过response对象的setHeader()方法添加一个标题为 日refresh的标头 ,并制定页面跳转时间 及跳转页 面,从而实现页 面自动跳转。代码如下所示: 上述代码使用setHeader方法添加一个标题为 “refresh“,值为 “10,URL=“的标头 。 另外,还可以通过设 置HTTP头信息实现页 面的定时跳转功能。 实现页 面自动跳转功能,可以通过response对象的setHeader()方法添加一个标题为 日refresh的标头 ,并制定页面跳转时间 及跳转页 面,从而实现页 面自动跳转。代码如下所示: 上述代码使用setHeader方法添加一个标题为 “refresh“,值为 “10,URL=“的标头 。 另外,还可以通过设置HTTP头信息实现页面的定时跳转功能。 实现页面自动跳转功能,可以通过response对象的setHeader()方法添加一个标题为日refresh 的标头,并制定页面跳转时间及跳转页面,从而实现页面自动跳转。代码如下所示 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象session v 就Web开发来说,一个会话session就是用户通过浏览器与服务器之间进行 的一次通话,它包含浏览器与服务器之间的多次请求和响应过程: 关于session的用法将在稍微详细讲解 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象application v application类似于系统的“全局变量”,用于实现用户之间的数 据共享 application对象的常用方法: void setAttribute(String key, Object value):以键/值的方式,将一个对象的值 存放到application中 application.setAttribute(“LOGINED_USER“, new ArrayList(); if (application.getAttribute(“LOGINED_USER“) != null) List loginedUsers = (List) application.getAttribute(“LOGINED_USER“); Object getAttribute(String key):根据键去获取application中存放对象的值 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 JSP内置对象application v Application实现统计在线访问人数 application变量的使用 application变量的使用 当前在线人数是: 人 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用session会话实现JSP页面访问控制 v 下载电子书时,系统会提示用户登录网站 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 点击下载, 系统转入登录页面 每次下载之前,系统如何判断用户是否已经登录? 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用session会话实现JSP页面访问控制 v 访问控制流程 图8-15 访问控制流程(一) 图8-16 访问控制流程(二) 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息? 使用JSP会话跟踪机制,可以维持每个用户的会话信息,为不同的用户保存不同的数据 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用session会话实现JSP页面访问控制 your name is : your password is : 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用session会话实现JSP页面访问控制 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据。 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 系统如何保存不同用户的登录信息呢? JSP专门为软 件开发者提供了一套会话跟踪机制,该机制可以维持每个用户的会话信息,也就是我们8.1.4节为 大家提到的Session内置对象。 使用session会话跟踪,软件开发者可以为不同的用户保存不同的数据 如果系统中多个页面都需要实现页面访问控制,如何避免 冗余代码的出现? 可以将一些共性的内容写入一个单独的文件中,然后通过include指令引 用该文件,从而降低代码的冗余问题,也便于修改共性内容 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用JSP内置对象继续升级新闻发布系统 v开发任务: 继续升级新闻发布系统: 任务一:实现用户登陆功能; 任务二:为系统页面增加页面访问控制; 任务三:实现新闻栏目的添加功能; 任务四:实现新闻内容的添加功能; 任务五:完善新闻栏目的查询列表功能-条件检索; 任务六:完善新闻内容的查询列表功能-条件检索。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 使用JSP内置对象继续升级新闻发布系统 v训练技能点: 会使用Form表单的请求处理; 会使用reuqest对象处理客户端请求; 能解决JSP中文乱码问题; 会使用session会话实现JSP页面访问控制; 能处理页面跳转参数传递问题。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v准备阶段 1)创建“ch08”包,将“ch07”包下的所有内容复制一份到“ch08”下; 2)将复制过来的类中所有引用“ch07”包修改为引用“ch08”包; 3)在“webroot”下创建“ch08”文件夹,将“ch07”文件夹下的所有内容复制一份到“ch08”文件夹下; 4)将“ch08”文件夹下的页面“NewsContentList.jsp”页面打开,将页面中使用“import”导入的包全部改为“ch08”包下的资源引用,代码如下所示: 5)同理,将其它页面中的资源引用也按照上述办法修改。 下面,可以进行新闻发 布系统的升级改造了。 1)创建“ch08”包,将“ch07”包下的所有内容复制一份到“ch08”下; 2)将复制过来的类中所有引用“ch07”包修改为引用“ch08”包; 3)在“webroot”下创建“ch08”文件夹,将“ch07”文件夹下的所有内容复制一份到“ch08”文件夹下; 4)将“ch08”文件夹下的页面“NewsContentList.jsp”页面打开,将页面中使用“import”导入的包全部改为“ch08”包下的资源引用,代码如下所示: 5)同理,将其它页面中的资源引用也按照上述办法修改。 下面,可以进行新闻发 布系统的升级改造了。 1)创建“ch08”包,将“ch07”包下的所有内容复制一份到“ch08”下; 2)将复制过来的类中所有引用“ch07”包修改为引用“ch08”包; 3)在“webroot”下创建“ch08”文件夹,将“ch07”文件夹下的所有内容复制一份到 “ch08”文件夹下; 4)将“ch08”文件夹下的页面“NewsContentList.jsp”页面打开,将页面中使用“import” 导入的包全部改为“ch08”包下的资源引用,代码如下所示: 5)同理,将其它页面中的资源引用也按照上述办法修改。 下面,可以进行新闻发布系统的升级改造了。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务一:实现用户登陆功能 1)在Src下的包“.news.ch08.Entity”下,创建一个实体类 UserInfo.java。 这个实体类专门用来封装用户信息,包括用户ID-userID、用户名-userRealName、性别- sex、出生日期-birth、地址-fimallyAddress、Email、电话-tel、系统登陆帐号- userLoginName、密码-userPassword、注册日期-regDate、是否管理员-flog以及是否审核- confirm1。 2)在“ch08.Dao”包下创建用户数据访问接口UserDao,创建过程可参照第五章中 UserDao接口的创建过程。 在UserDao接口中分别定义用户注册insertNewsUser()、用户删除删除deleteUser()、密 码修改updateUserPassword()、用户信息修改editUserInfo()以及用户登录userLogin()等 五个方法 3)在“ch08.Dao.DaoImpl”下创建类“UserDaoImpl.java”,先实现UserDao接口中的 userLogin()方法功能。 public UserInfo userLogin(UserInfo user) / TODO Auto-generated method stub Connection conn = null; / 数据库连接 PreparedStatement pstmt = null; / 创建PreparedStatement对象 ResultSet rs = null; / 创建结果集对象 String sql = “select confirm1,flog,userid,userrealname,birth,fimallyaddress,email,tel,userloginname, regdate,userpassword, “; sql += “ CASE WHEN sex=1 THEN 男 “ + “ WHEN sex=0 THEN 女 end as sex “; sql += “ from userInfo where userLoginName = “ + user.getUserLoginName() + “; sql = sql + “ and userPassword = “ + user.getUserPassword() + “; UserInfo userLogin = null; try 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务一:实现用户登陆功能 4)在“ch08文件夹”下创建用户登录页面“index.jsp”。并将“ch06”文件夹下 的“bottom.jsp”、“index.jsp”、“left.jsp”以及“top.jsp”页面复制到“ch08”文件夹 中. 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务一:实现用户登陆功能 5)修改ch08文件夹下的“left.jsp” ,当系统登录成功后,界面如下图: 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务一:实现用户登陆功能 6)显示当前登录用户及日期时间。 将“ch08”文件夹下的“bottom.jsp”页面打开,当用户登录成功后,在页面上显示当前登录用户名称、当 前日期、星期及时间,部分修改代码如下: 当前用户: “ size=“8“ readonly=“readonly” style=“background: url(./images/page_bgk.gif); border-style: dotted; border-color: white; color: red“ 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务二:为系统页面增加页面访问控制 1)当在浏览器的地址栏中直接输入如下页面地址: (1)http:/localhost:8080/NewsReleaseSystem/ch08/index.jsp; (2)http:/localhost:8080/NewsReleaseSystem/ch08/NewsContentList.jsp; (3)http:/localhost:8080/NewsReleaseSystem/ch08/NewsTitleBarList.jsp; (4)http:/localhost:8080/NewsReleaseSystem/ch08/left.jsp 请大家注意,会出现什么情况呢? 结果令人吃惊,这些页面本来是由有操作权限的用户进行操作或管理的,但现在可 以在地址栏中输入访问地址而绕过用户登陆界面直接进入目标页面。这就需要为这 些页面增加访问控制。但在实现页面访问控制代码时要注意重用性。 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务二:为系统页面增加页面访问控制 2)首先打开“loginMiddle.jsp”页面,当成功登录时将当前访问用户记录到 session对象中。 代码片断 if(userLogin = null) response.sendRedirect(“login.jsp“); else /在session中存放用户信息 session.setAttribute(“login_user“,userLogin); response.sendRedirect(“index.jsp“); . 3)为了代码的重用,专门创建一个页面“control.jsp”,用来实现页面访问控制代码 。首先从session中取出保存在“login_user”变量中的当前登录用户对象,然后判断用 户是否为空,如果为空,则将当前页面直接跳转到到登录页面“login.jsp”。 代码片断 4)在需要访问控制的页面使用include将“control.jsp”引入: 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务三:实现新闻栏目的添加功能 1) 1)打开“ch08.Dao.DaoImpl”包下的类“NewsTitleBarDaoImpl.java”,实 现NewsTitleBarDao接口中的barAdd()方法功能。 。 代码片断 public int barAdd(NewsTitleBar bar) String sql = “insert into titleBar(titleBarName,createorID,createDate) values(?,?,?)“; String time = new SimpleDateFormat(“yyyy-MM-dd“).format(new Date(); / 取得日期时间 String parm = bar.getTitleBarName(), String.valueOf(bar.getCreateorID(),time ; int rtn = this.executeSQL(sql, parm); / 执行sql,并返回影响行数 if(rtn0) System.out.println(“新闻栏目发布成功。“); else System.out.println(“新闻栏目发布失败。“); return rtn; 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务三:实现新闻栏目的添加功能 2)在“ch08”包下创建一个包“common”,在这个包下创建一个公共类 “Common.java”,首先在里面添加一个获取当前日期的方法getSystemCurrentDate()。 3) NewsTitleBarDaoImpl中的addBar()方法实现新闻栏目发布功能: 代码片断 public String getSystemCurrentDate() SimpleDateFormat formater = new SimpleDateFormat(“yyyy-MM-dd“); String strCurrentDate = formater.format(new Date(); return strCurrentDate; 代码片断 String titleNameBar = request.getParameter(“titlename“); ;UserInfo userinfo = (UserInfo)session.getAttribute(“login_user“); NewsTitleBar newsTitleBar = new NewsTitleBar(); newsTitleBar.setTitleBarName(titleNameBar); NewsTitleBarDao newsTitleBarDao = new NewsTitleBarDaoImpl(); int rtn = newsTitleBarDao.barAdd(newsTitleBar); if(rtn = 1) session.setAttribute(“mesg”,“新闻一级栏目发布成功!”); else session.setAttribute(“mesg”,“新闻一级栏目发布失败!”); response.sendRedirect(“success.jsp“); 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务三:实现新闻栏目的添加功能 乱码如何解决? 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务四:实现新闻内容的添加功能 1)打开“ch08.Dao.DaoImpl”包下的类“NewsContentDaoImpl.java”,实现 NewsContentDao接口中的newsAdd()方法功能。 代码片断 public class NewsContentDaoImpl extends BaseDao implements NewsContentDao public int newsAdd(NewsContent news) String sql = “insert into newsContent(titleName,keyWords,contentAbstract,content,addDate,writerID,titlebarID) values(?,?,?,?,?,?,?)“; String time = new SimpleDateFormat(“yyyy-MM-dd“).format(new Date(); / 取得日期时间 String parm = news.getTitleName(), news.getKeyWords(),news.getContentAbstract(), news.getContent(),time,String.valueOf(news.getWriterID(), String.valueOf(news.getTitlebarID(); int rtn = this.executeSQL(sql, parm); / 执行sql,并返回影响行数 if(rtn0) System.out.println(“新闻内容发布成功。”); Else System.out.println(“新闻内容发布失败。“); return rtn; 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务四:实现新闻内容的添加功能 2)参考上一节创建的页面“NewsTitleBarAdd.jsp”,创建新闻内容添加页面 NewsContentAdd.jsp 。 代码片断 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务四:实现新闻内容的添加功能 3)当点击上述确定按钮时,将页面提交到“NewsContentAddMiddle.jsp”页 面,这个页面专门用来进行逻辑功能的处理:首先获取form中提交的相关信 息,然后从session中取出当前登录用户;然后将它们封装在newsContent 对象中;调用NewsContentDaoImpl中的newsAdd()方法实现新闻栏目发布 功能。 代码片断 信息工程系信息工程系 常州机电职业技术学院常州机电职业技术学院 软件教研室软件教研室 具体实现 v任务五:完善新闻栏目的查询列表功能-条件检索 1)打开“.news.ch08.Dao.DaoImpl”包下面的 “NewsTitleBarDaoImpl.java”类,修改 “barSelectListByTitleName(NewsTitleBar bar)”方法中的SQL语句,执行两 张表“titleBar”、“userInfo”联合查询,联合条件是“titleBar”表中的 “createorID”和“userInfo”表中的“userID”相等,查询使用like语句,以支持模 糊查询 。 代码片断 String sql = “select titleBarID,titleBarName, createorID,createDate, u.userRealName as username, “; sql += “ CASE WHEN yxx=1 THEN 有效 “ + “ WHEN yxx=0 THEN 无效 end as yxx “; sql += “ from titleBar as t,userinfo as u where 1=1 and t.createorID = U.use

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论