zoukankan      html  css  js  c++  java
  • 第九章.处理器映射器和适配器

    本次课程在 第八章 基础上进行的!!!

     

    非注解的处理器映射器和适配器

    一.SimpleUrlHandlerMapping

    找到springmvc.xml文件

    找到下面的代码进行注释

    <!--  
    <bean name="/query_test.action" class="cn.com.mvc.controller.FruitControllerTest"></bean>
    -->

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

     并且添加代码:

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/queryFruits_test1.action">fruitController</prop>
                <prop key="/queryFruits_test2.action">fruitController</prop>
            </props>
        </property>
    </bean>
    
    <bean id="fruitController"  class="cn.com.mvc.controller.FruitControllerTest"></bean>

     测试代码的地址是否可以成功访问

     二.

    在controller包下创建新的类,如下图

    FruitControllerTest2.java代码实现:

    public class FruitControllerTest2 implements HttpRequestHandler {
        private FruitsService fruitsService = new FruitsService();
        @Override
        public void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
            //模拟Service获取水果商品列表
            List<Fruits> fruitsList = fruitsService.queryFruitsList();
            //设置模型数据
            arg0.setAttribute("fruitsList", fruitsList);
            //设置转视图
            arg0.getRequestDispatcher("/WEB-INF/jsp/fruits/fruit.jsp").forward(arg0, arg1);    
        }
    }

     找到springmvc.xml

    添加代码

    注意红颜色的部分

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
        <props>
          <prop key="/queryFruits_test1.action">fruitController</prop>
          <prop key="/queryFruits_test2.action">fruitController</prop>


          <prop key="/queryFruits_test3.action">fruitController2</prop>
        </props>
      </property>
    </bean>


    <bean id="fruitController2" class="cn.com.mvc.controller.FruitControllerTest2"></bean>


    <!-- /queryFruits_test3.action -->
    <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>

     进行测试:

    三.JSON

    修改FruitControllerTest2.java文件

    public class FruitControllerTest2 implements HttpRequestHandler {
    
        private FruitsService fruitsService = new FruitsService();
    
        @Override
        public void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
            //模拟Service获取水果商品列表
            List<Fruits> fruitsList = fruitsService.queryFruitsList();
            //将fruitsList转为JSON串
            String josnInfo = convertListToJson(fruitsList);
            //设置返回格式
            arg1.setCharacterEncoding("utf-8");
            arg1.setContentType("application/json;charset=utf-8");
            //写出JSON
            arg1.getWriter().write(josnInfo);
            
        }
        
        private String convertListToJson(List<Fruits> fruitsList){
            
            StringBuilder builder = new StringBuilder();
            builder.append('[');
            for(Fruits fruits: fruitsList){
                builder.append('{');
                builder.append(""name":"").append(fruits.getName()).append("",");
                builder.append(""price":"").append(fruits.getPrice()).append("",");
                builder.append(""producing_area":"").append(fruits.getProducing_area()).append("",");
                builder.append("},");
            }
            builder.deleteCharAt(builder.length() - 1);
            builder.append("]");    
            return builder.toString();
        }
    }

    其余不变访问中的地址

    注意此时需要在浏览器上测试

    http://localhost:8080/SpringMVC_1/queryFruits_test3.action

    注解的处理器映射器和适配器

    在下图的位置新建一个类: 

    FruitControllerTest3.java

    //注解的Handler类
    //使用@Controller来标识他是一个控制器
    @Controller
    public class FruitControllerTest3 {
    
        private FruitsService fruitsService = new FruitsService();
        
        @RequestMapping("/queryFruitsList")
        public ModelAndView queryFruitsList(){
            
            //模拟Service取水果商品列表
            List<Fruits> fruitsList = fruitsService.queryFruitsList();
            //返回ModelAndView
            ModelAndView modelAndView = new ModelAndView();
            //相当于request的setAttribute,在jsp页面通过fruitsList获取数据
            modelAndView.addObject("fruitsList", fruitsList);
            modelAndView.setViewName("/WEB-INF/jsp/fruits/fruit.jsp");
            return modelAndView;
        }
        
    }

     在springmvc.xml文件中添加代码:

    <context:component-scan base-package="cn.com.mvc.controller"></context:component-scan>
    
    
    <!-- z注解 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    <!-- 注解适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

    测试 :

  • 相关阅读:
    【微信小程序】后台访问-net::ERR_CONNECTION_REFUSED 及 不是request合法域名问题 的解决
    【微信小程序】引用FontAwesome字体
    【微信小程序】开发工具使用技巧(七)
    【微信小程序】小程序扩展能力(六)
    【微信小程序】小程序云开发(五)
    【微信小程序】小程序框架(四)
    javascript学习笔记
    HTML&CSS学习笔记
    mysql学习笔记
    c++ primer 笔记 (四)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/9822490.html
Copyright © 2011-2022 走看看