springmvc笔记总结

SCzfdf 贡献于2017-01-03

作者 admin  创建于2016-11-24 06:47:00   修改者admin  修改于2016-12-13 08:51:00字数4596

文档摘要:SpringMVC是一个前台的控制框架,与前台进行数据交互并且能做到自动封装.一个前台控制类(Controller),就可以控制所有请求
关键词:

SpringMVC 1.什么是SpringMVC SpringMVC是一个前台的控制框架,与前台进行数据交互并且能做到自动封装. 一个前台控制类(Controller),就可以控制所有请求 2.Servlet交互的弊端 1.Servlet配置文件最少有8行代码,如果Servlet太多会导致配置文件可阅读性低,加载时间过长 2.对一个对象的增删改查会生成4个Servlet,造成Servlet过多 3.Servlet中只有doGet()和doPost(),方法调用单一 4.request获得的参数都是String类型的,过于单一 3.SpringMVC的内部调用过程 名词 前端控制器 负责request,response的转发 处理器映射器 负责将url请求与Controller对应(之前的Servlet) 处理器适配器 最终执行请求(增删改查) 视图解析器 将页面和数据回显给用户 例: 用户点击--> 1. 前端控制器接收request和客户端的请求路径--> 2. 转发到处理器映射器查找对应的请求路径(Controller是否存在)--> 3. 转发回前端控制器--> 4. 前端控制器根据请求路径查找处理器适配器--> 5. 处理器适配器按照调用对应Controller的处理数据(Controller(servlet)->service->dao)获得modandview 6. 返回modandview给前端处理器(mod是处理后的数据,view是返回页面的名称)--> 7. 前端处理器将view转发给视图解析器获得解析后的view(页面的具体路径)--> 8. 视图解析器解析后将view返回给前端控制器--> 9. 前端控制器将mod填充到view中-->前端控制器将view响应到客户端 Spring通过前端控制器的request和response的转发,最大程度减低了各个模块的耦合性,增强了内聚性 1.将客户端的URL发送给前端控制器 2.前端控制前不负责处理任何业务逻辑,之后转发到处理器映射器中询问能够处理当前请求的Controller 3.处理器映射器根据url匹配相应的Controller然后返回给前端控制器 4.前端控制器请求处理器适配器执行请求(handler) 5.处理器适配器根据某种特定的规则,调用相应的处理器处理请求 6.处理器处理完成以后返回一个ModelAndView对象,这个对象中包含2个信息 model就是处理后的数据 view就是返回页面的名称(index)没有任何修饰。 7.处理器适配器将返回后的ModelAndVIew对象返回给前端控制器。 8.这是的前端控制器拿到ModelAndView对象后不能直接解析,需要调用视图解析器解析,返回页面的具体路径 9.视图解析器拿到页面名称后进行路径的拼接(web-inf/index.jsp) 需要给页面名称添加前缀“web-inf”和后缀“.jsp”然后形成一个具体的页面路径。 10.前端控制器拿到具体的页面路径后调用视图渲染将model中的数据填充到页面中。 11.将页面返回给客户端进行展现。 4.配置SpringMVC A.导入jar包: B.在WEB.XML中配置前端控制器:(WEB.XML) (调用SpringMVC的DispatcherServlet) springmvc org.springframework.web.servlet.DispatcherServlet ContextConfigLocation classpath:/springmvc-servlet.xml springmvc *.action C.配置过滤器解决全站乱码(WEB.XML) (调用SpringMVC下的characterEncodingFilter) characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 characterEncodingFilter /* D.编写Controller() 1.第一种方法:实现Controller接口 1.1编写controller类 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { /** * 处理器适配器调用对应Controller处理数据后获得modelAndView * 参数在此后依靠modelAndView传递 * 之前通过request */ String parameter = request.getParameter("name"); //modelAndView moded-数据,view页面路径 ModelAndView modelAndView = new ModelAndView(); //添加数据到modelAndView modelAndView.addObject("hello", "123"); //返回页面的逻辑名--view /** * view传递给视图解析器,与前缀和后缀拼接 * 获得页面的正确路径 */ modelAndView.setViewName("hello"); return modelAndView; 1.2在SpringMVC文件中配置映射关系 2.第二种方法:注解形式 2.1在SpringMVC文件中开启包扫描和注解 2.2编写controller类 @Controller//声明该类为Controller public class HiController { //value为浏览器访问路径 @RequestMapping(value="/to.action") public String sayhi(Model model){ //modelAndView的拆分 model.addAttribute("hello", "hello"); return "/hello"; }} E.配置视图解析器 5.从页面中获取值 1.在springMVC中主要方法的参数名和页面中标签的name属性名保存一致。那么就能自动的注入。 1.2当参数名一定要不一样时,可以在参数前添加注解@RequestParam(value="正确的页面名") 2.将页面的值注入对象 注意:1.页面中的属性名,要与对象的属性名和SET()方法一致 2.当对象里包含对象(userInfo)时,页面的属性名应该为对象.属性名(user.gender).属性 命名规则与1相同 3.同名提交问题 1.如果提交的参数同名,接收参数类型为String 那么SpringMVC会自动将参数进行拼接,以","隔开 2.如果接收参数为String[] 那么SpringMVC会自动为数值赋值 6.关于时间提交问题 1.如果页面输入的日期格式为 2016/12/3那么就会自动的封装 2.如果页面输入的日期格式为2016-12-3 那么就会报错(400) 解决: 通过日期绑定 7.配置文件上传解析器 1.该表单属性 encype="multipart/from-data" 2.参数处理 controller中添加file的name 3. 将file传到本地 通过fileUtils.writeByteArrayToFile(file,data) 4.配置文件上传解析器 注意:id写错则报错,此时的注意信息不易排查!! Spring.Web包下的CommonsmultiparResolver 8.SpringMVC中的转发和重定向 在Controller的return中添加前缀 return "redirect:/toAddUser.action"; 重定向 return "forward:/toAddUser.action"; 转发 9.restFul结构 页面结构: Url : /restFul/tom/19/110.action Controller中: 优点:可以不需要经过from直接提交参数 要求:提交的参数个数不宜太多,3-5个为宜

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档