zoukankan      html  css  js  c++  java
  • SpringMVC核心类和注解

    springMVC最重要的就是前端控制器DispatchServlet了。他是整个springMVC应用的核心。需要将它配置在web.xml中。

    1.DispatchServlet的配置

    <!--配置前端控制器-->
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--初始化加载配置文件 spring ioc 初始化-->
    //如果没有配置init-param,应用程序默认会到WEB-INF目录下找servletName-servlet.xml的配置文件
    //servletName指的是前端控制器的名称即<servlet-name>springmvc</servlet-name>中指定的springmvc
            <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <!--标记容器是否在启动的时候就加载这个servlet。
    当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
    当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
    正数的值越小,启动该servlet的优先级越高。-->
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>

    2.@Controller注解
    使用该注解时不需要实现Controller接口。只需要将该注解标注在类上面就表示他是一个控制器了,
    然后通过spring的扫描机制找到该类就行,<context:component-scan base-package="包名">
    与实现接口相比较,使用注解可以同时处理多个请求,而使用接口一次只能处理一个请求。

    3.@RequestMapping注解
    RequestMapping用于映射一个请求或者一个方法。可以标注在类上,也可以标注在方法上。例如:
    @Controller
    @RequestMapping("/jason")
    public class FirstController {
    @RequestMapping("/test")
    public String handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model)
    throws Exception {
    model.addAttribute("msg", " hello springMVC ");

    return "redirect:http://www.baidu.com";
    }
    }
    请求路径则变为http://localhost:8080/springmvc/jason/test

    3.1 @RequestMapping注解的属性
    @RequestMapping注解的属性有7个,都是可选属性,默认为value,@RequestMapping(value="/jason"),
    但是当只有一个属性的时候,与@RequestMapping("/jason")是一样的。
    @RequestMapping的属性如下表所示
    属性名 类型 描述
    name String 可选属性,用于为映射地址指定别名
    value String[] 可选属性,同时也是默认属性。用于映射一个请求和一种方法,可以标注在类和或一个方法上
    method RequestMethod[] 可选属性,用于指定该方法用于处理那种类型的请求方式,其请求方式包括get、post、head、options、put、patch、delete和trace,例如method=RequestMethod.GET表示只支持get请求,如果需要支持多个请求方式则需要通过{}写成数组的形式,并且多个请求之间用英文逗号分隔
    params String[] 可选属性,用于指定Reques中必须包含某些参数的值,才可以通过其标注的方法处理
    headers String[] 可选属性,用于指定Reques中必须包含某些指定的header的值,才可以通过其标注的方法处理
    consumes String[] 可选属性,用于指定处理请求的提交内容类型(Content-type),例如application/json、text/html等
    produces String[] 可选属性,用于指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型


    4.组合注解
    @GetMapping:匹配get方式的请求
    @PostMapping:匹配post方式的请求
    @PutMapping:匹配put方式的请求
    @DeleteMapping:匹配Delete方式的请求
    @PatchMapping:匹配Patch方式的请求

    get和post的区别:
    最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的;
    GET请求的URL传参有长度限制,而POST请求没有长度限制;
    GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制
    详情参见:https://www.cnblogs.com/logsharing/p/8448446.html

    5.请求
    处理方法的参数类型和返回类型
    请求处理方法的参数类型比较多,这里主要说返回类型

    请求处理的返回类型主要有:
    ModelAndView,Model,Map,View,String,void,HttpEntity<?>
    或者ResponseEntity<?>,Callable<?>,DeferredResult<?>

    最常见的就是ModelAndView,String,void了
    其中ModelAndView类型中可以添加Model数据,并指定视图;
    String类型的返回值可以跳转视图但是不能携带数据,要与Model参数一起搭配使用才行;
    而void类型主要在异步请求时使用,它只返回数据,不会跳转视图。

    String类型除此之外还可以(redirect)重定向和(forward)请求转发。
    重定向写法为 return "redirect:queryUser";请求转发写法为 return "forward:editUser";

    6.视图解析器
    <!--定义视图解析器-->
    <bean id="ViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    </bean>
    可以设置前缀和后缀,将路径简化。
    7.@RequestBody注解
    用于将请求体中的数据绑定到方法的形参中。该注解用在方法的形参上面。
    也就是将json格式数据映射绑定到形参上。
    8.@ResponseBody注解
    用于直接返回return对象。该注解用在方法上。也就是直接返回json格式数据。

    9.@PathVariable注解
    用于获取url路径中的参数。用在方法的形参上面,也就是形参名和url路径上的参数名对应起来。
  • 相关阅读:
    css3 边框、背景、文本效果
    Java JDBC连接MYSQL数据库教程
    waf平台常用方法总结
    java比较两个日期大小
    js控制的弹出层
    js时间大小判断写法demo
    PL/SQL Developer技巧
    杀Oracle死锁进程方法
    查看oracle数据库的连接数以及用户
    Oracle分散问题记录
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10612686.html
Copyright © 2011-2022 走看看