美文网首页
06|第六课:视图解析器常见功能、处理静态资源、类型

06|第六课:视图解析器常见功能、处理静态资源、类型

作者: 木头amo | 来源:发表于2019-02-08 21:05 被阅读19次

一、历史回顾

(一)、springMVC处理流程

InternalResourceViewResolver其他功能:

index.jsp ---> Controller(@RequestMapping) ---> success.jsp

现在实现:index.jsp ---> success.jsp,但是还需要走springMVC,而不是普通的超链接。

二、视图解析器常见功能、处理静态资源、类型转换

(一)、视图解析器常见功能、处理静态资源、类型转换

1、要用springMVC实现JSP直接跳转:index.jsp ---> success.jsp

<mvc:view-controller path="handler/welcome" view-name="success" />

例:

请求页面(index.jsp):

请求页面

springmvc.xml配置:

配置

响应页面(success.jsp):这里就不写了。

注意:如果在springmvc.xml配置了“view-controller”这个标签,会让所有的请求转入“<mvc:...>”中匹配映射地址,而会忽略掉@RequestMapping()。如果想让“<mvc:...>”和@RequestMapping()共存,则需要加入一个注解:

基础功能注解

2、SpringMVC的控制请求的修改

SpringMVC的控制请求是请求转发(forward),现在修改成重定向(redirect)的方式。那就是在返回值的地方添加“forward:”或者“redirect:”前缀值和详细的执行的跳转地址。

例:

请求页面(index.jsp):

请求

Controller处理请求:

处理请求

3、处理静态资源:html   css   js   图片   视频

动态资源:可以与用户交互、因为时间/地点的不同而结果不同的内容。例:百度---天气。

静态资源:不管任何情况结果是不变化的。例如:html 、css、js、图片、视频。

在springMVC中,直接访问静态资源是报404。原因如下:当访问地址:http://localhost:8080/Demo/test.img的时候,springMVC之前将所有的请求通过通配符 “/” 拦截,进而交给springMVC的入口DispatcherServlet去处理,它就是找该请求映射对应的@RequestMapping()。例:就去找@RequestMapping("test.img"),这里不可能找到这个内容。

解决方案:如果是需要springMVC处理的,则交给@RequestMapping()去处理;如果不需要springMVC处理,则使用tomcat默认的Servlet去处理。如果有对应的请求拦截,则交给相应的Servlet去处理。如果没有对应的Servlet,则直接访问。tomcat默认的Servlet在哪里?在tomcat配置文件\conf\web.xml中。在项目的web.xml中配置Servlet的代码示例:

代码示例

解决静态资源访问方案:如果有springMVC对应的@RequestMapping()则交给springMVC去处理;如果没有对应的@RequestMapping(),则交给服务器tomcat默认的servlet去处理(在上面讲了)。实现方法:只需要在springMVC的配置文件springmvc.xml中增加两个配置即可,如下图所示:

解决配置方案

例:

在项目中增加一个图片:

图示

springmvc.xml中的配置:

图示

4、类型转换

(1)、springMVC自带一些常见的类型转换器:例如:

自带类型转换

这里既可以接收Integer类型数据,也可以接收String类型的数据。

(2)、自定义类型转换器

这个是将前端(JSP等)传入的值,自动转换成一个前端后台的对象。如下图所示:

图示

具体执行步骤是:

a、编写自定义类型转换器的类(实现Converter接口)

b、配置:将编写好的自定义类型转换器的类加入到springMVC中

(a)、在springmvc.xml中配置,将自定义转换器纳入到springIOC容器中

代码配置

(b)、再将刚才纳入springIOC容器中的自定义类型转换器,再纳入到SpringMVC提供的转换器Bean中,这个Bean是ConversionServiceFactoryBean。

代码配置

(c)、再将ConversionServiceFactoryBean的这个Bean,注册到annotation-driven中。

代码配置

(d)、通过@RequestParam()注解对应前台和控制的对象的对应,他是触发转换器的桥梁。@RequestParam()注解将接收到的数据,是前端传过来的(2-zs-23),但是需要将该数据赋值给修饰的目标对象(student)。因此springMVC可以发现接受的数据和目标数据不一致,并且两种数据分别是String、Student正好符合自定义的类型转换器(MyConverter)

例:

自定义类型转换器:

编写自定义类型转换器

springmvc.xml的配置:

配置类型转换器

页面请求(index.jsp):

请求页面

Controller请求处理:

处理请求

相关文章

网友评论

      本文标题:06|第六课:视图解析器常见功能、处理静态资源、类型

      本文链接:https://www.haomeiwen.com/subject/stqosqtx.html