zoukankan      html  css  js  c++  java
  • 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;
    }

    }
    }

  • 相关阅读:
    C/C++位域(Bitfields)之我见(不错)
    C/C++位域(Bitfields)之我见(不错)
    C语言面试题之一——程序阅读题
    Matlab数据导入导出
    C语言大小端判断程序
    Qt——路径设置问题
    C语言大小端判断程序
    Qt——路径设置问题
    poj3625
    poj3660
  • 原文地址:https://www.cnblogs.com/kangds/p/6495748.html
Copyright © 2011-2022 走看看