Spring MVC 实现登录拦截认证
来源:互联网 发布:知已的反义词 编辑:程序博客网 时间:2024/06/08 05:37
1.Controller
@Controller@RequestMappingpublic class LoginController { @RequestMapping(value = "/login",method = RequestMethod.GET) public ModelAndView index(){ return new ModelAndView("login"); } @RequestMapping(value = "/login",method = RequestMethod.POST) public ModelAndView login(HttpSession session,String eMail,String passWord){ ModelAndView mav = new ModelAndView("login"); if(eMail!=null&&passWord!=null&&eMail.equals("123456@qq.com")&&passWord.equals("123456")){ session.setAttribute("eMail",eMail); mav.setViewName("a"); } mav.addObject("sys_time",System.currentTimeMillis()); return mav; }}
2.html
<#import "layout/spring.ftl" as spring/><!doctype html><html lang="en"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Login</title> <link rel="stylesheet" href="<@spring.contextpath/>/css/style.css"></head><body><div class="loginform cf"> <form name="to_login" action="<@spring.contextpath/>/login" method="post" accept-charset="utf-8"> <ul> <li> <label for="usermail">Email</label> <input type="email" name="eMail" placeholder="yourname@email.com" required> </li> <li> <label for="password">Password</label> <input type="password" name="passWord" placeholder="password" required> </li> <li> <input type="submit" value="登录"> </li> </ul> </form></div></body></html>
3.web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!--加载配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value> classpath:spring-*.xml </param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <!-- 防止spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!--配置spring框架的Servlet--><servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:servlet-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <!--拦截请求进行字符编码转换--> <filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 设置session超时时间--> <session-config> <session-timeout>10</session-timeout> </session-config> <welcome-file-list> <welcome-file>views/login.ftl</welcome-file> </welcome-file-list></web-app>
4.springmvc.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 添加注解驱动 --> <context:annotation-config/> <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.biometrics.controller"/> <!-- 对静态资源的访问 --> <mvc:resources mapping="/resources/**" location="/WEB-INF/"/> <mvc:resources location="/static/" mapping="/**"/> <!-- jsp视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:order="2"/> <!-- freeMarker视图解析器 --> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" p:viewClass="org.springframework.web.servlet.view.freemarker.FreeMarkerView" p:contentType="text/html;charset=utf-8" p:requestContextAttribute="request" p:cache="true" p:suffix=".ftl" p:order="1"/> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" p:freemarkerSettings-ref="freemarkerSettings" p:templateLoaderPath="/WEB-INF/views/"/> <util:properties id="freemarkerSettings"> <prop key="default_encoding">UTF-8</prop> <prop key="url_escaping_charset">UTF-8</prop> <prop key="template_update_delay">1</prop> <prop key="tag_syntax">auto_detect</prop> <prop key="whitespace_stripping">true</prop> <prop key="classic_compatible">true</prop> <prop key="number_format">0.##########</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="template_exception_handler">ignore</prop> <prop key="object_wrapper">freemarker.ext.beans.BeansWrapper</prop> </util:properties> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8" p:maxUploadSize="10485760000" p:maxInMemorySize="40960"/> <!-- 会自动注册了validator ConversionService --> <!-- StringHttpMessageConverter编码为UTF-8,防止乱码 --> <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter" p:supportedMediaTypes-ref="supportedMediaTypes"> <constructor-arg value="UTF-8"/> </bean> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter" p:supportedMediaTypes-ref="supportedMediaTypes"/> </mvc:message-converters> </mvc:annotation-driven> <util:list id="supportedMediaTypes"> <ref bean="mediaType1"/> <ref bean="mediaType2"/> </util:list> <!-- 数据交互类型设定 --> <bean id="mediaType1" class="org.springframework.http.MediaType"> <constructor-arg index="0" value="text"/> <constructor-arg index="1" value="plain"/> <constructor-arg index="2" value="UTF-8"/> </bean> <bean id="mediaType2" class="org.springframework.http.MediaType"> <constructor-arg index="0" value="*"/> <constructor-arg index="1" value="*"/> <constructor-arg index="2" value="UTF-8"/> </bean> <!-- 拦截器 --> <mvc:interceptors> <!-- 多个拦截器,顺序执行 --> <mvc:interceptor> <mvc:mapping path="/*"/> <bean class="com.biometrics.common.interceptor.LoginInterceptor"> <property name="adminLoginUrl" value="login"/> <property name="frontLoginUrl" value="login"/> </bean> </mvc:interceptor> </mvc:interceptors></beans>
5.LoginInterceptor
package com.biometrics.common.interceptor;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Created by static on 2017/4/13. * 登录认证拦截器 */public class LoginInterceptor extends HandlerInterceptorAdapter { private String adminLoginUrl; private String frontLoginUrl; /** * Handler执行完成之后调用这个方法 */ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exc) throws Exception { } /** * Handler执行之后,ModelAndView返回之前调用这个方法 */ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } /** * Handler执行之前调用这个方法 */ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //获取请求的URL String url = request.getRequestURI(); //URL:login是公开的;其它的URL都进行拦截控制 if (url.indexOf(adminLoginUrl) >= 0) { return true; } //获取Session HttpSession session = request.getSession(); String username = (String) session.getAttribute("eMail"); if (username != null) { return true; } //不符合条件的,跳转到登录界面 request.getRequestDispatcher(frontLoginUrl).forward(request, response); return false; } public void setAdminLoginUrl(String adminLoginUrl) { this.adminLoginUrl = adminLoginUrl; } public void setFrontLoginUrl(String frontLoginUrl) { this.frontLoginUrl = frontLoginUrl; }}
0 0
- Spring MVC 实现登录拦截认证
- Spring MVC实现的登录拦截器
- Spring mvc拦截器实现登录验证拦截
- spring mvc登录拦截器
- spring mvc登录拦截器
- Spring MVC 用户认证拦截器
- 通过Spring MVC 的自定义拦截器实现灵活的登录拦截
- 通过Spring MVC 的自定义拦截器实现灵活的登录拦截
- SpringMVC拦截器实现登录认证
- SpringMVC拦截器实现登录认证
- SpringMVC拦截器实现登录认证
- SpringMVC拦截器实现登录认证
- SpringMvc使用拦截器实现登录认证
- SpringMVC拦截器实现登录认证
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
- spring MVC 登录拦截案列
- spring实现拦截登录请求
- 一些图像格式转换工具的使用方法(eps2svg with pdf)
- cxf+spring发布webservice和调用(spring+struts2+hibernate)
- 28岁程序员前进思路探究(待续)10月21日更新
- Android 屏幕适配方案-工具创建各屏幕的dimens值
- tomcat结构和原理
- Spring MVC 实现登录拦截认证
- 使用socket读取服务器发送的数据问题
- tomcat 内存配置
- MongoDB----时间查询---时间为String时的统计查询
- Android
- recylerview的简单使用
- d3.js使用svg制作图标
- Android获取手机上安装的APP和正在显示的APP
- 防止调试事件被发往调试器