1. pm/WebContent/admin/index.jsp
输入用户名和密码,JavaScript代码初步校验(checkName和checkPwd保证其至少三个字符),表单提交action,名字为login.oo,命名空间为/admin。
functionsub() {if(checkName()&&checkPwd()) {return true;
}return false;
}
2./pm/WebContent/WEB-INF/web.xml
在web.xml中定义Filter来拦截用户请求。第一部分为作者自定义拦截器,区别于struts默认的拦截器struts2filter;filter-class指拦截器实现类;filter-mapping指拦截器拦截的URL地址。
authorizefilter
com.bbkmobile.iqoo.common.security.SecurityFilter
authorizefilter
*.jsp
*.oo
struts2filter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2filter
/*
3./pm/src/struts.xml
struts.xml配置了Action和用户请求之间的对应关系。命名空间为/admin ,与之前相符;extends表示继承了default包;action以通配符定义,则表示method名和name相同均为login;该Action的实现类为adminAction;所以,对应去找命名空间为/admin的adminAction类的login方法。
/admin/register.jsp
/admin/login.jsp
/admin/login.jsp
/admin/login.jsp
/admin/test.jsp
4./pm/src/admin/AdminAction.java
public String login() throwsException {try{if(adminService.userExists(user)) {
adminService.richUserVO(user);
putUserIntoSession();
session.put("USER_PRIORITY", user.getPriority());
session.put("USER_ID", user.getUserid());
session.put("USER_INFO", user);
session.put("USER_DEPID", user.getDept_id());
String userName=user.getName();
session.put("USER_NAME", userName);return "login"; //登陆成功
} else{
addActionError("用户名、密码错误!");return "relogin";
}
}catch(Exception e) {
e.printStackTrace();
addActionError("用户名、密码错误!");
addActionMessage("用户名、密码错误!msg");return "relogin"; //登陆失败
}
}
5. /pm/src/admin/service/impl/AdminServiceImpl.java
public boolean userExists(UserInfo user) throwsException {returnadminDAO.exists(user);
}
6. /pm/src/admin/dao/impl/AdminDaoImpl.java
public boolean exists(UserInfo user) throwsException {if (null !=findByNoAndPwd(user)) {return true;
}return false;
}public User findByNoAndPwd(UserInfo user) throwsException {
Session s= null;try{
s=getSession();
Query q=s
.createQuery("from User as po where po.employeeNo=? and po.password=?");
q.setString(0, user.getEmployeeNo());
q.setString(1, user.getPwd());
List> ls =q.list();if (null != ls && ls.size() > 0) {return (User) ls.get(0);
}else{return null;
}
}catch(Exception e) {throwe;
}finally{if (null !=s) {
releaseSession(s);
}
}
}