1、 复习: 1)MVC模型 View:负责展示处理结果 JSP/HTML/FreeMarker/Velocity Controller:负责接收请求、验证、调用Model Servlet/Filter/POJO Model:负责业务功能(数据库、IO、Other) JavaBean 常见的MVC模型:SpringMVC Struts1 Sturts2 ThinkPHP 2)SpringMVC SpringMVC是一个带前端控制器的MVC模型,主要关注的是Controller(FrontController+RequestHandler),对
2、View有部分涉及(提供了几个标签),并没有涉及到Model。 SpringMVC的处理流程: (1)服务器一启动,SpringMVC创建BeanFactory,创建所有Bean对象 (2)客户端发起请求,被前端控制器拦截并解析 (3)Spring做URL-Handler映射,调用Hanlder (4)Handler调用接收请求、验证、调用业务逻辑,返回viewName (5)Spring查找ViewResolver,装配出一个可以请求转发的完整页面名 (6)View发送结果给客户端 3)使用SpringMVC的步骤: (1)导入jar
3、 (2)声明前端控制器 DispatcherServlet
(3)创建applicationContext-mvc.xml
(4)声明URL-Handler映射
(5)创建Handler、Service、Dao,声明为Spring中的Bean
(6)声明ViewResolver
(7)创建jsp
1.DispatcherServlet的url-pattern可取值有如下三种形式:
(1)
4、拦截所有的请求,包括Handler、js、css、jpg.....
注意:url-pattern不能指定为/*, 会导致handler能够被调用,但无法请求转发到jsp
2.使用注解实现URL-Handler的映射
(1)声明使用注解实现映射applicationContext.xml
5、) public String add(){ return viewName; } } 2.使用注解进行URL-Handler映射后,Hanlder获取请求参数的方式: (1)Controller方法添加HttpServletRequest类型的形参即可,Spring调用此Controller方法时,会注入需要的request对象——不足:Controller依赖于一个Servlet容器对象,不便于进行独立的单元测试 public String add(HttpRequestServlet request){ } (2)Controller方法中声明
6、与请求参数一样名称的形参即可——让Controller与Servlet容器解耦 public String add(String uname, String upwd, int uno){ } 若请求参数的名称与Controller方法的形参名不一致,可以使用@RequestParam进行注解 public String add(@RequestParam(“userName”)String uname){ } (3)若Controller方法中需要注入的请求参数很多,可以封装为实体类,只要实体类的属性名与请求参数名一致,也可以实现注入: public St
7、ring add(Message msg, int uno){ }
注意:有些情况下,如Controller方法向获取客户端所在IP地址,需要执行request.getRemoteIP(),request.getSession()只能使用方法一。
补充知识点:
网页内容的相对地址问题:
f1/f2/1.html:
那么图片的路径就是相对于当前HTML文件,即要去f1/f2/img/1.jpg文件,若把1.html放到路径下,图片的相对地址也会跟着改变,可能需要大量修改
解决方法:
8、