1. 关于String返回类型的使用:(到特定文件位置)
2. 关于ModelAndView返回类型方法代替原有跳转与参数添加的场景:
3.关于使用@RequestParam来解决表单中name与处理器方法参数名不一致的方案:
(矫正请求参数名)
所谓校正请求参数名,是指若请求 URL 所携带的参数名称与处理方法中指定的参数名 不相同时,则需在处理方法参数前,添加一个注解@RequestParam(“请求参数名”),指定请 求 URL 所携带参数的名称。该注解是对处理器方法参数进行修饰的。value 属性指定请求参 数的名称。
4. 四种返回类型的应用:
1. ModelAndView:若处理器方法处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时 处理器方法返回 ModelAndView 比较好。当然,若要返回 ModelAndView,则处理器方法中 需要定义 ModelAndView 对象。 在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何 资源跳转(如对页面的 Ajax 异步响应),此时若返回 ModelAndView,则将总是有一部分多 余:要么 Model 多余,要么 View 多余。即此时返回 ModelAndView 将不合适。
2.String: 处理器方法返回的字符串可以指定逻辑视图名,通过视图解析器解析可以将其转换为物理视图地址 返回内部资源逻辑视图名 若要跳转的资源为内部资源,则视图解析器可以使用 InternalResourceViewResolver 内部 资源视图解析器。此时处理器方法返回的字符串就是要跳转页面的文件名去掉文件扩展名后 的部分。这个字符串与视图解析器中的 prefix、suffix 相结合,即可形成要访问的 URI。
3. void: 对于处理器方法返回 void 的应用场景,AJAX 响应. 若处理器对请求处理后,无需跳转到其它任何资源,此时可以让处理器方法返回 void。
4. Object: 重点:
返回Object对象,一般是转换成json字符串到页面中的,需要jackson工具,因此导入新的jar包。
(1)导入相关jar包:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency>
(2)导入jquery
(3)返回一个dept部门类型。
写一个管理器类,返回Object类型。
使用 @ResponseBody注解(告诉dis当前返回的对象作为json格式字符串来写到响应体中)
再写一个jsp页面来测试(使用异步请求)
测试结果:
5. SpringMVC小服务
1. 请求转发和重定向简化服务.
原有的请求转发和重定向地址格式:request.getDispatcher().forward(); request.sendRedirect();
简化完以后:
return "/资源文件地址" ;默认采用请求转发调用
return "redirect: /资源文件地址" ;重定向
return “forward:/资源文件地址” ;请求转发
2. CharacterEncodingFilter服务:
简明扼要,字符集编码过滤器。
作用:拦截Http服务器后,可以根据用户提供字符集来替换请求对象中使用的字符集。
类似之前配置dispatcherServlet的方法来实现配置过滤器,在web核心配置文件中书写
<filter> <filter-name>filter</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> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>*.do</url-pattern> <!--这里同理,/或者*. 之类--> </filter-mapping>
3.InternalViewResourceResolver
视图解析器:在spring核心配置文件中书写。
<!-- 注册视图解析器 --> <!-- 通过视图解析器,我们在return时返回String类型的文件地址后就不必要写完整的资源路径,只需要写文件名 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsp/"/> <!--前缀为/jsp/文件名,自动到webapp文件夹中--> <property name="suffix" value=".jsp"/> <!--后缀为 .jsp 意为jsp类型文件--> </bean>
这是对比,前三个为返回String类型中,书写完整的文件地址
第四个为只需要书写文件名(省略了前缀路径以及后缀文件类型)
//每个管理器方法必须有一个唯一别名 @RequestMapping("/test1.do") public String test1(){ return "/jsp/one.jsp"; } @RequestMapping("/test2.do") public String test2(){ return "/jsp/two.jsp"; } @RequestMapping("/test3.do") public String test3(){ return "/mike/test1.do"; } //测试视图解析器 //首先再spring核心配置文件中注册解析器、 @RequestMapping("/test4.do") public String test4(){ return "one"; }
4.欢迎页面
tomcat默认情况下会到webapp文件夹下的index.html或者index.jsp, 我们可以在web.xml文件中自定义欢迎页面,默认根路径是webapp/
<welcome-file-list> <welcome-file>view/login.html</welcome-file> </welcome-file-list>