南昌航空大学实验报告二
二0一四 年 五 月 十二 日
课程名称: SSH框架应用开发 实验名称: Struts2拦截器实现权限的验证 班级: 11微软班 姓名: 同组人:
指导教师评定: 签名:
一、 实验目的
了解熟悉Struts2中拦截器框架的使用,利用拦截器进行一些常见动作的拦截处理。
二、 实验要求
利用Struts2拦截器实现一个用户权限判断的过程,将表单中用户输入的信息进行比较。默认admin为管理员用户,当用户登录时根据输入的用户名,利用拦截器的功能,到数据库中进行比较,如果用户名为admin则可以通过,页面显示登录成功;否则,显示没有管理员权限,禁止登录。
给出实验过程中的主要界面截图和核心代码,并描述实现的思路和方法。
三、 实验步骤
1.先创建数据库和表;
2.编写DBConnection.java;
3.编写LoginInterceptor.java,LoginAction.Java; 4.编写Error.jsp,Success.jsp,Login.jsp; 5.配置structs.xml;
四、 参考源代码
LoginInterceptor.java
@SuppressWarnings(\)
public class LoginInterceptor extends AbstractInterceptor{ @Override
public String intercept(ActionInvocation invocation) throws Exception {//登录判断 // TODO Auto-generated method stub //拦截Action处理的拦截方法
// 取得请求相关的ActionContext实例
ActionContext ctx=invocation.getInvocationContext(); Map session=ctx.getSession(); //取出名为user的session属性 String result=null;
String name=(String)session.get(\); if(name!=null && name.equals(\)){ result= invocation.invoke(); } else{
result=Action.ERROR;
}
return result; } }
Error.jsp
您还没有权限登入系统!
Success.jsp
登录成功!
Login.jsp
<% String name=request.getParameter(\);
String password=request.getParameter(\); if(name!=null){
session.setAttribute(\, name);
session.setAttribute(\, password);%>
Structs.xml
LoginAction.Java
public String execute() throws Exception { // TODO Auto-generated method stub
ActionContext cxt = ActionContext.getContext(); Map session=cxt.getSession(); //取出名为user的session属性 String result=null;
String name=(String)session.get(\);
String password=(String)session.get(\); if (name!=null){
con=DBConnection.getConnection(); List
boolean flag=false;
for(;i if(name.equals(userList.get(i).getName())){ if(password.equals(userList.get(i).getPassword())){ flag=true; break; } } } if(!flag){ this.addFieldError(\, \密码错误!\); result= Action.INPUT; } else{ result= Action.SUCCESS; } } return result; } public List String showSQL=\; PreparedStatement pstmt=null; List pstmt=con.prepareStatement(showSQL); ResultSet rs=pstmt.executeQuery(); //执行查询 while(rs.next()){ User user=new User();//实例化对象