一、注解映射器和适配器
1,组件扫描器
使用组件扫描器省去在spring容器配置每个controller类的繁琐。
<!--开启注解扫描 -->
<context:component-scan base-package="com.itcast.*"/>
2,RequestMappingHandlerMapping
注解处理器映射器,对勒种标记@RequestMapping的方法进行映射。
<!--
作用:替我们自动配置最新的注解器映射器、注解器适配器
-->
<mvc:annotation-driven />
3,视图解析器
在spring.mvc.xml文件配置如下:
<!--
配置视图解析器
作用:在controller中指定页面路径的时候不用写完整路径,
可以直接写页面,去掉拓展的名称。
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
4,@RequestMapping 映射的方法默认支持的方法参数类型
- HttpServletRequest:通过request对象获取请求信息
- HttpServletResponse:通过response处理响应信息
- HttpSession:通过session对象得到session中存放的对象
- Model/ModelMap
ModleMap是Model接口的实现类,通过Modle或ModelMap向页面传递数据。
model.addAttribute("item", item);
页面通过${item.XXXX}获取item对象的属性值。
注意:如果使用Model就不能使用ModelAndView对象,Model对象
可以向页面传递数据,View对象可以使用String返回值代替。
本质都是使用request请求向jsp传递数据。
二、方法参数的绑定
1,@RequestParam 常用于处理简单类型的绑定
@RequestMapping("/itemEdit/{id}")
public String itemEdit(@PathVariable("id")
这里id代表接收的参数名,必须与请求的参数名一致,否则获取不到值。
2,绑定pojo类型
假如表单提交数据
<input type="text" name="name"/>
<input type="text" name="price"/>
pojo定义
public class Items{
private String name;
private String price;
}
请求的参数名和pojo的属性名称一致,会自动将请求参数赋值给pojo属性
@RequestMapping("/updateitem")
public String updateItem(Items items) {
itemService.updateItem(items);
return"success";
}
注意:如果提交日期类型的数据需要用自定义参数绑定
3,自定义参数绑定
由于日期数据有很多种格式,springMvc没有办法把字符串转化成日期
类型,所以需要自定义参数绑定。
(1)自定义Convert
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
returnsimpleDateFormat.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
returnnull;
}
}
(2)配置Convert
<!--注解驱动-->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 配置自定义转换器 注意: 一定要将自定义的转换器配置到注解驱动上 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 指定自定义转换器的全路径名称 -->
<bean class="cn.contorller.converter.DateConverter" />
</set>
</property>
</bean>
三、处理请求乱码问题。
1,post请求乱码
web.xml中加入
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<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>
2,get请求乱码
String uName = request.getParamter("userName");
userName = new String(uName.getBytes("ISO8859-1"),"utf-8")