springMVC
1.springMVC结构 //\java Study\WEB前端\springMVC\图 这个里面有springmvc,struts2架构设计图
控制层 controller:接受请求,发送请求 <--> 1.处理器映射器 //springmvc-servlet.xml核心配置文件
//web.xml
<--> 2,处理器适配器 <--> UserController(UserAction)
<--> 3.视图解析器 ViewResolver
<--> view视图层
123springMVC三大组件
2.乱码处理
1.get处理
解码编码
username = new String(username.getBytes("ISO8859-1"),"UTF-8");
2.servlet服务器编码 //tomcat服务器service.xml处理
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
3.post处理
spring编码过滤器,web.xml配置
3.ssm框架搭建步骤:
1.动态web项目
1.导包 mybetis spring springMVC
2.web.xml
编码过滤器
加载spring配置文件 //applicationContext.xml
加载springmvc配置文件 //springmvc.xml
2.springmvc.xml
扫描包
注解驱动
3.applicationContext-dao.xml
applicationContext-service.xml
4.sqlMapConfig.xml
4.springMVC重定向:
两种
1.本类进行重定向'
return "redirect:hello.do"
>本类重定向,不需要从根路径开始
>必须加扩展名.do web.xml中需要经过过滤器
2.跨类重定向
return "redirect:/items/list.do"
>必须从根路径进行访问
>必须加扩展名
5.springMVC转发:
特点:请求地址不发生变更
1.本类进行转发
return "forward:hello.do"
2.跨类进行转发
return "forward:/items/list.do"
6.springMVC请求方法唯一性定义
1.在Contrller类上加@RequestMapping(类名)
2.在方法前面多加类根路径@RequestMapping("/user/save")
7.springMVC注解: //
@RequestMapping(请求映射)
用法:
1.@RequestMapping("url")
2.@RequestMapping(value="url.do")
3.@RequestMapping(value="url",method=RequestMethod.GET/POST)
@RequestParam()
作用:处理请求参数
参数:
defaultValue:设置默认值,当前台页面传递参数为null时,使用默认值.(应用场景:分页)_
value:定义别名 -- 当前台页面传递参数名称和方法中参数名称不一致,页面参数可以和别名进行匹配
required:表示必须传递参数,默认true
用法:public String userlist(@RequestParam(defaultValue="1",value="ids",required=true) Integer id) {}
@RequestBody
作用:把请求的json数据,封装到javaBean对象
@ResponseBody
作用:把javaBean对象自动变成json对象返回页面,或者远程对象
实现条件:
1.导入@RequestBody,@ResponseBody转换所依赖的jar文件,3个jar
Jackson -- 用来把javabean数据转换json格式,把json格式转换成javabean
//只需要导入,springmvc就会自动整合jackson,
2.springnvc配置文件配置
//以前需要配置注解映射器和注解适配器,现在用下面代替就可以
<mvc:annotation-driven />
案例:1.请求Json响应Json
@Controller
@RequestMapping("json")
public class MyJsonController {
@RequestMapping("requestJson.do")
public @ResponseBody User requestJson(Model model,@RequestBody User u){
System.out.println("用户信息:"+u);
return u;
}}
案例:2.请求pojo响应json
@Controller
@RequestMapping("json")
public class MyJsonController {
@RequestMapping("responseJson.do")
public @ResponseBody User responseJson(User user){
System.out.println(user);
return user;
}
}
8.springmvc处理异常
全局异常处理器
1.运行时异常
返回错误页面
2.可预期异常
商品不存在
....
全局异常处理器:
1.自定义异常类
2.创建全局异常处理器类 implements HandlerExceptionResolver
3.springmvc.xml中,配置全局异常处理器
9.springmvc图片上传
1.传统(原始)方式上传(了解)
form上传 需要添加enctype="multipart/form-data"
//不能跨服务器
2.ajax异步方式上传
跨服务器上传文件方式:
ftp
分布式文件系统
fastdfs
mgfs
mgdb//小文件
sun公司工具包:jersey
异步上传条件:
1.导入jar文件
jersey //sun公司工具包 3个
commons-fileupload
commons-io
2.在springmvc.xml配置上传文件解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000"></property>
</bean>
3.搭建图片服务器
注意:搭建服务器放入tomcat时,需要在tomcat中web.xml里面103行左右,如下配置
//eclipse中 --> Servers -->找到要部署的服务器
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
10.restfull: //\java Study\WEB前端\springMVC\图day2
概念:软件的架构风格,不是技术,规范
特点:没有参数,没有扩展名
优势:
>安全
>简洁,高效
>容易被搜索引擎收录
利用springmvc实现restfull软件架构风格:
1.web.xml 拦截所有
>servlet配置拦截为 / // 不可以直接/* 那样会拦截jsp资源
2.springmvc.xml 放行静态资源 //高封装,一条语句就可以,以前需要手动很多语句
<mvc:default-servlet-handler/>
3.参数接收使用springnvc模板映射
@PathVariable
案例:
@RequestMapping("/item/editItem/{id}")
public String editItem(@PathVariable Integer id,Model model) throws CustomException{
//调用服务层对象,查询商品对象
Items item = itemService.findItemByID(id);
//放入model
model.addAttribute("item", item);
return "editItem";
}
11.springmvc拦截器 //\java Study\WEB前端\springMVC\教案\day2
在处理器映射器执行之前执行,拦截请求.
常用场景:用户是否登录.
使用:
1. public class LoginInterceptor implements HandlerInterceptor{}
2.springmvc.xml 配置拦截器






浙公网安备 33010602011771号