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

    }
    }

  • 相关阅读:
    [原创]java WEB学习笔记06:ServletContext接口
    [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
    [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)
    [原创]java WEB学习笔记03:使用eclipes开发javaWEB项目
    [原创]关于tomcat启动时时候端口被占用,8080,8005,8009
    Maven 设置本地仓库的地址
    JavaScript 传递参数为数字类型的字符串
    JQuery Radio
    MySQL lpad cast ifnull regexp
    MYSQL变量
  • 原文地址:https://www.cnblogs.com/kangds/p/6495748.html
Copyright © 2011-2022 走看看