Java Web程序设计基础教程(李绪成) 第13章

上传人:E**** 文档编号:89346174 上传时间:2019-05-23 格式:PPT 页数:59 大小:544KB
返回 下载 相关 举报
Java Web程序设计基础教程(李绪成) 第13章_第1页
第1页 / 共59页
Java Web程序设计基础教程(李绪成) 第13章_第2页
第2页 / 共59页
Java Web程序设计基础教程(李绪成) 第13章_第3页
第3页 / 共59页
Java Web程序设计基础教程(李绪成) 第13章_第4页
第4页 / 共59页
Java Web程序设计基础教程(李绪成) 第13章_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《Java Web程序设计基础教程(李绪成) 第13章》由会员分享,可在线阅读,更多相关《Java Web程序设计基础教程(李绪成) 第13章(59页珍藏版)》请在金锄头文库上搜索。

1、第13章 系统安全控制,13.1 完善登录功能 13.2 用户管理的安全控制 13.3 使用过滤器进行安全控制 13.4 采用专门的安全控制页面 13.5 集中的安全控制 13.6 页面的局部安全要求 13.7 增加图形验证码 小结 习题13 实训13:解决网站的安全问题,13.1 完善登录功能 13.1.1 功能描述 用户在登录界面输入用户ID和口令,系统根据用户输入的用户ID和口令进行处理。若用户ID和口令都正确,并且当前用户是管理员,则跳转到管理员的默认界面。如果用户ID和口令正确,并且是普通用户,则跳转到普通用户的默认界面。如果用户ID和口令不正确,则重新转向登录界面。,不管对管理员还

2、是对普通用户来说,登录之后的默认界面应该是使用频率最高的界面。如果网站比较智能,则可以对用户的访问进行统计,为用户显示经常使用的界面或者上次访问的界面。对于管理员来说,使用频率最高的功能应该是订单管理,所以应该把订单管理作为管理员的默认界面。对于普通用户来说,使用频率最高的功能应该是图书查看,所以应该把图书查看界面作为普通用户的默认界面。,13.1.2 思路分析 下面仍然采用MVC模式来设计该功能。 首先是M部分:可以使用UesrBean中原有的方法findUserById。 其次是V部分:登录界面在前面已经完成,图书查看功能是读者在前面实训中完成的,假设为findBooks,订单管理是下一章

3、将要完成的实训内容,假设为findOrders。,最后是C部分:获取用户输入的用户ID和口令,根据ID调用模型的findUserById方法,根据返回值进行处理: 如果返回值为null,则说明用户不存在;否则,判断口令是否匹配: 如果不匹配,说明口令不正确。 如果匹配,判断用户的类型:如果用户类型为1,说明该用户为管理员;否则为普通用户。,13.1.3 修改登录控制器Servlet 根据上面的分析,修改后的控制器的代码如下: package bookstore.servlet; import javax.servlet.*; import javax.servlet.http.*; impor

