黑马程序员技术交流社区

标题: 【广州校区】【原创】SpringMVC常见问题精华总结 [打印本页]

作者: 帅气de路人甲    时间: 2018-5-8 21:24
标题: 【广州校区】【原创】SpringMVC常见问题精华总结
【001】什么是SpringMVC?有什么用?
答:
SpringMVC是一个spring框架内置的MVC模式的实现,可以认为SpringMVC是Spring框架的一个子框架
SpringMVC是MVC思想的一个实现
作用:
实现页面代码和后台代码的分离

【002】SpringMVC拦截配置能否是 /*?
答:

因为 /* 是拦截所有的请求与页面
如果配置了 /* 拦截了jsp,则会导致jsp页面永远打不开(SpringMVC本身不处理jsp的默认跳转)
应配置为:*.mvc、/,两种之一

【003】如何配置SpringMVC随容器启动而启动?为什么要配置?
答:
配置随容器的启动而启动:
<load-on-startup>1</load-on-startup>
原因:
SpringMVC在设计的时候只考虑到xml而没考虑到注解的配置方式,所以如果不配置SpringMVC随容器启动而启动,那么注解配置方式多于xml配置方式的功能将会失效,如:
①  上传组件
②  JSON解析组件
③  <mvc:xxx>组件

【004】SpringMVC支持哪三种映射路径?
答:
①  普通的映射方式
请求路径为:http://localhost:8080/springmvc-demo03-webxml/say.mvc
映射路径为:/say.mvc

SpringMVC基于@RequestMapping注解的映射路径支持忽略 / 和 后缀,所以 /say.mvc 可以写成:/say、say.mvc、say,3种形式

②  含通配符 * 的映射方式
使用一个符号匹配多个字符(?、*、**)
?        :匹配任意一个字符
*        :匹配单级目录的多个字符
**        :匹配多级目录的多个字符

从影响范围从小到大:? > * > **

③  含 ? 号的映射方式
将原来使用?传递的参数放在路径里面传递

传统方式:../springmvc/say.mvc?name=zhangsa&password=123
由于传统方式参数放在后,人家立刻知道你这个是动态页面
而SpringMVC支持将参数放在路径里面,通过这个的方式可以实现伪静态,如:
../springmvc/zhangsan/123/say.html
(伪静态:是指实际上请求的是动态页面,但看上去像静态页面)

【005】SpringMVC有哪两种限制?限制有什么用?
答:
①  方法限制
根据请求的method值确定请求是否有权限执行方法
语法
@RequestMapping(value="...", method=RequestMethod.GET)
@RequestMapping(value="...", method={ RequestMethod.GET, RequestMethod.POST })

②  参数限制
根据限制判断请求中哪些参数必须包含、哪些参数不能出现
语法
@RequestMapping(value="...", params={ "! userId", "name=123", "pwd != 1" }
!userId                :表示请求中不能出现userId
name=123        :表示请求中必须包含user,并且参数值一定是123
pwd != 1                :表示请求中必须包含pwd,但值不能为1
作用:
提高安全性

【006】SpringMVC的内置对象(ServletAPI)主要作用是什么?
答:
作用:
获取和设置数据
原因:
SpringMVC与JavaWeb数据的交互式使用Servlet技术实现的,所以SpringMVC内置支持ServletAPI的方式获取和设置数据
即只要将ServletAPI中的HttpServletRequest,HttpServletResponse,HttpSession这三个接口放在执行方法的参数上,SpringMVC就会自动将请求参数与这三个对象关联
(ServletAPI的对象可以根据需要,在参数里面设置一个或多个接口)
注意:
ServletAPI在SpringMVC中,一般用于设置数据,并返回到视图,不用于从请求中获取数据
因为从请求中获取参数数据处理起来比较麻烦

问:如何处理SpringMVC接受请求过来的参数?
SpringMVC支持参数的自动绑定,故不建议使用ServletAPI获取

【007】SpringMVC参数什么情况下需要强制绑定?
答:
请求表单的属性与执行方法参数的字段不一致时,需要强制绑定
参数强制绑定使用注解:@RequestParam

【008】SpringMVC如何处理请求表单数据为中文的问题?
答:
①  POST方法乱码:
在web.xml中配置字符编码过滤器,即
org.springframework.web.filter.CharacterEncodingFilter

②  GET方法乱码:
在方法注解上设置produces值,即:
@RequestMapping(value="...", produces = "text/html;charset=UTF-8")


作者: Yin灬Yan    时间: 2018-5-9 14:38
我来占层楼啊   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2