SpringMVC学习笔记

相关标签@RequestMapping可以在方法也是可以在类上面

@AliasFor("path")
String[] value() default {};

@AliasFor("value")
String[] path() default {};

RequestMethod[] method() default {};

method()为请求方式

如果是多个属性的话value不能省略

method的请求方式

public enum RequestMethod {
    GET,
    HEAD,
    POST,
    PUT,
    PATCH,
    DELETE,
    OPTIONS,
    TRACE;

    private RequestMethod() {
    }
}

里面其他的属性

 String[] params() default {};

    String[] headers() default {};

    String[] consumes() default {};

    String[] produces() default {};
}

其中的params为相关参数,如果请求中有相关参数才能进行匹配

请求参数的绑定

1.请求参数的绑定说明:说简单点就是将请求的参数进行匹配到相关的方法,方法中的参数拿到相关的参数数据,这个过程为mvc底层实现,也就是请求参数的绑定

  1. 绑定机制

  2. 表单提交的数据都是k=v格式的usernamne=haha&password=123

  3. springmvc的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的

  4. 要求:提交表单的name和参数的名称是相同的

2.支持的数据类型

  1. 基本数据类型和字符串类型(在相关的请求对应的方法参数相对应)

  2. 实体类型(先建立一个实体类与要交的数据相对应,提交的数据会被封装到这个类中从而被使用

    @RequestMapping(value = "/hello")
    public String hello(Account account){
        System.out.println("你好啊逗比----------"+account);
        return "success";
    }
    
    <form action="user/hello" method="post">
        姓名:<input type="text" name="name"/><br>
        性别:<input type="text" name="sex"/><br>
        年龄:<input type="text" name="old"/><br>
        <input type="submit" value="确定">
    </form>
    

    上面实体类压根就不用param属性,只需要相关的方法有参数对象

  3. 集合数据类型

    这种也差不多例如------------list[0].name

    姓名:
    性别:
    年龄:

2.基本数据类型和字符串类型

  1. 提交表单的name和参数的名称是相同的
  2. 区分大小写

3.实体类型

  1. 提交表单的name和javabean中的属性名称需要一致
  2. 如果一个javabean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性例如:address.name

过滤器,是不是很耳熟,就是那玩意,常用于解决中文乱码的问题

<filter>
    <filter-name>charactereccodingfilter</filter-name>
    <filter-class>org.springframework.web.filter.characterencodingfilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>charactereccodingfilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在某些特殊情况下就需要自定义接口,要自定义它咋知道就需要实现Converter<a,b>,a为被转换的类型,b为转换后的类型,当定义后自己的后,还得告诉它你有特殊格式转换

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="相关实现接口的类路径"></bean>
        </set>
    </property>
</bean>

这种转换器就前端请求的数据到后端会被自动转换的设置

如果是想获取servlet原始的方法如requestion可以在相关应的请求方法参数直接为servlet中的相关对象,但是这种偶合性太强不建议使用

@RequestMapping("/you")
public  String you(HttpRequest request){
    return "your";
}

响应返回值

当返回值是字符串时,就不用说了

@RequestMapping(value = "/hello")
public String hello(Account account){
    System.out.println("你好啊逗比----------"+account);
    return "success";
}

如果是想存值的,返回给前端获得如下,在方法的参数中加入model参数

@RequestMapping("/you")
public  String you(Model model){
    Account account=new Account();
    account.setName("doubi");
    account.setSex("nan");
    account.setOld(12);
    model.addAttribute("user",account);
    //这样前端就能利用request获取
    return "your";
}

当返回值类型为void时

可以利用servlet中的转发的方式类进行跳转

@RequestMapping("/you")
public  void you(HttpRequest request){
    request.getRequestdispatcher("/web-inf/pages/success.jsp").forward(request,response);
}

也可以用重定向

@RequestMapping("/you")
public  String you(HttpRequest request,HttpResponse response){
    //设置中文乱码
    response.setCharacterencoding("utf-8");
    response.setContententType("text/html;charset=utf-8")
    response.sendredirect("request.getcontextpath()+"+"/web-inf/pages/xxx.jsp")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值