目录:
1.需求概述
2.解决方案
2.1 filter过滤器实现登录
过滤
2.2 action拦截器实现登录过滤
2.3 方法拦截器实现登录过滤
1.需求概述
有时候我们在做管理系统的时候,出于安全考虑我们有些页面是不能够直接供用户访问的,这个时候就需要我们添加一些过滤操作,让已经登录的用户可访问,未登录的用户不能访问。
2.解决方案
2.1 filter过滤器实现登录过滤
案例中我们会建立LoginAction.java和TestAction.java两个action,main.jsp和login.jsp两个页面;我们要做到的效果就是当用户不登陆直接访问TestAction和main.jsp让他跳转到登录界面,当登录成功以后我无论是访问main.jsp还是TestAction都可以直接进入main.jsp页面。
(1)login.jsp
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>Insert title here</title>
</head>
<body>
<form action="login.action" method="post">
用户名:<input type="text" id="username" name="username"><br> 密码:<input
type="password" id="password" name="password"><br> <input type="submit"
value="提交">
</form>
</body>
</html>
(2)LoginAction.java
package com.elimy.admin;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.elimy.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user= new User();
/*
* 管理员登录功能
*/
public String login() {
//通过ServletActionContext获取到requst和 response请求对象
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response= ServletActionContext.getResponse();
//获取到浏览器上午cookies
Cookie cookies[] = request.getCookies();
//遍历cookie是否有登录信息
if (cookies!=null){
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
if ("elimy".equals(cookie.getValue())){
System.out.println("你已经登录过了");
//直接返回跳转到管理页面
return SUCCESS;
}
}
}
//判断用户名和密码是否成功,这里就不从数据库获取了
if ("elimy".equals(user.getUsername())&& "8888".equals(user.getPassword())) {
System.out.println("登录成功");
//将登录状态写入session
request.getSession().setAttribute("username", user.getUsername());
//用户名存入cookie
Cookie cookie1 = new Cookie("username", user.getUsername());
//设置Cookie生命周期为一天
cookie1.setMaxAge(60 * 60 * 24 * 1);
//保存cookie
response.addCookie(cookie1);
System.out.println("Session="+request.getAttribute("username"));
return SUCCESS;
}else {
//检测是否内容为空
if (user.getUsername()==null&&user.getPassword()==null) {
System.out.println("输入内容为空,请输入内容先");
}else {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
System.out.println("登录失败");
}
return ERROR ;
}
}
@Override
public User getModel() {
return user;
}
}
(3)mian.jsp
<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>管理页面</title>
</head>
<body background="<%=request.getContextPath()%>/images/back.jpg"
style=" background-repeat:no-repeat;
background-size:100% 100%;
background-attachment: fixed;"
>
welcome to struts2~~main.jsp!
<table>