zoukankan      html  css  js  c++  java
  • 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;
    //    }
    
    }
  • 相关阅读:
    Babelfish
    【动态规划】货币面值
    contest 1.18
    contest 1.17
    contest 1.16
    contest 1.15
    contest 1.14
    contest 1.13
    contest 12.31
    [cf]Round #529 (Div. 3)
  • 原文地址:https://www.cnblogs.com/sunupo/p/10663057.html
Copyright © 2011-2022 走看看