springmvc-210804-01---解决在web.xml中url-pattern使用斜杠访问静态资源

springmvc的web.xml配置<url-pattern>的访问路径分析【/】【/*】【/**】【*.do】【空】【/resources/*】的区别 <url-pattern>是<servlet-mapping>的子元素,用来指定servlet的访问路径,即URL。它必须是以“/”开头! 1)可以在<servlet-mapping>中给出多个<url-pattern&gt... 阅读详情

springmvc-210804-01—解决在web.xml中url-pattern使用"/"访问静态资源


我的工程目录


演示

web.xml(在url-pattern使用 / )

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">

  <!-- 配置过滤器,解决post请求中文乱码问题 -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <!-- 设置项目中使用的字符编码 -->
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>

    <!-- 强制请求对象(HttpServletResponse)使用encoding编码的值 -->
    <init-param>
      <param-name>forceResponseEncoding</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- 强制应答对象(HttpServletRequest)使用encoding编码的值 -->
    <init-param>
      <param-name>forceRequestEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc02.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>

  
  <servlet-mapping>
    <!--
        当项目中使用斜杠 “ / ” ,它会替代tomcat中的default。
        导致所有的静态资源都交给DispatcherServlet处理,
        默认情况下,DispatcherServlet没有处理静态资源的能力。所以导致访问静态资源(html,js,图片,css等)都是404。
    -->
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

springmvc.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">

    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.bgy.controller"></context:component-scan>

    <!-- 声明springmvc框架中的视图解析器,帮助开发人员设置视图文件的路径 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/view/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 注册驱动 -->
    <mvc:annotation-driven/>

    <!--
        第一种解决静态资源处理方式:
            需要在springmvc配置文件加入<mvc:default-servlet-handler>
            原理:
                加入这个标签后,框架会创建控制器对象DefaultServletRequestHandler(类似我们自己创建的MyController),
                DefaultServletRequestHandler这个对象再把请求转发给tomcat的default这个servlet

        这种方式的好处就是方便,不过它归根还是依赖于tomcat等服务的default的servlet。有局限性。
    -->
    <mvc:default-servlet-handler/>
</beans>

springmvc02.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">

    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.bgy.controller"></context:component-scan>

    <!-- 声明springmvc框架中的视图解析器,帮助开发人员设置视图文件的路径 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/view/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 注册驱动 -->
    <mvc:annotation-driven/>

    <!--
        第二种解决静态资源处理方式:
           使用<mvc:resources mapping="" location=""/>,框架会创建ResourceHttpRequestHandler处理器对象,
           让这个处理器处理静态资源的访问,不依赖于tomcat,
           mapping:访问静态资源的uri地址,通配符 **,
           location:静态资源在你的项目中目录位置。
    -->
    <!--
        "/images/**"  :
            意思就是http://localhost:8080/springmvc_21080401/images/img01.jpg  中的所有images请求

        location="/images/"   :
            就是:工程下的images文件夹
    -->
    <mvc:resources mapping="/images/**" location="/images/"/>
    <mvc:resources mapping="/js/**" location="/js/"/>
    <mvc:resources mapping="/html/**" location="/html/"/>

    <!-- 如果嫌一个一个弄太麻烦,可以建一个static静态资源文件夹,来存放这些静态资源 -->
    <mvc:resources mapping="/static/**" location="/static/"/>
</beans>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>springmvc</title>
    <script type="text/javascript" src="js/jquery-3.4.1.js"></script>
</head>
<body>
    <form action="doSome.do" method="post">
        <span>测试处理器方法的返回值----返回String----逻辑路径</span>
        <br/>
        <span>姓名:</span><input type="text" name="name"/>
        <br/>
        <span>年龄:</span><input type="text" name="age"/>
        <br/>
        <input type="submit" value="提交"/>
    </form>

    <img src="images/img01.jpg">

    <a href="http://localhost:8080/springmvc_21080401/static/html/test.html">第二种方法</a>
</body>
</html>

MyController.java

package com.bgy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
//@RequestMapping("/test")
public class MyController {
    @RequestMapping(value = "/doSome.do")
    public ModelAndView doSome(String name , Integer age){

        ModelAndView mv = new ModelAndView();
        mv.addObject("u_name",name);
        mv.addObject("u_age",age);
        mv.addObject("","message");

        mv.setViewName("show");

        System.out.println("doReturnStringView---->"+name+" : "+age);

        return mv;
    }
}

show.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>show</title>
</head>
<body>
    <span>message:${message}</span>
    <br/>
    <span>姓名:${u_name}</span>
    <br/>
    <span>年龄:${u_age}</span>
</body>
</html>
RabbitMQ的使用(JAVA) Java快速上手的MQ上线! 阅读详情

相关推荐

【昇腾】用MindIE(服务化方式)拉起glm4-9b-chat模型问题解决

【昇腾】用MindIE拉起glm4-9b-chat模型问题解决: LLMInferEngine failed to init LLMInferModels ERR: Failed to init endpoint! Please check the service log or console output. Killed make sure the folder's owner has execute permission.

u014448841的博客 5116

xml常用符号及其含义

XML符号及其含义包括: <:尖括号,表示XML元素的开始标记。 :尖括号,表示XML元素的结束标记。 /:斜杠,表示XML元素的结束标记。 "":双引号,用于括起XML元素的属性值。 =:等号,用于分隔XML元素的属性名称和属性值。 !--:双减号,表示XML注释的开始标记。 --:单减号,表示XML注释的结束标记。 ...

weixin_42575505的博客 3100

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7138

springmvc restful 支持

1        RESTful支持 1.1    什么是RESTful RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。   RESTful(即Representational StateTransfer的缩写 即表现层的状态转换)其实是一个开发理念,是对http的很好的诠释。 (状态转换最关键)  

哎幽的成长 1777

Spacedesk保姆级教程:用旧平板给Windows电脑当副屏,从安装到避坑一步到位

本文提供Spacedesk保姆级教程,教你如何将旧平板变成Windows电脑的副屏,从软件安装到网络配置、显示优化及声音交互,一步步避开常见陷阱。通过WiFi实现扩展屏功能,支持4K分辨率和60Hz刷新率,让闲置设备焕发新生。

weixin_42524945的博客 1万+

C#上位机国产化适配全方案:兼容统信UOS+鲲鹏/昇腾+国产PLC,可直接交付国企项目

去年下半年,我帮天津滨海新区一家给一汽丰田做配套的汽车零部件国企,完成了3条产线、12套C#上位机的全栈国产化适配。这个项目的背景很典型,也很戳中国企客户的命门:一开始客户找了两家本地的集成商,都没搞定:第一家只会用.NET Framework,根本不知道怎么在统信UOS上跑C#;第二家勉强用.NET Core 3.1跑起来了,但和汇川国产PLC的通信丢包率高达1.2%,产线根本不敢用。我们接手后,用了2个月完成全栈适配:从Windows Server 2019迁移到统信UOS 1070d服务器版,从.NE

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 498

tomcat 配置默认项目

windows server.xml   Host 标签下  加上这一句即可   path里面不能是"/"  在windows下,会使配置无效  linux 好像是需要有斜杠的 具体原因,暂未查明

zx1323的博客 628

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

SpringMVC请求(相对)路径中的斜杠(/)问题

在SpringMVC中,请求路径前(针对于相对路径)是否加上斜杠(/),会引起不同响应,从而对结果的正确性造成影响。这里就记录一下SpringMVC请求路径中的斜杠问题。

qq_29511515的博客 1万+

Power EM与Signal EM解决办法与原理分析

1.面对power EM,首先检查missing via,补全via,还可以加宽,加密局部power mesh,一些power IO出pin有power EM问题,可以叠加多层线和垂直方向补power形成网络降低并联电阻和提供更多电流通路解决,这种方法还可以降低ir drop。3.先进工艺有一个via ladder的方法可以解决power/signal em问题,clock cell出pin绕线或者power rail连接power stripe通过搭梯子的方式连接,原理还是分流。

m0_61544122的博客 4746

河洛理数【陈抟】每月月卦推演每日运卦

Step2:每卦中的日爻遇到二十四节气中的当日为节(月初)或气(月中)的时候,所代表的日期需要变更。正常来说,屯卦分别代表初一到初六,但是由于当月初二时立秋节,所以初爻就不能作为初一、而是要作为立秋节开始时(文中还精算到了立秋是从初二的午时开始),如下。说的代表月运的基础卦上进行当月日卦的推演方式。老样子,我们还是按照书中举得例子卦在这边进行一步步的推演,最后做总结。Step1:从月卦爻下一爻开始,自下而上,进行五个爻的爻变,新推演的每个卦代表六天,如下。假设当月月卦是即济卦,月爻在二爻,如图所示(

Daniel专栏 764

Tomcat虚拟目录配置

问题描述: 首先部署的项目和图片都在同一台服务器上面。 上传图片一般都是上传到Tomcat的项目某个文件夹下面,但是如果项目需要重新部署,上传的图片又没有备份,被误操作删除了,那就不好了。 解决方法: 配置tomcat虚拟目录,配置文件upload.xml。 在Tomcat的 Tomcat\conf\Catalina\localhost目录下新建配置文件 upload.xml,内容如下:...

u014539558的专栏 264

推荐系统(十六):基于ESMM的商品召回/推荐系统

ESMM(Entire Space Multi-Task Model)是阿里巴巴提出的多任务学习框架,通过联合建模点击率(CTR)和点击转化率(CVR)解决传统CVR模型样本稀疏问题。其核心思想是将 CVR 定义为 CTR 与 CTCVR 的条件概率,模型包含两个子任务。

Jin_Kwok的博客 1265

localhost uri自动添加index.php,关于tomcat会在url末尾自动追加斜杠(/)

今天,突然发现一个问题, 比如我的请求路径为 http://ip:port/my_project/myapp, 在浏览器中敲入这个地址,然后会显示http://ip:port/my_project/myapp/,即末尾自动追加了/ ... 原因:应用根目录下有myapp这个目录,tomcat就会在访问/myapp时自动转到/myapp/ 解决办法1:把myapp这个目录删掉就不会自动跳转了. ...

weixin_42160252的博客 1537

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

取得tomcat服务器路径之斜杠问题

在输入路径的时候,复制的原路径是单斜杠,会报错,而且即使存在数据库,从数据库中取得的时候,也会识别不了而报错

落霞朝阳七千里,夏雨冬雪九万顷 3002

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Tomcat部署Web应用方法总结

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。 在下文中$CATALINA_HOME指的是Tomcat根目录。 一、静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。 以下3种方式都可以部署:(以PetWeb项目为例说明,PetWeb目录假设是F:/PetWeb) 1.利用Tomcat自动部...

weixin_30951231的博客 120

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

web.xml中的url-pattern 写法小结(附源码分析)

前言Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单.但url-pattern可能有点迷糊.这里总结其中url-pattern中的映射规则.

awaken233的博客 7496

Tomcat Server.xml引环境变量、指定webapps下的项目启动、访问加前缀

Tomcat Server.xml引环境变量 通过catalina.bat 或catalina.sh文件引用环境变量,将环境变量设置为系统变量,再在server.xml引用系统变量。 环境变量: catalina.bat设置 JAVA_OPTS,注意bat文件用%%,sh文件用${}引用 Server.xml引用 指定webapps下的项目启动 webapps下文件夹很多,只想启动目标文件夹 Host标签中的appBase本来是webapps,就会将webapps下的应用都启动

u014203449的博客 2024

JavaWeb

JavaWb XML   XML(Extensible Markup Language)它是一种类似于 HTML 的标记语言,称为可扩展(可以按照 XML 规则自定义标记)语言。   XMl 被设计出来是为了传输和存储数据的,严格区分大小写,有且只能有一个根元素,当中的空格不会自动删除,用户也可以根据自己需求自定义。 XML 语法 文档声明 一个完整的 XML 文档必须包含一个 XML 文档声明,并且位于第一行。 <?xml version="1.0" encoding="UTF-8" stan

粉红色的Pig 730

web.xml相关配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34124939的博客 167

#SpringMVC--理解web.xml中的 url-pattern标签及其使用范围

在web.xml中,我们通过下面的标签来匹配客户端发出的请求: &amp;amp;lt;servlet-mapping&amp;amp;gt; &amp;amp;lt;servlet-name&amp;amp;gt;yzh_ssh&amp;amp;lt;/servlet-name&amp;amp;gt; &amp;amp;lt;url-pattern&amp;amp;gt;/*&amp;amp;lt;/url-patt

流年梦里风起舞 2万+

web中配置静态文件不拦截的方法

1. 启动tomcat中默认的tomcat xml文件中配置  &lt;mvc:default-servlet-handler /&gt; web.xml中配置,此配置要放在DispatcherServlet之前 &lt;servlet-mapping&gt;         &lt;servlet-name&gt;default&lt;/servlet-name&gt;         &...

衍夏成歌的博客 5797

Spring MVC DispatcherServlet url-pattern配置拦截静态资源

web.xml中配置 <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLoca

小城我家 764

spring web.xml中 过滤器(Filter)的工作原理和代码

spring web.xml中 过滤器(Filter)的工作原理和代码

ttxs_10的博客 2643

XML文件中的转义符号

在XMl文件中,一些符号比较特殊,需要转义,1  xml文档中定义了一些实体,已&amp;开始,以;结束只有"&lt;" 字符和"&amp;"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。 2 使用CDATA部件&lt;![CDATA[内部的所有内容都会被解析器忽略]]&gt;注意:CDATA 不能嵌套使用...

Hero_孙的博客 1万+

xml表示目录的字符串中'/'(斜杠)与'\'(反斜杠)的区别

反斜杠'\'表示真实目录     斜杠'/'表示外界通过浏览器访问的目录

u014771464的博客 7987
上一篇: springmvc-210803-04---处理器方法的返回值的实现
下一篇: springmvc-210805-01---使用斜杠时路径问题
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值