javaSpringMVC第一天随笔和注解以及过滤器的使用


@RequestMapping注解

@RequestMapping注解可在类上或方法上注释分别可代表一级和二级包括。
属性的作用:value:用于指定请求的 URL。它和 path 属性的作用是一样的。
method:用于指定请求的方式。
params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样。
例如:
params = {“accountName”},表示请求参数必须有 accountName
params = {“moeny!100”},表示请求参数中 money 不能是 100。
headers:用于指定限制请求消息头的条件。
注意:在配置jsp页面的请求路径时如果用的相对路径,不要在访问 URL 前面加/,否则无法找到资源。(被坑过)

请求参数的绑定

springMVC是一个强大的框架当你在页面上设定了请求参数时,只要确保参数名和bean对象的属性一一对应就会自动封装到对象中相当于自动帮你用了set方法封装,就算参数里还有引用参数只要调用如a.b就行

解决post方法中文乱码的过滤器

配置解决中文乱码的过滤器在web.xml中
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
   springMVC框架提供的过滤器
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
初始话参数
    <init-param>
   参数名字
      <param-name>encoding</param-name>
      参数内容
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    拦截地址全部
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  

自动类型转换的异常

比如日期的转化换如果按格式写如x/x/x这种标准日期写法就可以自动转换,如果如x-x-x这种自定义的就不行识别不出来

解决方法:自定义数据类型装换
第一步:定义一个类,实现 Converter 接口,该接口有两个泛型。

public interface Converter<S, T> {//S:表示接受的类型,T:表示目标类型
/**
* 实现类型转换的方法
*/
@Nullable
T convert(S source);
}
/**
* 自定义类型转换器

*/
public class StringToDateConverter implements Converter<String, Date> {
/**
* 用于把 String 类型转成日期类型
*/
@Override
public Date convert(String source) {
DateFormat format = null;
try {
if(StringUtils.isEmpty(source)) {
throw new NullPointerException("请输入要转换的日期");
}
format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(source);
return date;
} catch (Exception e) {
throw new RuntimeException("输入日期有误");
}
}
}
```<!--配置自定义类型转换器-->
    <bean id="ConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!--属性converters是个set类型,所以还要写个set标签-->
        <property name="converters">
            <set><!--注册自己的类型转换代码,这样转换的服务中就有自己的类了-->
                <bean  class="cn.itcast.utils.StringToDateConverter"></bean>
            </set>
        </property>
    </bean>
  




# 小知识
1.服务器端上交的数据都是字符串类型的,想要自己用就得转换(应该咋iweb阶段的学习中都了解过)
2.对servlet的设置

```java
<servlet>
    <!--设定中央控制器-->
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--初始化方法-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--服务器创建时就创建-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!--使servlet被请求到-->
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

更多注解的使用

1.RequestParam
使用说明:在方法参数中定义相当于给个别名
作用:
把请求中指定名称的参数给控制器中的形参赋值。
属性:
value:请求参数中的名称。
required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

2.RequestBody
使用说明:方法参数中定义
作用:
用于获取请求体内容。(全部参数)直接使用得到是 key=value&key=value…结构的数据。
get 请求方式不适用。(应为没请求题,参数全被打到地址栏上了)
属性:
required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值
为 false,get 请求得到是 null。

3.PathVaribale
使用说明:在方法参数中定义(要跟地址中的名字相同)
作用:
用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。
url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。
属性:
value:用于指定 url 中占位符名称。
required:是否必须提供占位符。

@RequestMapping("/usePathVariable/{id}")
public String usePathVariable(@PathVariable("id") Integer id){
System.out.println(id);
return "success";
}

小贴士:REST 风格URL:请求地址一样根据不同的请求方式执行不同的方法。如果方法相同可以根据不同参数在地址加上参数的值

4.RequestHeader
使用说明:在方法参数中定义
作用:
用于获取请求消息头。
属性:
value:提供消息头名称
required:是否必须有此消息头
注:
在实际开发中一般不怎么用。

5.CookieValue
使用说明:在方法参数中定义
作用:
用于把指定 cookie 名称的值传入控制器方法参数。
属性:
value:指定 cookie 的名称。
required:是否必须有此 cookie。

6.ModelAttribute
使用说明:也可以拿到值,可以提前设定值如果被提交了就用提交的值,没有再用设定值。返回值会被下一个方法拿到
作用:
该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。
出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
出现在参数上,获取指定的数据给参数赋值。
属性:
value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
应用场景:
当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。
例如:
我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数
据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

7.SessionAttribute
使用说明:作用在类上
作用:
用于多次执行控制器方法间的参数共享。
属性:
value:用于指定存入的属性名称到request域中
type:用于指定存入的数据类型。

model

  • @return
  • Model 是 spring 提供的一个接口,该接口有一个实现类 ExtendedModelMap
  • 该类继承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子类
  • 可以把数据用键值对的形式存入request域中,也可以取出session域中的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值