SSM框架01--springmvc

springmvc的原理

springmvc的结构组成

一个中心

              前端控制器  DispatcherServlet 负责请求的转发和响应的提交

三大组件

              处理器映射器  HandlerMapping 负责根据url查找Handler

              处理器适配器  HandlerAdapter  负责执行Handler

              视图解析器    View resolver     负责解析view

经典MVC结构原理

SSH框架为例

springmvc框架原理

springmvc的执行流程

1.     用户发起请求,请求到DispatcherServlet前端控制器

DispatcherServlet(中央调度),负责requestresponse,调用处理器映射器查找Handler,调用处理器适配器执行Handler,有了前端控制器降低了各各组件之间的耦合性,系统扩展性提高。

2.     DispatcherServlet前端控制器请求处理器映射器HandlerMapping查找Handler

根据用户请求的url,根据一定的规则去查找(比如:xml配置,注解)

3.     HandlerMapping处理器映射器将Handler返回给前端控制器

4.     DispatcherServlet前端控制器调用HandlerAdapter处理器适配器

5.     HandlerAdapter处理器适配器执行Handler

6.     Handler执行完成,返回ModelAndView

ModelAndViewspringmvc的封装对象,将modelview封装在一起。

7.     HandlerAdapter处理器适配器将ModelAndView返回给前端控制器

8.     前端控制器调用视图解析器,进行视图解析,解析完成给前端控制器返回View

Viewspringmvc的封装对象,是一个接口,实现类包括jspviewpdfview……

9.     前端控制器调用view进行视图渲染,将模型数据填充到view(将model数据填充到request)响应给用户

10、前端控制器响应给用户

springmvc开发应用

配置式的springmvc开发

1.     web.xml文件中配置springmvc前端控制器

contextConfigLocation指定 springmvc的全局配置文件 如果 contextConfigLocation不指定,默认找配置文件名称:servletname+"-servlet.xml"

1.     springmvc.xml文件中配置三大组件

配置处理器映射器

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

配置处理器适配器

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

配置视图解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

2.     编写Handler

由于使用SimpleControllerHandlerAdapter适配器,要求编写的Handler实现Controller接口。

3.     编写jsp页面

4.     配置Handler

由于使用处理器映射器BeanNameUrlHandlerMapping,要求在spring的容器配置HandlerHandlername就是url

<bean id="hello_controller"name="/helloworld.action" class="cn.itcast.springmvc.Hello"/>

配置式开发的注意事项

1.      Handler的编写和配置要和映射器,适配器对应

处理器映射器和处理器适配器有多个,Handler的配置和编写根据处理器映射器和处理器适配器进行

2.      逻辑视图名

调用:modelAndView.setViewName指定逻辑视图名,如果这里指定jsp的完整路径也支持

springmvc.xml中修改视图解析器

修改action

注解式的spingmvc开发

1.     web.xml文件中配置springmvc前端控制器

2.     配置注解式springmvc三大组件

<!--注解映射器 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<!--注解适配器 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

3.     编写Handler

// 修改学生信息页面

   // @RequestMapping指定url

   @RequestMapping("/editstudent")

   public String editstudent(Model model) throws Exception {

      // 将学生信息的显示在页面

// 使用静态数据

      Student student = new Student();

      student.setName("张三");

      student.setAge(32);

      student.setBirthday(new Date());

      // 需要将学生信息传到页面

      model.addAttribute("student", student);

      // 返回逻辑视图名

      return "student/editstudent";

   }

   // 学生信息修改提交

   @RequestMapping("/editstudentsubmit")

   public String editstudentsubmit(Student student)throws Exception{

      System.out.println(student);

      return "success";

   }

 

一个url对应action的一个方法

4.     使用注解方式将action类配置到spring容器中

1.      spring文件中配置

2.      acton类添加注解

Struts2springmvc的不同

1.       springmvc的入口是servletstrutsfilter

2.       springmvc是基于方法开发,struts是基于类开发

action类中,一个url对应一个方法,对Handler对象,springmvc框架将一个方法封装到Handler中(只有一个method)。

Strutsaction类进行实例化。

Springmvc中的action可以使用单例也可以使用多例,建议使用单例(对相同的方法只new一个)。

Struts不能用单例,因为struts传递参数是通过成员变量。

Springmvc通过形参接收参数好处:更符合软件开发的思想,和service接口类似。

3.       Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl

Springmvc的参数解析过程

1.       页面请求数据:key/value

2.       参数解析器

Spring提供了很多参数解析器,将key/value的数据解析成形参,通过反射解析method中的参数(类型、名称),按照类型和名称规则解析形参

3.       属性编辑器:

key/value转换成pojo中的属性

4.       Action方法的形参

Springmvc开发常用注解

1.   @controller

标识该类为控制器类,@controller@service@repository分别对应了web应用三层架构的组件即控制器、服务接口、数据访问接口

2.   @RequestMapping

进行url映射,一个方法对应一个url,定义方法:在action方法上定义requestMapping

开发中经常使用根路径+子路径的方法管理url

例:

定义根路径:

       在类名上边定义requestMapping

@RequestMapping("/stu")

定义子路径:

       在方法上边定义requestMapping

       @RequestMapping("/querystudent")

最终访问路径:根路径+子路径:/stu/ querystudent.action

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值