• Spring MVC 拦截器配置 -- 利用session


    spring-servlet.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"
    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"
    default-autowire="byName" default-lazy-init="false">

    <!-- 配置自定扫描的包 --><!-- 就是自己工程里自己建的需要扫描的包 -->

    <context:component-scan base-package="com.**.**.**"></context:component-scan>

    <!-- 在实际开发中通常都需配置 mvc:annotation-driven 标签 -->
    <mvc:annotation-driven>
    <mvc:message-converters>
    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
    <list>
    <value>text/plain;charset=UTF-8</value>
    <value>text/html;charset=UTF-8</value>
    </list>
    </property>
    </bean>
    </mvc:message-converters>
    </mvc:annotation-driven>

    <!-- default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,
    它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求,
    就将该请求交由 WEB 应用服务器默认的 Servlet 处理. 如果不是静态资源的请求,
    才由 DispatcherServlet 继续处理 一般 WEB 应用服务器默认的 Servlet 的名称都是 default.
    若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定 -->
    <mvc:default-servlet-handler/>


    <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    </bean>

    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="supportedMediaTypes">
    <list>
    <value>text/html;charset=UTF-8</value>
    <value>application/json;charset=UTF-8</value>
    </list>
    </property>
    </bean>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
    <list >
    <ref bean="mappingJacksonHttpMessageConverter" />
    </list>
    </property>
    </bean>


    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <property name="maxUploadSize" value="10000000"/>

    </bean>

    <!-- 拦截器 -->

    <!-- 可以同时使用多个拦截器,在这里引入拦截器 JAVA文件 -->
    <mvc:interceptors>
    <bean class="com.**.**.web.interceptor.sessionInterceptor"/>
    <bean class="com.**.**"/>
    </mvc:interceptors>

    </beans>

    JAVA文件

    package com.genlot.ushop.web.portal.interceptor;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

    public class sessionInterceptor extends HandlerInterceptorAdapter {

    public boolean preHandle(HttpServletRequest request,
    HttpServletResponse response, Object handler) throws Exception {
    String url = request.getRequestURI();

    //登陆的时候,会把用户信息存在session中,直接获取,

    UserInfo userInfo  = (UserInfo ) request.getSession().getAttribute( "userInfo ");

    //要是获得用户信息为空,就进入拦截器重定向的位置

    //添加一些不进入拦截器的例外(登陆,注册,以及注册页面需要的一些数据请求等)
    if (null == userInfo  && url.indexOf("login") == -1
    &&url.indexOf("register") == -1
    &&url.indexOf("userInfo  ") == -1
    ){
    //response.sendRedirect(request.getContextPath()+"/user/login.jsp");
    //request.getRequestDispatcher("/WEB-INF/views/user/login.jsp").forward(request, response);

    /*java.io.PrintWriter out = response.getWriter();
    String CONTENT_TYPE = "text/html; charset=GBK";
    response.setContentType(CONTENT_TYPE);
    String a = request.getContextPath()+"/user/login";
    out.println("<html>");
    out.println("<script>");
    out.println("window.open ('"
    + a
    + "','_top')");
    out.println("</script>");
    out.println("</html>"); */

    response.sendRedirect(request.getContextPath() + "/html/loginRegister.html");
    return false;
    } else {
    return true;
    }

    }
    }

  • 相关阅读:
    【转】java内存溢出的场景及解决办法
    系统架构
    【转】Linux tar命令详解
    【转】Java 开发必会的 Linux 命令
    【转】ps命令详解与使用
    【转】Linux命令:ps -ef |grep java
    linux grep命令详解
    【springcloud】Zuul 超时、重试、并发参数设置
    【springcloud】常见面试题总结
    php的函数应用
  • 原文地址:https://www.cnblogs.com/kangds/p/6495748.html
Copyright © 2020-2023  润新知