管理员类:
package com.xeon.mis.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.springframework.stereotype.Component;
/*
* 管理员
* */
@Entity
@Table
public class Manager {
private int id;
private String name;
private String password;
private int type;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "name", length = 16)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column()
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Column(name = "password", length = 32)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
过滤器定义:
package com.xeon.mis.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class UserLoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("----------过滤前-------------");
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
String uri = req.getRequestURI();
// 除了来自登录页面否则进行session验证
if ((!uri.contains("/login.html"))) {
if (session == null) {
resp.sendRedirect(req.getContextPath() + "/login.html");
return;
}
int permission = Integer.parseInt(session
.getAttribute("permission").toString());
if (permission > 0) {
chain.doFilter(request, response);
}
}
chain.doFilter(request, response);
System.out.println("----------过滤后-------------");
}
public void init(FilterConfig config) throws ServletException {
}
}
web.xml配置过滤器:
<filter>
<filter-name>login</filter-name>
<filter-class>com.xeon.mis.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
利用Struts2的action作为控制器:
package com.xeon.mis.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.xeon.mis.dao.ManagerDao;
import com.xeon.mis.model.Manager;
import com.xeon.mis.utils.MD5Utils;
public class AuthAction extends ActionSupport {
@Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = MD5Utils.MD5(request.getParameter("password"));
Manager manager = new ManagerDao().auth(username, password);
if (manager == null) {
return ERROR;
}
HttpSession session = request.getSession();
session.setAttribute("permission", manager.getType());
return SUCCESS;
}
}
struts.xml
<action name="auth" class="com.xeon.mis.action.AuthAction">
<result name="success">/index.html</result>
<result name="error">/error.jsp</result>
</action>
其中我对密码使用MD5加密技术
package com.xeon.mis.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/*
* 返回值为32位的加密数据
*/
public final static String MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] btInput = s.getBytes();
MessageDigest mdInst = MessageDigest.getInstance("MD5");
mdInst.update(btInput);
byte[] md = mdInst.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
System.out.println(MD5("admin"));
}
}