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;
    }

    }
    }

  • 相关阅读:
    数据库的架构和优化
    描述一个高性能高可靠的网站架构——如何设计一个秒杀系统
    PHP手册-函数参考-加密扩展
    系统性能指标总结
    PHP实现负载均衡的加权轮询
    PHP生成二维码
    高性能网站架构
    PHP实现Redis的数据结构和LFU/LRU
    缓存的设计及PHP实现LFU
    网络开发库从libuv说到epoll
  • 原文地址:https://www.cnblogs.com/kangds/p/6495748.html
Copyright © 2011-2022 走看看