wordpress添加分类,苏州搜狗关键词优化,wordpress 顶部工具,水果商城网站制作多少钱目录 1. 回顾SpringMVC请求转发和重定向
2. WEB-INF资源目录
3. 视图解析器
4. 静态资源放行 1. 回顾SpringMVC请求转发和重定向 概念#xff1a;在一个项目中功能非常多#xff0c;也就意味着有非常多的Servlet#xff0c;不同的Servlet的职不 同 #xff0c;而用户发起…目录 1. 回顾SpringMVC请求转发和重定向
2. WEB-INF资源目录
3. 视图解析器
4. 静态资源放行 1. 回顾SpringMVC请求转发和重定向 概念在一个项目中功能非常多也就意味着有非常多的Servlet不同的Servlet的职不 同 而用户发起的请求在服务器端接收到后需要多个Servlet之间的协同处理来共同 完 成 特点 请求转发: 一次请求浏览器地址栏地址不改变 重定向: 两次请求浏览器地址栏地址为最后一次请求的地址 使用场景 查询请求: 请求转发Servlet负责请求数据的处理转发到Jsp进行页面的拼接然后 后响应 增删改请求: 重定向避免表单的重复提交。 在 Spring MVC 框架中默认情况下都使用转发进行寻找资源。如下图 等同于下面的写法 解释在资源路径前面添加 forward: 表示转发。因为写不写 forward: 都是转发所以为了代码写起 来简单一些多省略 forward: 如果希望使用重定向跳转到其他资源只能在资源路径最前面明确添加 redirect:下面代码就 是使用重定向方式的写法不可省略。 2. WEB-INF资源目录 在平时学习过程中我们多会把 JSP 文件直接放入到 webapp 目录中或在 webapp 下新建一个目录把页面资源放入到目录中这种情况 JSP 都是可以通过浏览器直接访问的。如果从安全性等方面考虑不希望客户端通过浏览器直接访问对应的资源。 我们就可以把资源放入到 WEB-INF 目录中。 Java Web 项目中规定WEB-INF 中资源是不允许被客户端直接访问需要先访问控制器通过控制器的转发来访问这些资源 。 如下图所示通过浏览器我们不能直接访问add.jsp页面。 下面通过控制层发出请求去访问如下图所示访问成功 但是现在又有一个麻烦看到下面很长的路径没有如果每访问一个页面都要写这样长的路径又重复又麻烦这可不是一个高级程序员写的代码所以下面有了视图解析器。 3. 视图解析器 Spring MVC 定义了 ViewResolver 和 View 接口实现在浏览器中呈现模型而无需绑定到 特定的视图技术。 提供视图名称和实际视图之间的映射。DispatcherServlet 在接收到请求后调用单元方法处理请求然后接收单元方法的返回值后 DispatcherServlet 会将 model 对象和单元方法的返回值封装到 modelAndView 对象中然后 调用 ViewResolver 视图解析器的实现类对象的 buildView 方法来解析 ModelAndView 对象生 成对用的 View 视图对象然后再调用 View 对象的 render 方法完成物理视图跳转的准备工作 并跳转真正的物理视图。在这里要注意我们使用不同的视图技术需要调用不同的视图解析 器来解析 modelAndView。【了解即可】 使使用只需在springMVC的配置文件中配置视图解析器即可如下。
!--配置视图解析器--bean idresourceViewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/page//property namesuffix value.jsp//bean
如下图然后再在浏览器中访问同样可以到页面 这是因为配置视图解析器之后当请求转发时会走视图解析器自动会给你在前面拼接 /WEB-INF/page/ 在后面拼接 .jsp然后整体的路径就是webapp/WEB-INF/page/add.jsp因此简洁了很多。 注意 当自定义视图解析器后返回值前面和后面都会固定拼接字符串在没有使用其他注解情况 下。但是如果控制单元执行完并不希望跳转到视图而是跳转到控制器这时需要在返回 值前面明确添加 forward: 或 redirect: 这样就不走视图解析器了 上面表述可以总结为 如果单元方法的返回值没有使用forward关键字则会触发视图解析的二次拼接功能 如果单元方法的返回值使用了forward关键字则单元方法的返回值就是要请求转发的资源路径 4. 静态资源放行 按照 SpringMVC 的使用流程在 web.xml 文件中配置 DispatcherServlet 的拦截范围 而我们配置的拦截范围为 ”/” , 表示拦截除 jsp 请求以外的所有请求。这样 js,css, 图片等静态资源的请求也会被拦截。因此Spring MVC 支持静态资源配置当 URL 满足指定路径要求时不再去找控制单元而是直接转发到特定路径中静态资源。 在SpringMVC.xml中配置如下但请求cssjs等资源时不会被拦截。
!--01 配置静态资源放行--
!--mapping当URI是什么样格式时不再执行控制器而是寻找静态资源。 ** 是通配符
表示任意层路径 --
!--location:去哪个目录中寻找静态资源。mapping中**的值是什么就去location目录中
找对应资源--
!--例如URL是http://localhost:8080/wollo/js/jquery.js 其中mapping的**就是j
query.js,就会去location的/js/目录中寻找jquery.js --
mvc:resources mapping/js/** location/js//mvc:resources
mvc:resources mapping/css/** location/css//mvc:resources
mvc:resources mapping/images/** location/images//mvc:resources
!--02 配置静态资源放行将上面的统一放到static中一起放行--mvc:resources mapping/static/** location/static//mvc:resources如下图所示访问my.css正常情况会被拦截配置之后成功访问。 注意静态资源放行的目录必须和webpp下的静态资源目录名称一致