SpringMVC用户登录和拦截器简单应用增删改查
2017-11-18 14:28
489 查看
在学习SpringMVC和Spring整合的时候做了一个小练习,对员工进行报道(增)、修改、升迁、离职等操作,操作的时候用户必须实在登录状态下才能进行,这时候就用到了拦截器。
通过查阅资料,整理了一下,并简单进行了一下测试,当用户没有登录进行操作时,会自动跳转到login.jsp,也就是登录页面,部分程序如下:
自定义拦截器Login实现HandlerInterceptor接口,重写HandlerInterceptor接口的方法
package com.hygj.interceptor;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class Login implements HandlerInterceptor {
private List<String> excludedUrls;
public List<String> getExcludedUrls() {
return excludedUrls;
}
public void setExcludedUrls(List<String> excludedUrls) {
this.excludedUrls = excludedUrls;
}
public void afterCompletion(HttpServletRequest httpRequest,
HttpServletResponse httpResponse, Object obj, Exception exc)
throws Exception {
// TODO Auto-generated method stub
}
public void postHandle(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
Object obj, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
//demo_13/emp/XXX 获取控制层方法
String requestUri = request.getRequestURI();
//遍历获取不做拦截的路径
for (String url : excludedUrls) {
//如果是以/checkLogin结尾的请求不做拦截处理
if (requestUri.endsWith(url)) {
return true;
}
}
HttpSession session = request.getSession();
//判断用户是否登录
if (session.getAttribute("userUid") == null) {
//如果没有登录,则跳转到login.jsp
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
return true;
}
}
SpringMVC容器配置
测试用户名为:admin,密码为1
login.jsp
控制层
checkLogin()判断用户名和密码,登录成功则跳转到showEmp.jsp
showEmp.jsp,因为省略了数据库操作,showEmp.jsp只显示succ表示登录成功
全部源码下载:http://download.csdn.net/download/users0001/10123920
通过查阅资料,整理了一下,并简单进行了一下测试,当用户没有登录进行操作时,会自动跳转到login.jsp,也就是登录页面,部分程序如下:
自定义拦截器Login实现HandlerInterceptor接口,重写HandlerInterceptor接口的方法
package com.hygj.interceptor;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class Login implements HandlerInterceptor {
private List<String> excludedUrls;
public List<String> getExcludedUrls() {
return excludedUrls;
}
public void setExcludedUrls(List<String> excludedUrls) {
this.excludedUrls = excludedUrls;
}
public void afterCompletion(HttpServletRequest httpRequest,
HttpServletResponse httpResponse, Object obj, Exception exc)
throws Exception {
// TODO Auto-generated method stub
}
public void postHandle(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
Object obj, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
//demo_13/emp/XXX 获取控制层方法
String requestUri = request.getRequestURI();
//遍历获取不做拦截的路径
for (String url : excludedUrls) {
//如果是以/checkLogin结尾的请求不做拦截处理
if (requestUri.endsWith(url)) {
return true;
}
}
HttpSession session = request.getSession();
//判断用户是否登录
if (session.getAttribute("userUid") == null) {
//如果没有登录,则跳转到login.jsp
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
return true;
}
}
SpringMVC容器配置
<!--配置拦截器, 如果多个拦截器,则顺序执行 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截器拦截的URL格式 ,如果不配置或/**,将拦截所有的Controller--> <mvc:mapping path="/**" /> <!-- 处理拦截的具体实现类 --> <bean class="com.hygj.interceptor.Login"> <!-- excludedUrls是要放行的url集合 --> <property name="excludedUrls"> <list> <value>/checkLogin</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>
测试用户名为:admin,密码为1
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>login</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <c:if test="${err == '1'}"> <script type="text/javascript"> alert("uid或pwd错误"); </script> </c:if> </head> <body> <form method="post" action="${pageContext.request.contextPath}/emp/checkLogin"> uid:<input type="text" id="userUid" name="userUid" value="${userUid}"><br><br> pwd:<input type="text" id="userPwd" name="userPwd"><br><br> <input type="submit" value="Login"> </form> </body> </html>
控制层
checkLogin()判断用户名和密码,登录成功则跳转到showEmp.jsp
package com.hygj.controller; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.HttpRequestHandler; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import com.hygj.pojo.Employee; import com.hygj.pojo.EmployeeHistroy; import com.hygj.pojo.Pager; import com.hygj.service.iface.IEmpService; @Controller @RequestMapping("/emp") public class EmpController { @Resource(name="empService") private IEmpService empService; public void setEmpService(IEmpService empService) { this.empService = empService; } @RequestMapping("/checkLogin") public String checkLogin(HttpServletRequest request){ String userUid = request.getParameter("userUid"); String userPwd = request.getParameter("userPwd"); if("admin".equals(userUid) && "1".equals(userPwd)){ HttpSession session = request.getSession(); session.setAttribute("userUid", userUid); return "redirect:showEmp"; }else{ request.setAttribute("err", 1); return "login"; } } @RequestMapping("/show") public String showEmp(HttpServletRequest request){ //省略 return "showEmp"; } }
showEmp.jsp,因为省略了数据库操作,showEmp.jsp只显示succ表示登录成功
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>showEmp</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> succ </body> </html>
全部源码下载:http://download.csdn.net/download/users0001/10123920
相关文章推荐
- Python菜鸟成长记——简单实现用户登录和增删改查以及文件上传和下载
- Struts框架的简单应用到用户登录
- springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置
- SpringMVC拦截器实现用户登录拦截
- SSH—Struts2拦截器的应用(防止未登录用户进行操作)
- Web应用中防止用户重复登录的简单实现方法
- springmvc 自定义拦截器实现未登录用户的拦截
- SpringMvc拦截器的应用(防止未登录访问)
- 防止未登录用户操作—struts2拦截器简单实现
- Perl CGI 一个简单的用户登录验证应用
- 防止未登录用户操作—struts2拦截器简单实现
- Web应用中防止用户重复登录的简单实现方法
- 用户登录中Cookie的简单应用
- Struts2拦截器,简单的用户登录拦截及静态缓存的使用
- 防止未登录用户操作—struts2拦截器简单实现
- SSH—Struts2拦截器的应用(防止未登录用户进行操作)
- Springmvc实现用户登录拦截器
- SpringMVC学习(二)--实现简单用户登录
- 在springmvc配置拦截器拦截未登录用户操作
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用