1.springMVC结构 //java StudyWEB前端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 StudyWEB前端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 StudyWEB前端springMVC教案day2 在处理器映射器执行之前执行,拦截请求. 常用场景:用户是否登录. 使用: 1. public class LoginInterceptor implements HandlerInterceptor{} 2.springmvc.xml 配置拦截器