springmvc-登陆拦截器

11 篇文章 0 订阅

pom添加依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.liuxi</groupId>
	<artifactId>day70-zuoye</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- 编写代码一定要有一个编写的流程,一步一步来,遇到问题怎么解决,如果不会的多打代码 -->
	<!-- 1、添加项目构建 -->
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<!-- 2、添加相关依赖 -->
	<dependencies>
		<!-- 引入web工程所需的依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.2</version>
			<scope>provided</scope>
		</dependency>
		<!-- 添加JSTL标签库 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>
		<!-- 整合SpringMVC会自动引入其他所需的spring核心依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId><!-- spring-webmvc 整合包 -->
			<version>4.3.7.RELEASE</version>
		</dependency>


	</dependencies>
	<!-- 3、把项目设置为web项目 -->
	<!-- 4、生成web.xml -->
	<!-- 5、配置maven依赖部署到tomcat -->
	<!-- 6、添加web.xml的配置内容 DispatcherServletCharacterEncodingFilter(可有可无) -->
	<!-- 7、spring配置文件、1-扫描包、2-mvc驱动、3、视图解析器、4-时间转换器(可有可无,可是要转换时间类型的就必须有) -->
	<!-- 8、测试是否配置成功,创建controller请求测试是否能够接受请求 -->
	<!-- 9、添加拦截器,并且编写逻辑 -->

	<!-- ctrl + h -->
</project>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>day69-springmvc-loginfilter</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>


	<!--字符集过滤器 -->
	<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>


	<!-- spring核心控制器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等) 如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-serlvet.xml(springmvc-servlet.xml) -->
		<init-param>
			<param-name>contextConfigLocation</param-name> <!-- spring的配置文件 -->
			<param-value>classpath:loginFilter.xml</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- 第一种:*.do/action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析 
			使用此种方式可以实现 RESTful风格的url -->
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

bean xml config:

	<?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"
		xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
			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-4.3.xsd">
	
		<!-- 默认扫描的包路径 -->
		<context:component-scan base-package="com.liuxi" />
		<!-- 添加注解驱动 -->
		<!-- <mvc:annotation-driven /> -->
		<!-- 视图 解释器 -->
		<bean id="viewResolver"
			class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="viewClass">
				<value>org.springframework.web.servlet.view.JstlView</value>
			</property>
			<!--前缀 -->
			<property name="prefix">
				<value>/WEB-INF/</value>
			</property>
			<!--后缀 -->
			<property name="suffix">
				<value>.jsp</value>
			</property>
		</bean>
	
	
	
		<mvc:annotation-driven
			conversion-service="conversionService" />
		<bean id="conversionService"
			class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
			<property name="converters">
				<list>
					<bean class="com.liuxi.convert.StringToDateConverter" />
				</list>
			</property>
		</bean>
	
		<mvc:interceptors>
			<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
			<mvc:interceptor>
				<!--进行拦截:/**表示拦截所有controller -->
				<!-- 进行拦截:/*是会分层级的 -->
				<mvc:mapping path="/**" />
				<!-- 不进行拦截 -->
				<mvc:exclude-mapping path="/toLogin.do" />
				<mvc:exclude-mapping path="/login.do" />
				
				<bean class="com.liuxi.interceptor.FirstInterceptor" />
	
			</mvc:interceptor>
		</mvc:interceptors>
	</beans>

interceptor:

package com.liuxi.interceptor;

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 FirstInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		HttpSession httpSession = request.getSession();

		Object object = httpSession.getAttribute("user_session");
		if (object == null) {
			// 拦截之后,要做的就是跳转到登陆页面
			// 应该使用重定向
			response.sendRedirect(request.getContextPath() + "/toLogin.do");
			return false;
		} else {
			return true;
		}
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub

	}

}

controller:

package com.liuxi.controller;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;

@Component
@RequestMapping("/")
public class IndexController {

	@RequestMapping("/index") // 直接访问项目名就可以请求到index方法。
	private String index() {
		// 跳转到首页
		System.out.println("123");
		return "index";
	}

	@RequestMapping("/toLogin")
	private String toLogin() {
		System.out.println("123");

		return "login";
	}

	@RequestMapping("/login")
	private String login(HttpSession httpSession) {
		httpSession.setAttribute("user_session", "Jason");// 就是模拟登陆而已
		System.out.println(httpSession.getAttribute("user_session"));
		return "index";
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值