Spring课程安排

 1.springmvc框架

  1.1什么是springmvc

  springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合

springmvc是一个基于mvc的框架

  

  1.2 什么是mvc

  mvc是一个设计模式,mvc在B/S系统下的应用

  前端控制器:比如structs2的filter,springmvc就是dispatcher-servlet

  在struct中国的action就是后端控制器,springmvc就是Handler处理器(平常叫做controller)

  

  1.3springmvc框架

   

    

  8.根据逻辑视图名解析成真正的视图(jsp)

  10.模型数据在modelandview中

 订单表order 订单明细表orderdetail

用户表user 商品信息表item

配置handler,非注解的Mapping与Adapter

<!-- 配置Handler -->
    <bean id="itemsController1" name="/queryItems_test.action" class="cn.itcast.ssm.controller.ItemsController1" />
    <!-- 配置另外一个Handler -->
    <bean id="itemsController2" class="cn.itcast.ssm.controller.ItemsController2" />
    



<!-- 处理器映射器      将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url) 
    所有的映射器都实现 HandlerMapping接口。
    -->
    <!-- 第一种映射器,根据handler的name=“*********”来映射url ,不要要制定handler的id-->
    <bean
        class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
        
    <!--简单url映射  -->
    <!-- 第二种映射器,根据handler的id=“*********”来映射url-->
    <!-- 多个映射器可以并存,就是说多个url地址都可以访问itemsController1 ,根据name或者根据prop的(一个或多个)key-->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <!-- 对itemsController1进行url映射,url是/queryItems1.action -->
                <prop key="/queryItems1.action">itemsController1</prop>
                <prop key="/queryItems2.action">itemsController1</prop>
                <prop key="/queryItems3.action">itemsController2</prop>
            </props>
        </property>
    </bean>




<!-- 处理器适配器 所有处理器适配器都实现 HandlerAdapter接口 -->
    <!-- 用SimpleControllerHandlerAdapter,必须实现Controller接口,eg:itemsController1-->
    <bean
        class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!-- 另一个非注解的适配器 -->
    <!-- 用HttpRequestHandlerAdapter,必须实现HttpRequestHandler接口,ItemsController2-->
    <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>



    <!-- 视图解析器
    解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包
     -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    </bean>

public class ItemsController1 implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) 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的setAttribut,在jsp页面中通过itemsList取数据
        modelAndView.addObject("itemsList", itemsList);
        
        //指定视图
        modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");

        return modelAndView;
    }

}
public class ItemsController2 implements HttpRequestHandler {

    @Override
    public void handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        
        //调用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);
        //设置模型数据
        request.setAttribute("itemsList", itemsList);
        //设置转发的视图
        request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response);
        
        //使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据

/*
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write("json串");*/

        
    }


}

 注解的Mapping与Adapter

handler用组件扫描注册为bean,

    <!-- 对于注解的Handler可以单个配置
    实际开发中建议使用组件扫描
     -->
    <!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> -->
    <!-- 可以扫描controller、service、...
    这里让扫描controller,指定controller的包
     -->
    <context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>

    
    
    <!--注解映射器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <!--注解适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    
    <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
    mvc:annotation-driven默认加载很多的参数绑定方法,
    比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
    实际开发时使用mvc:annotation-driven
     -->
    <!-- <mvc:annotation-driven></mvc:annotation-driven> -->

    <!-- 视图解析器
    解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包
     -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <!-- 配置jsp路径的前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 配置jsp路径的后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>


 
//使用Controller标识 它是一个控制器
@Controller
public class ItemsController3 {
    
    //商品查询列表
    //@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
    //一般建议将url和方法写成一样
    @RequestMapping("/queryItems")
    public ModelAndView queryItems()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苹果手机!");
        
        Items items_3=new Items();
        items_3.setName("Pad");
        items_3.setPrice(3000f);
        items_3.setDetail("平板");
        
        itemsList.add(items_1);
        itemsList.add(items_2);
        
        //返回ModelAndView
        ModelAndView modelAndView =  new ModelAndView();
        //相当 于request的setAttribut,在jsp页面中通过itemsList取数据
        modelAndView.addObject("itemsList", itemsList);
        
        //指定视图
        //下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为
        //modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
        //上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀
        modelAndView.setViewName("items/itemsList");
        
        return modelAndView;
        
    }
    
    //定义其它的方法
    //商品添加
    //商品修改
    

//    @Override
//    public ModelAndView handleRequest(HttpServletRequest request,
//            HttpServletResponse response) 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的setAttribut,在jsp页面中通过itemsList取数据
//        modelAndView.addObject("itemsList", itemsList);
//        
//        //指定视图
//        modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
//
//        return modelAndView;
//    }

}
原文地址:https://www.cnblogs.com/sunupo/p/10663057.html