web框架使用手册

    1. 引入web框架(jar文件,源码)

    **

    1. 引入web框架所需要的依赖

    ①文件上传相关的jar
    ②xml解析相关的jar
    ③json相关的jar
    **

    1. 在web.xml中配置核心入口(Servlet)

    通过设置Servlet的参数,指定映射关系配置的xml或注解

    1. <servlet>
    2. <servlet-name>mvc</servlet-name>
    3. <servlet-class>web.DispatcherServlet</servlet-class>
    4. <init-param>
    5. <param-name>classpath</param-name>
    6. <param-value>mvc.xml</param-value>
    7. </init-param>
    8. <init-param>
    9. <param-name>controller-scan</param-name>
    10. <param-value>com.controller,com.controller2</param-value>
    11. </init-param>
    12. <load-on-startup>1</load-on-startup>
    13. </servlet>
    14. <servlet-mapping>
    15. <servlet-name>mvc</servlet-name>
    16. <url-pattern>/</url-pattern>
    17. </servlet-mapping>
    1. 实现映射配置

    ①xml
    默认xml文件在classpath目录下
    具体的名称Servlet定义时的参数决定(见上方代码第六行)
    xml配置如下:
    image.png

    ②注解
    需要@Controller、@RequestMapping、@RequestParam注解实现映射的配置
    image.png**

    @RequestMapping("/test2")
        public void t2(@RequestParam("username")String s , Car car, HttpServletRequest req){}
    
        @RequestMapping("/test3")
        public void t3(Car car){
            System.out.println(car+"123");
        }
    
        @RequestMapping("/test4")
        public void t4(@RequestParam("cname") String cname , @RequestParam("file") MultipartFile file){
            System.out.println(cname);
        }
    

    4.1
    请求时如果传递了简单的参数(无论是普通请求还是文件上传),在controller的方法中按照业务需求定义方法参数。
    ①按照需求定义参数类型,框架会自动地将接收到的参数实现类型转换
    原来只能是String自己转换,现在框架负责转换,基本数据类型、String、文件类型等都能转换
    ②需要使用@RequestParam注解指定参数的名字(见上方代码第10行)
    4.2
    请求时传递了多个参数,按照业务恰好可以组成一个对象
    原来需要自己一个参数一个参数的获取,转换,组装,现在只需要在controller方法定义对象类型的参数,框架会自动组装,要求对象的属性名要和请求的参数名一致(见上方代码t3)
    4.3
    在controller的方法中处理请求时,还需要使用一些Servlet原生对象,request、response、session,只需要在controller的方法中直接定义上述类型的参数即可
    4.4
    controller处理完请求后,返回字符串,表示转发访问网页

    @RequestMapping("/test5")
        public String t5(){
            //request.getRequestDispatcher("07.jsp").forward(req,resp);
            return "07.jsp" ;
        }
    

    4.5
    controller处理完请求后,返回ModelAndView对象,表示转发访问网页并携带参数

    @RequestMapping("/test6")
        public ModelAndView t6(){
            //request.setAttribute("cname","benz");
            //request.setAttribute("price",400000);
            //request.getRequestDispatcher("07.jsp").forward(req,resp);
            ModelAndView mv = new ModelAndView();
            mv.setViewName("07.jsp");
            mv.addObject("cname","benz");
            mv.addObject("price",400000);
            return mv ;
        }
    

    4.6
    controller处理完请求后,返回带有redirect:前缀字符串,表示重定向访问网页

    @RequestMapping("/test0")
        public String t0(){
            //response.sendRedirect("07.jsp");
            return "redirect:07.jsp" ;
        }
    

    4.7
    controller处理完请求后,返回ModelAndView对象,表示重定向访问网页并携带参数

    @RequestMapping("/test7")
        public ModelAndView t7(){
            //response.sendRedirect("07.jsp?cname=benz&price=400000");
            ModelAndView mv = new ModelAndView();
            mv.setViewName("redirect:07.jsp");
            mv.addObject("cname","benz");
            mv.addObject("price",400000);
            return mv ;
        }
    

    4.8
    controller处理请求后,方法配合@ResponseBody表示直接响应
    如果是简单类型(String、int、double、boolean等)直接返回字符串
    如果是其他类型(集合、对象),会先转换成json格式的字符串,再响应

    @RequestMapping("/test8")
        @ResponseBody
        public String t8(){
            return "hello" ;
        }
        @RequestMapping("/test9")
        @ResponseBody
        public Car t9(){
            Car car = new Car(1,"audi","white",50000);
            return car ;
        }
    

    image.png image.png