目录结构
说明
使用springmvc拦截器实现登陆验证
1. 把页面放入到web-inf中.
1.1 放入到web-inf中后必须通过控制器转发到页面.
1.2 springmvc拦截器拦截的是控制器,不能拦截jsp
2. 通过拦截器拦截全部控制器,需要在拦截器内部放行login控制器
web.xml
<?xml version="1.0" encoding="UTF-8"?>
< web-app version = " 3.0" 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_3_0.xsd" >
< servlet>
< servlet-name> jqk</ servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet</ servlet-class>
< init-param>
< param-name> contextConfigLocation</ param-name>
< param-value> classpath:springmvc.xml</ param-value>
</ init-param>
< load-on-startup> 1</ load-on-startup>
</ servlet>
< servlet-mapping>
< servlet-name> jqk</ servlet-name>
< url-pattern> /</ url-pattern>
</ servlet-mapping>
< filter>
< filter-name> encoding</ 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> encoding</ filter-name>
< url-pattern> /*</ url-pattern>
</ filter-mapping>
</ web-app>
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: mvc= " http://www.springframework.org/schema/mvc"
xmlns: context= " http://www.springframework.org/schema/context"
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" >
< context: component-scan base-package = " com.bjsxt.controller" > </ context: component-scan>
< mvc: annotation-driven> </ mvc: annotation-driven>
< mvc: resources location = " /js/" mapping = " /js/**" > </ mvc: resources>
< mvc: resources location = " /css/" mapping = " /css/**" > </ mvc: resources>
< mvc: resources location = " /images/" mapping = " /images/**" > </ mvc: resources>
< mvc: resources location = " /files/" mapping = " /files/**" > </ mvc: resources>
< bean id = " viewResolver" class = " org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name = " prefix" value = " /WEB-INF/page/" > </ property>
< property name = " suffix" value = " .jsp" > </ property>
</ bean>
< mvc: interceptors>
< bean class = " com.bjsxt.interceptor.LoginInterceptor" > </ bean>
</ mvc: interceptors>
</ beans>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8" >
< title> Insert title here</ title>
</ head>
< body>
< form action = " login" method = " post" >
用户名:< input type = " text" name = " username" /> < br/>
密码:< input type = " password" name = " password" /> < br/>
< input type = " submit" value = " 登录" />
</ form>
</ body>
</ html>
DemoController.java
package com. bjsxt. controller;
import javax. servlet. http. HttpSession;
import org. springframework. stereotype. Controller;
import org. springframework. web. bind. annotation. PathVariable;
import org. springframework. web. bind. annotation. RequestMapping;
import com. bjsxt. pojo. Users;
@Controller
public class DemoController {
@RequestMapping ( "{page}" )
public String main ( @PathVariable String page) {
System. out. println ( "restful" ) ;
return page;
}
@RequestMapping ( "login" )
public String login ( Users users, HttpSession session) {
if ( users. getUsername ( ) . equals ( "admin" ) && users. getPassword ( ) . equals ( "123" ) ) {
session. setAttribute ( "users" , users) ;
return "main" ;
} else {
return "redirect:/login.jsp" ;
}
}
}
LoginInterceptor.java
package com. bjsxt. interceptor;
import javax. servlet. http. HttpServletRequest;
import javax. servlet. http. HttpServletResponse;
import org. springframework. web. servlet. HandlerInterceptor;
import org. springframework. web. servlet. ModelAndView;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion ( HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle ( HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
@Override
public boolean preHandle ( HttpServletRequest req, HttpServletResponse res, Object arg2) throws Exception {
String uri = req. getRequestURI ( ) ;
if ( uri. equals ( "/springmvc03/login" ) ) {
return true ;
} else {
Object obj = req. getSession ( ) . getAttribute ( "users" ) ;
if ( obj!= null) {
return true ;
}
res. sendRedirect ( "/springmvc03/login.jsp" ) ;
return false ;
}
}
}
Users.java
package com. bjsxt. pojo;
public class Users {
private int id;
private String username;
private String password;
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
public String getUsername ( ) {
return username;
}
public void setUsername ( String username) {
this . username = username;
}
public String getPassword ( ) {
return password;
}
public void setPassword ( String password) {
this . password = password;
}
}