首页 springMVC框架入门

springMVC框架入门

淚 · 彦 2018-10-8 0 483


映射器:根据url找handler。有两个非注解的映射器,有注解的映射器(实际开发使用)。

适配器:根据对应的规则执行handler。有两个非注解的适配器,有注解的适配器(实际开发使用)

多个映射器,多个适配器都可以并存。


使用非注解的开发方法存在弊端,里面只有一个方法,会使代码比较乱;

public ModelAndView handleRequest(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception

使用注解的方法,可以写多个方法,方法名自己定义使用注解@controller即可;


源码分析:

前端控制器执行Dodispather()方法,

获取映射器,然后得到相应的handler,

获取适配器,执行相应的handler即controller,

执行完之后,得到结果modelandview,

视图渲染,将modleandview填充到request域;


非注解的方法:

在web.xml中配置前端控制器:

<servlet>
  <servlet-name>springmvc</servlet-name>
  <!-- 此处应加载源码,但是没有。。。。。。。所以没有提示 -->
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- 通过contextConfigLocation配置springmvc加载的配置文件
  (配置处理器映射器适配器等)如果不配置,默认加载的是/WEB-INF/springmvc-servlet.xml
   -->
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-servlet.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <!-- 有三种配置方式 -->
     <url-pattern>*.action</url-pattern>
  </servlet-mapping>

<!-- 配置handler -->
  <bean name="/queryItems.action" class="cn.itcast.ssm.controller.ItermsController1">
  </bean>


ItermsController1实现controller接口,实现方法;

public class ItermsController1 implements Controller {

public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
//调用service查找数据库,查询商品列表,这里先使用静态的数据模拟
List<Items> itemsList=new ArrayList<Items>();
//向静态list中填充数据
Items items_1 =new Items();
items_1.setName("联想笔记本");
items_1.setPrice(6000f);
items_1.setDetail("ThinkPad T430 联想笔记本电脑!");

Items items_2 = new Items();
items_2.setName("苹果手机");
items_2.setPrice(5000f);
        items_2.setDetail("iphone6苹果手机!");
itemsList.add(items_1);
itemsList.add(items_2);
        //返回ModelAndView
ModelAndView modelAndView=new ModelAndView();
//相当于request的setAttribute,在jsp页面中通过itemsList取数据
modelAndView.addObject("itemsList",itemsList);
//指定视图
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
return modelAndView;
}
}

<!-- 配置映射器 
将bean的name作为url进行查找,需要在配置handler时指定beanname(即URL)
-->
   <bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"
    />


<!-- 配置处理器适配器 ,查看源代码(此处没有加载),发现所有的处理器适配器都实现了handerAdapter-->
  <bean 
  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"
  /> 

<!-- 配置视图解析器 -->
  <bean 
  class="org.springframework.web.servlet.view.InternalResourceViewResolver"
   />


使用注解的开发方法:

在spring.xml中添加注解的映射器,适配器,注解的映射器和适配器必须配套使用;

写controller类,使用注解:@controller;@RequestMapping(“/queryItems.action”);将方法和url映射,后面的.action可要可不要。

在spring.xml中配置handler,可以使用组件扫描进行配置,因为可能handler会比较多,组件扫描比较方便。




分享本文至:
免责声明:本文仅代表作者个人观点,与本网站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
作者: 淚 · 彦 本文最后编辑于2018-10-8 04:30:26
淚 · 彦

若一切皆善,便一切皆美

作者的微博

发表评论: