精华内容
下载资源
问答
  • SpringMVC静态资源放行

    2019-07-07 09:08:16
    文章目录SpringMVC静态资源放行举例在web.xml中配置servlet到default在springmvc.xml中配置相关非拦截文件夹 SpringMVC静态资源放行 方式一:在web.xml中配置servlet到default 方式二:在springmvc.xml中配置相关非...

    SpringMVC静态资源放行

    方式一:在web.xml中配置servlet到default

    方式二:在springmvc.xml中配置相关非拦截文件夹,如果请求的是这些文件夹的资源,给予放行。

    疑点:没有进行以上配置,为什么可以直接访问jsp文件?

    tomcat的web.xml中进行了相关配置,所有jsp文件都会交个一个默认servlet对象处理。

    <!-- The mapping for the default servlet -->
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!-- The mappings for the JSP servlet -->
        <servlet-mapping>
            <servlet-name>jsp</servlet-name>
            <url-pattern>*.jsp</url-pattern>
            <url-pattern>*.jspx</url-pattern>
        </servlet-mapping>
    
     <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    

    举例

    在web.xml中配置servlet到default

    交个默认servlet处理, 这个default在tomcat的web.xml中有配置(就是上面的servlet)。

     <!-- 配置防止SpringMVC拦截静态资源 -->
      <servlet-mapping>
      	<servlet-name>default</servlet-name>
      	<url-pattern>*.jpg</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      	<servlet-name>default</servlet-name>
      	<url-pattern>*.html</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      	<servlet-name>default</servlet-name>
      	<url-pattern>*.css</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      	<servlet-name>default</servlet-name>
      	<url-pattern>*.js</url-pattern>
      </servlet-mapping>
    

    在springmvc.xml中配置相关非拦截文件夹

    <!--  防止资源文件被spring MVC拦截--> 
    	<mvc:resources mapping="/img/**" location="/img/" cache-period="31556926"/>  
    	<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>  
    	<mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/> 
    

    项目打包 提取码:sy63 环境:eclipse

    展开全文
  • springMVC静态资源放行

    2020-04-10 12:29:34
    springmvc下配置如下 <!--视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置页面的前缀 --> <property name="prefix" ...

    在springmvc下配置如下

    	<!--视图解析器 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<!-- 配置页面的前缀 -->
    		<property name="prefix" value="/WEB-INF/jsp/" />
    		<!-- 配置页面的后缀 -->
    		<property name="suffix" value=".jsp" />
    	</bean>
    	 <!-- SpringMVC处理静态资源配置 -->
           <mvc:resources location="/js/" mapping="/js/**"/>    
           <mvc:resources location="/css/" mapping="/css/**"/>  
    
    展开全文
  • springmvc的配置文件中...了解完springmvc拦截规则之后,本章对将springmvc处理静态请求做一个详细分析 放行方式一:Tomcat中的缺省Servlet放行 查看Tomcat/conf/web.xml,发现其中有配置一个名为default的servlet...

    在springmvc的配置文件中有三种拦截规则,本章不多做介绍

    • /:拦截除了JSP之外的所有请求
    • /*:拦截所有请求
    • *.xxx:拦截*.xxx后缀的请求

    SpringMVC的放行规则为三种:

    项目目录结构:
    在这里插入图片描述

    放行规则一:Tomcat中的缺省Servlet放行

    查看Tomcat/conf/web.xml,发现其中有配置一个名为default的servlet,该servlet是Tomcat服务器提供的一个专门帮我们处理静态资源的servlet
    在这里插入图片描述
    使用缺省servlet放行必须先引入相应依赖:

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-catalina</artifactId>
        <version>8.5.41</version>
    </dependency>
    

    在springmvc的配置文件中添加如下配置:

    <!--配置缺省servlet-->
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
        <!--*.html的请求交给缺省servlet(放行)-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
        <!--*.png的请求交给缺省servlet(放行)-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
        <!--*.js的请求交给缺省servlet(放行)-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置springmvc配置文件的位置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>        
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    缺省servlet放行的原理:如果缺省servlet中已经配置了后缀的这些请求(如hello.html、hello.js)则进入缺省servlet不进入SpringMVCDispatcherServlet,那么就必须保证这些请求不能被SpringMVC拦截到,因此SpringMVC的拦截规则不能为/*

    测试访问:http://localhost:8080/js/jquery-3.3.1.min.js
    在这里插入图片描述

    注意:缺省servlet只能处理静态资源,JSP不属于静态资源,缺省servlet不能放行!
    可以做个小测试:

        ....省略部分缺省servlet配置代码
        <servlet-mapping>
    	    <servlet-name>default</servlet-name>
    	    <!-- 如果是jsp请求交给缺省servlet处理-->
    	    <url-pattern>*.jsp</url-pattern>
    	</servlet-mapping>
    
    	....省略部分DispatcherSerlvet配置代码
    	<servlet-mapping>
    	    <servlet-name>dispatcher</servlet-name>
    	    <!--  保证能拦截到jsp请求-->
    	    <url-pattern>*.from</url-pattern>
    	</servlet-mapping>
    

    会出现如下情况,把JSP页面当做静态资源处理直接把代码放入前端
    在这里插入图片描述

    放行规则二:resource资源放行

    修改web.xml配置:

    ....省略DispacherServlet配置代码
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    在springmvc中配置静态资源放行:

    <!--
        mapping:需要映射的虚拟路径,也就是放行的目录规则
            /js/* : 放行js请求路径下的任意请求,但是更深一级目录不会被放行
            /js/**:放行js请求路径下的任意请求,包括子包孙包
        location: 真实的项目路径      
    -->
    <mvc:resources mapping="/js/**" location="/js/" />
    

    测试放行路径:http://localhost:8080/js/jquery-3.3.1.min.js
    在这里插入图片描述
    测试未放行路径:http://localhost:8080/css/css.css
    在这里插入图片描述
    此种放行原理是:请求必须进入springmvc被拦截到,然后springmvc通过resource放行目录映射规则,发现该请求应该被放行,springmvc手动将此请求放行(当然,如果springmvc没有拦截到也是直接放行,如果使用了filter情况下另外)

    注意:此种放行资源也是针对于静态资源,JSP不属于静态资源!
    可以做个小测试,springmvc拦截JSP并且通过resource放行

    web.xml

    ....省略DispatcherServlet配置代码
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    

    springmvc配置文件

    <mvc:resources mapping="/jsp/**" location="/jsp/" />
    

    浏览器访问:http://localhost:8080/jsp/hello.jsp
    如果是常见的浏览器能解析的格式,直接按照协议返回,如果不是浏览器能直接解析的会返回下载头导致下载该jsp页面

    放行规则三:<mvc:default-servlet-handler />

    修改web.xml

    <!--拦所有请求(包括jsp)-->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    

    修改springmvc配置文件:

    <!--
        default-servlet-name:指定缺省servlet的名字,如果为default可以不写
    -->
    <mvc:default-servlet-handler default-servlet-name="default"/>
    

    此种放行springmvc会在Spring MVC上下文中定义一个DefaultServletHttpRequestHandler,对进入DispacherServlet的请求进行检查,如果发现是静态资源那么将请求交给Tomcat中的缺省servlet进行放行。

    测试访问:http://localhost:8080/js/jquery-3.3.1.min.js
    在这里插入图片描述
    注意:<mvc:default-servlet-handler />放行底层也是基于Tomcat的缺省servlet,因此也不能针对JSP放行,如果访问jsp也是会出现第一种放行测试时的问题,把jsp页面代码直接显示到前端

    测试访问:http://localhost:8080/index.jsp
    在这里插入图片描述

    三种放行总结

    放行规则进入springmvc由谁来放行
    方式1缺省servlet
    方式2springmvc自己放行
    方式3缺省servlet
    展开全文
  • 1.SpringMVC静态资源放行几种方案? 3种 1.在web.xml中,DispathcerServlet采用其他的url-pattern,此时,所有访问handler 的路径都要以 action结尾!! <servlet> <servlet-name>mvc9</servlet-...

    1.SpringMVC静态资源放行几种方案?

    3种

    1.在web.xml中,DispathcerServlet采用其他的url-pattern,此时,所有访问handler
    的路径都要以 action结尾!!
    
    <servlet>
      	<servlet-name>mvc9</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc9</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    
    2.在springMVC中,DispathcerServlet的url-pattern依然采用 "/",但追加配置
    
    <!-- 
      额外的增加一个handler,且其requestMapping:  "/**" 可以匹配所有请求,但是优先级最低
      所以如果其他所有的handler都匹配不上,请求会转向 "/**" ,恰好,这个handler就是处理静态资源的
      处理方式:将请求转会到tomcat中名为default的Servlet
      -->
    <mvc:default-servlet-handler/>
    
    3.在springMVC中,修改访问路径
    - mapping是访问路径,location是静态资源存放的路径
    - 将/html/** 中 /**匹配到的内容,拼接到 /hhh/后
      http://..../html/a.html  访问 /hhh/a.html
    
    <mvc:resources mapping="/html/**" location="/hhh/"/>
    

    2.SpringMVC如何实现转发和重定向

    转发:forward  或者  直接写跳转路径名称
    
    重定向:redirect
    

    3.SpringMVC如何支持json?

    加注解,@ResponseBody 或者 @RestController
    

    4.底层使用jackson方式转json时,如何设置时间格式?如何设置json的key?如何对json的value序列化?

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    
    
    @JsonProperty("new_name")
    
    
    自定义序列化
    @JsonSerialize(using = MySerializer.class) // 使用MySerializer输出某属性
    

    在这里插入图片描述

    展开全文
  • 如果你仔细检查配置文件没有错误的话,可能是你的页面资源导入的路径有问题加上 ${pageContext.request.contextPath } 例: <link rel="stylesheet" type="text/css" href="${pageContext.request.context...
  • 配置静态资源放行方法 方法一 在Spring配置文件中进行单独配置 <!-- 指定静态资源放行 mapping:静态资源的请求路径 location:静态资源在项目中的真实路径 /代表根目录,也就是webapp目录 --> <mvc:...
  • 3.静态资源放行 3.1 静态资源映射 由于我们前端控制配置的是/,是拦截所有静态资源的,我们可通过mvc标签对静态资源放行。具体操作如下 <!--静态资源放行 1.resources mapping="/js/**" 表示访问/js路径或者...
  • springMVC静态资源放行的两种方式

    千次阅读 2018-08-01 10:55:31
    springmvc.xml中放行(常用) 1、配置对全部资源放行 ...-- 对指定目录下的静态资源放行 --&gt; &lt;mvc:resources location="/images/" mapping="/images/**"...
  • SpringMVC 静态资源访问

    千次阅读 2018-10-13 23:07:12
    一、SpringMVC 静态资源访问 1.问题引出 2.问题解决 3. resources属性 4.default-servlet-handler属性 一、SpringMVC 静态资源访问 1.问题引出 在SpringMVC中,配置DispatcherServlet的时候拦截模式为/,这样...
  • springMVC静态资源放行配置

    千次阅读 2017-09-05 19:47:46
    如果在DispatcherServlet中设置url-pattern为 /则必须对静态资源进行访问处理。 spring mvc 的<mvc:resources mapping="" location="">实现对静态资源进行映射访问。 还可以为 <mvc:default-servlet-...
  • SpringMVC静态资源配置

    2021-08-28 15:51:59
    SpringMVC静态资源配置 项目使用了springmvc开发时,需要配置springmvc对静态资源的映射,否则无法请求到项目中的静态资源,配置方式如下 1、在SpringMVC的配置文件中使用mvc:resource标签来设置要放行的静态资源 ...
  • springMVC配置静态资源放行四种方式(前两种堪称经典)以及分析 的作用 的作用 Rest风格
  • Springmvc02-静态资源放行问题 1. web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" ...
  • springmvc.xml(Springmvc的核心配置文件): &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,432
精华内容 1,772
关键字:

springmvc静态资源放行

spring 订阅