4、t java.io.*; import bookstore.bean.*; public class LoginServlet extends HttpServlet ,public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException / 获取用户提交的信息 String userid = request.getParameter(“userid”); String userpass = request.getParameter(“user

5、pass”); / 创建JavaBean对象 UserBean ub = new UserBean(); / 转向的文件 String forward=null;,/ 提示信息 String info=null; UserBean user=ub.findUserById(userid); / 用户不存在 if(user = null) forward=“login.jsp“; / 口令不正确 else if(!user.getUserpass().equals(userpass) forward=“login.jsp“; / 管理员,else if(user.getType().equals

6、(“1“) forward=“findOrders“; / 普通用户 else forward=“findBooks“; / 定义跳转文件 RequestDispatcher rd=request.getRequestDispatcher(forward); / 完成重定向 rd.forward(request,response); ,public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException doGet(request,respo

7、nse); ,13.2 用户管理的安全控制 13.2.1 功能描述 只有管理员可以使用图书添加功能。如果用户没有登录,则提示用户“您还没有登录,请先登录!”;如果当前用户是普通用户,则提示用户“您没有管理员权限,请先登录”;如果当前用户是管理员,则显示添加界面。,13.2.2 运行效果 首先,直接访问图书添加的页面,得到如图13.1所示界面。 然后,点击“登录”超链接跳转到登录界面,输入普通用户的ID和口令,再访问图书添加界面,得到如图13.2所示界面。,图13.1 没有登录的提示界面,图13.2 没有权限的提示界面,13.2.3 思路分析 要防止这个文件被没有权限的人访问,必须对每个访问这个

8、文件的人的身份进行验证。要想知道当前用户的权限,在登录的时候必须记录当前用户的权限。 在访问这个文件的时候,首先应该从session中获取用户信息。如果用户不存在,则跳转到“没有登录”的提示界面;如果用户是普通用户,则跳转到“没有权限”的提示界面,不让用户访问当前页面,这样就保证了当前页面的安全。 为了方便用户的操作,需要在信息提示页面增加到登录页面的超链接。,13.2.4 操作session 1. 获取session对象 session对象存储在request对象中,request对象也就是服务类方法的第一个参数。可以使用HttpServletRequest中的方法来获取session对象:

9、 HttpSession getSession(boolean); 在doGet方法或者doPost方法中,通常可通过第一个参数request来获取session对象。代码如下: HttpSession session; session =request.getSession(true);,2. 在session中存储信息 获取session对象之后,如果希望在session中存储信息,可以使用下面的方法: session.setAttribute(“name“,value); 该方法有两个参数,第一个参数是字符串,是要存储信息的名字,第二个参数是保存的值本身,可以是各种类型的对象。如果第一个

10、参数所指定的名字存在,就替换该名字原来对应的值;如果第一个参数所指定的名字不存在,就把第二个参数指定的值存储到session中。,3. 从session中获取信息 如果要从session中获取已经保存的信息,可以使用下面的方法: session.getAttribute(“name“); 该方法的参数就是要获取信息的名字。在使用的时候对得到的信息必须进行强制类型转换,因为方法的返回值类型是Object。例如在session中存储的是String对象,要得到这个对象,可以使用下面的代码: String str = (String)session.getAttribute(“name“);,4.

11、删除session中存储的信息 如果要删除session中的某个信息,可以使用下面的方法: session.remove(“name”); 该方法的参数就是要删除的session中对象的名字。 5. 使session失效 如果不想使用session了,可以使用下面的方法: session.invalidate() 使用该方法之后,就不能继续使用session以及session中的所有信息了。,13.2.5 修改登录处理的代码 在登录成功之后,可把用户信息保存到session中。因为这个信息是与特定用户相关的,所以在用户的整个访问过程中都有效。 在Servlet中首先要获取session对象,在

12、用户登录成功之后,把用户对象保存到session中。修改后的Servlet代码如下: package bookstore.servlet; import javax.servlet.*;,import javax.servlet.http.*; import java.io.*; import bookstore.bean.*; public class LoginServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOExce

13、ption,ServletException / 获取用户提交的信息,String userid = request.getParameter(“userid“); String userpass = request.getParameter(“userpass“); / 创建JavaBean对象 UserBean ub = new UserBean(); / 转向的文件 String forward=null; / 提示信息 String info=null; / 得到session对象 HttpSession session; session =request.getSession(tru

14、e);,UserBean user=ub.findUserById(userid); / 用户不存在 if(user = null) forward=“login.jsp“; / 口令不正确 else if(!user.getUserpass().equals(userpass) forward=“login.jsp“; / 管理员 else if(user.getType().equals(“1“) session.setAttribute(“login“,user);,forward=“findOrders“; / 普通用户 else session.setAttribute(“login

15、“,user); forward=“findBooks“; / 定义跳转文件 RequestDispatcher rd=request.getRequestDispatcher(forward); / 完成重定向 rd.forward(request,response); ,public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException doGet(request,response); ,13.2.6 在用户添加界面增加控制 在原来的添加界面的代码中,增加对用户是否登录以及是否

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号