SpringMVC搭建
1、创建工程
2、导入jar包
3、配置web.xml配置文件-----声明不用传统servlcet,用springmvc
7、springdispatcherServlet-servlet.xml路径放置
8、类映射和方法映射
9、springmvc 默认请求转发,更改method=RequestMethod.POST
10、index.jsp 更改请求方式
11、属性值,params={“name”} 必须有请求参数必须有name属性
params={“name=zs”,“age!=23”,“handle”}>>>>>>属性不能包含handle
12、获取请求头信息
@RequestMapping(value = “welcome2”,headers = {“Accept=text/html,application/xhtml+xml,application/xml;q=0.9,
image/webp,/;q=0.8”,“Accept-Encoding=gzip, deflate”}) //方法映射
13、ant风格的请求
?一个 value = “welcome4/a?c/test”,
- 多个 value = “welcome3/*/test”
14、拿前端的值
@RequestMapping(value = “welcome5/{name}”) //方法映射
public String welcome5(@PathVariable(“name”) String name) {
15、一间生成web.xml配置文件 alt+/ 然后选dispatcherselect
16、请求方式 GET POST DELETE PUT
GET 查
POST 增
DELETE 删
PUT:改
17、过滤器配置
HiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
HiddenHttpMethodFilter
/*
前台:三要素 post hidden _method
20、request域
处理数据模型及注解的使用—sevlet带数据跳转>>>>
ModelAndView: 相当于request.setAttribute(“student”,stu);
ModelMap:
Map:
Model:
21、 session域
@SessionAttributes("")
@SessionAttributes(types = Student.class) //放入学生类型
22、@ModelAttribute 注解 更新操作
约定:map.put(“stu”,student);
23、视图 、视图解析器、国际化
1、建立资源文件.properties
2、springmvc 配置文件
3、24、jsp跳转到jsp没有经过spirngmvc
1、配置
<mvc:view-controller path=“SpringMVCHandler/testMvcViewController” view-name=“success”/>
mvc:annotation-driven</mvc:annotation-driven>
25、指定请求方式 重定向转发
return “forward:/views/sucess.jsp”
26、访问静态资源 (例如图片,)
解决方法:spring.xml加入
mvc:default-servlet-handler</mvc:default-servlet-handler>
27、数据类型转换(zl-55-ff)>>转换为student封装
解决方法:
1、创建自定义类型转换器MyConverter类
public class MyConverter implements Converter<String,Student> {
@Override
public Student convert(String source) {
// TODO Auto-generated method stub
String[]studentStrArr =source.split("-");
Student student =new Student();
student.setId(Integer.parseInt(studentStrArr[0]));
student.setName(studentStrArr[1]);
student.setAge(Integer.parseInt(studentStrArr[2]));
return student;
}
}
2、配置spring.xml
<mvc:annotation-driven conversion-service=“conversionService”></mvc:annotation-driven>
28、数据格式化SimpleDateForamt
解决方法:
1、在spring.xml加入bean
<mvc:annotation-driven conversion-service=“conversionService2”></mvc:annotation-driven>
2、直接日期格式化加@注解
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
29、BindingResult约定 抛异常前端不显示错误,后端打印异常
if(result.getErrorCount()>0) {
for(FieldError error:result.getFieldErrors()) {
ystem.out.println(error.getDefaultMessage());
}
}
30、错误信息处理BindingResult
1、前台
if(result.getErrorCount()>0) {
for(FieldError error:result.getFieldErrors()) {
System.out.println(error.getDefaultMessage());
map.put(“errors”,result.getFieldErrors()); //拿错误信息
}
}
2、后台
<c:forEach items="${errors}" var=“error” >
${error.getDefaultMessage() }
</c:forEach>
31、数据校验jrs303
1、导入jar包4个包>>>出问题版本问题
2、配置spring.xml加入bean
<mvc:annotation-driven ></mvc:annotation-driven>
3、加入@past
@Past //数据校验 当前时间
@DateTimeFormat(pattern = “yyyy-MM-dd”)//日期格式化
private Date birthday;
4、加入@Valid
@Valid Student student,BindingResult result,Map<String,Object> map
32、ajax 请求反会json数据
解决:
1、写前端ajax
2、springmvc.xml加入@ResponseBody
3、导入jar
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.3/
33、springmvc实现文件上传
1、前台
描述:
<input type="submit" value="上传">
</form>
2、handler
//文件上传处理方法
@RequestMapping(value="testUpload") //abc.png
public String testUpload(@RequestParam("desc") String desc , @RequestParam("file") MultipartFile file ) throws IOException {
System.out.println("文件描述信息:"+desc);
//jsp中上传的文件:file
InputStream input = file.getInputStream() ;//IO
String fileName = file.getOriginalFilename() ;
OutputStream out = new FileOutputStream("d:\\"+fileName) ;
byte[] bs = new byte[1024];
int len = -1;
while(( len = input.read(bs)) !=-1 ) {
out.write(bs, 0, len);
}
out.close();
input.close();
//将file上传到服务器中的 某一个硬盘文件中
System.out.println("上传成功!");
return "success";
}
3、spring.xml配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 上传单个文件的最大值,单位Byte;如果-1,表示无限制 -->
<property name="maxUploadSize" value="102400"></property>
</bean>
34、拦截器
1、拦截器class创建
2、配置
mvc:interceptors
<!-- 配置具体的拦截路径 -->
<mvc:interceptor>
<!-- 指定拦截的路径,基于ant风格 -->
<mvc:mapping path="/**"/>
<!-- 指定拦不截的路径 -->
<mvc:exclude-mapping path="/handler/testUpload"/>
<bean class="org.lsj.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
<!-- 配置具体的拦截路径 -->
<mvc:interceptor>
<!-- 指定拦截的路径,基于ant风格 -->
<mvc:mapping path="/**"/>
<!-- 指定拦不截的路径 -->
<mvc:exclude-mapping path="/handler/testUpload"/>
<bean class="org.lsj.interceptor.MySecondInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
35、异常处理
1、写异常处理类
@Controller
@RequestMapping(“second”)
public class SecondSpringMVCHandler {
@RequestMapping("testExceptionHandler")
public String testExceptionHandler() { //处理数字异常
// try {
System.out.println( 1/0 );//
// }catch(ArithmeticException e) e
// }catch(Exception e) e
return “success” ;
}
@RequestMapping(“testExceptionHandler2”)
public String testExceptionHandler2() { //处理越界异常
// try {
int []nums =new int[2];
System.out.println(nums[2]);
// }catch(ArithmeticException e) e
// }catch(Exception e) e
return “success” ;
}
/*
@ExceptionHandler({ArithmeticException.class ,ArrayIndexOutOfBoundsException.class}) //异常交到这里处理
public String handlerArithmeticException1(Exception e) {
System.out.println(e +"");
System.out.println(“数学异常”+e);
return “error”;
}
*/
@ExceptionHandler({ArithmeticException.class ,ArrayIndexOutOfBoundsException.class}) //异常交到这里处理
public ModelAndView handlerArithmeticException1(Exception e) {
ModelAndView mv =new ModelAndView(“error”); //相当于session
System.out.println(e +"");
mv.addObject(“er”,e);
return mv;
}
36、SSM整合>>>>重点涉及到的知识 mybatis、 spring 、spirngmvc
S Spring
S Spring
M MyBatis
1、导包
2、创建类表
37、Springmvc 表单
1、绑定单个属性值
2、打勾 :多个打一个够,显示4个全部打两个勾