SpringMVC
springMVC如何介入程序?
1、MVC配置文件中要配置
<url-pattern>/</url-pattern>
/:拦截一切请求
/user:拦截以 /user开头的请求 <url-pattern>/user</url-pattern> <a href="/user/dmeo">...</a>
.action: 拦截以.action结尾的请求 <url-pattern>/demo.action</url-pattern> 交给传统的Servlet处理
/user/abc.do:只拦截该请求
学习注解:
@requestMapping();
映射时是找 注解 ()里面的内容可以和方法名类名不一致,可以写在类前面, 寻找时
<a href="springmvc/welcome"> nihao a </a> 从类里面找再找加welcome注解的方法
-页面跳转的方式是请求转发,
@requestMapping(“welcome”,method=RequestMethod.POST); //只允许post请求,get请求会被拦截 无法访问
通过method指定请求方式(get post delete put)
@requestMapping(“welcome”,method=RequestMethod.POST,params={"name=zs"});
params={"name"} //必须有 name 参数
params={"name=zs"} //必须有 name=zs 参数
params={"name=zs","age!=13"} 设置拦截参数,可以有多个值,age可以判断
params={"name=zs","age!=13","!hi"} 请求参数 name=zs,age!=13,不能有hi
@RequestMapping参数:
value:
params:
header:
method:
-约定请求头信息
@requestMapping(value=“welcome”,header={"Accept:xxxx","host:localhost"})
-ant风格的请求路径
? 单字符
* 任意字符(0个或多个)
** 任意目录
@requestMapping(value=“welcome/**/demo”)
<a href="springmvc/welcome/abc/demo"> nihao a </a>
@requestMapping(value=“welcome/a?b/demo”)
<a href="springmvc/welcome/dsadsa/demo"> nihao a </a>
REST风格:软件编程风格
POST:增
DELETE:删
PUT:改
GET:查
delete、和put请求是通过过滤器 HiddenHttpMethodFilter 实现的
过滤的条件:
1、请求方式为post
2、 type属性字段=hidden name="_method" value delet或put
<input type="hidden" name="_method" value="delete/put">
要想有 delete 和 put请求 在web.xml配置 <filter>
-@RequestParam() //接收前端传来的值
String name = request.getParameter("name")
等价于
@RequestParam("name")
实例:
@RequestMapping(value="jieshao2_get",method = RequestMethod.GET)
public String jieshao2_get(@RequestParam("zs") String id){
System.out.println(id+"查了");
return "nihao";
@RequestParam(value="zs")
属性:
value:@RequestParam(value="zs")
required:这个参数是否是必须的 @RequestParam(value="zs",required="false")
defaultValue:默认值 @RequestParam(value="zs",required="false",defaultValue="23")
-@RequestHeader //获取请求头信息
@RequestHeader("Accept-Lanauge")
-@CookieValue //获取Cookie的值
@CookieValue("JSESSIONID") String value
-原生Servlet API
public void Test(HttpServlet request HttpServlet response)
{
request.getParameter()
}
-可以给一个javaBean全部赋值
6 页面跳转带数据可以有以下几种方式:ModelAndView(用的最多)、ModelMap、Map、Model
ModelAndView 既有数据又有视图,页面跳转到前端的时候把数据传过去,数据在request域
ModelMap
Map
Model
放入session域,加注解@SessionAttributes()在类前面加
@SessionAttributes(value="student1,student2")
//若在request域中存放student1,student2类型的对象,则在session域中也存放该对象
@SessionAttributes(type="{Student.class,Address.class}")
//若在request域中存放student1,student2类型的对象,则在session域中也存放该类型的对象
-@ModelAttribute(“stu”,student) //查询时一般用这个
删之前查一下
更新使用
插入代码
在请求该类的各个方法前 均备执行
-视图解析器
视图 InternalResourceView 它的一个子类JstlView
视图解析器 ViewResolver
国际化:
a创建资源文件
视图解析器功能:
1 index.jsp 直接到 success.jsp 不需要经过collenter
<mvc:view-controller path="(springmvc/testViewController)前端请求的servlet" view="nihao(跳转的页面)">
2指定请求方式:
redirect: forward:
2 <mvc:annotation-driven></mvc:annotation-driven>
springmvc基础配置,该注解可以让<mvc:viewController>共存
3处理静态资源:
<mvc:default-servlet-handler>
这个标签可以让一个没有springmvc @requestMapping 处理的servlet,使用tomcat默认的servlet来处理
4指定跳转方式:return "forward:/views/nihao.jsp"
redircet: 重定向 forward:请求转发,有这个标识不会自动加前缀、后缀。
5 类型转换:
自带一些类型转换器 string ->int
自定义类型转换器:
1 编写自定义类型转化器(实现一个Converter接口)
2 spring.xml配置
3 测试
6 数据格式化
实例:new SimpleDataFormat("yyyy-MM-dd hh:mm:ss")
springmvc有很多注解来实现数据格式化,
Number
7 错误消息处理(没细看)
8 数据校验(注解)第10集没看
JSR303
Hibernate Validator
jar包:hibernate-Validator.jar classmate.jar jobss-logging.jar vaildatetion-api.jar hibernate-Validator-annotation-process.jar
9 ajax请求springmvc调返回json数据
10 MVC文件上传
jar包 commons-io.jar
实现MultipartResolver接口,commonsMultipartResolver
步骤:
1、jar
2、commonsMultipartResolver 加入ioc容器
3、
11 Spingmvc实现拦截器:
1、实现一个接口HandlerInterceptor
2、实现 preHandle() postHandle() afterCompletion()方法
preHandle():拦截请求
postHandle():拦截响应
afterCompletion():客户端渲染完毕(图片,文字都显示)触发这个函数
3、配置拦截器
12异常处理
加一个异常注解@ExceptionHandler 相当于catch
@ExceptionHandler标识的参数只能是 Throwable或其子类,不能包含其他类型参数
捕获最近的异常。
@ControllerAdvice 这个注解写在类前面,表明这个类可以处理其他类中发生的异常
ResponseStatusExceptionResolver:自定义异常显示界面(可以修改著名的 404 页面), @ResponseStatus 写在类前面或方法前面
//自定义异常类
@ResponseStatus(value=HttpStatus.FORBIDDEN,reason="数组越界异常")
public class testMyException extends Exception{
.....
}
JstlView 国际化操作:
1、创建资源文件
有一个命名规范 基名_ZH_