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

    }
    }

  • 相关阅读:
    笔记:Oracle查询重复数据并删除,只保留一条记录
    64位系统安装ODBC驱动的方法
    批量Excel数据导入Oracle数据库
    Oracle自我补充之Decode()函数使用介绍
    解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
    Linux命令区
    Linux下安装PHP+Nginx+Msql
    Thinkphp时间转换与统计的问题
    phpStydy配置memcache扩展
    Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决
  • 原文地址:https://www.cnblogs.com/kangds/p/6495748.html
Copyright © 2011-2022 走看看