一、spring的配置
1.配置组件扫描器
<context:component-scan base-package="com.taotao.service"></context:component-scan>
2..配置注解映射器和注解适配器
<mvc:annotation-driven>
3.配置视图解析器
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass"
value="org.springframework.web.servlet.view.JstlView"/>
<propertyname="prefix"value="/WEB-INF/jsp/"/>
<propertyname="suffix"value=".jsp"/>
</bean>
二、springmvc的参数绑定
1.默认支持的参数类型
httpServletRequest 通过request对象获取请求信息
HttpServletResponse 通过response处理响应信息
HttpSession 通过session对象得到session中存放的对象
Model/ModelMap ModelMap是Model接口的实现类,通过Model或ModelMap向页面传递数据
2.绑定简单类型
参数类型推荐使用包装数据类型,因为基础数据类型不可以为null
整形:Integer、int
字符串:String
单精度:Float、float
双精度:Double、double
布尔型:Boolean、boolean
说明:对于布尔类型的参数,请求的参数值为true或false。
处理器方法:
public String editItem(Modelmodel,Integer id,Boolean status) throwsException
请求url:
http://localhost:8080/xxx.action?id=2&status=false
3.绑定pojo请求的参数名称和pojo的属性名称一致,会自动将请求参数赋值给pojo的属性
注意:提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容
4.绑定包装pojo
5.自定义参数绑定 如日期类型的参数
自定义Converter
publicclass DateConverterimplements Converter<String,Date> {
@Override
public Dateconvert(Stringsource) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
try {
returnsimpleDateFormat.parse(source);
} catch (ParseExceptione) {
e.printStackTrace();
}
returnnull;
}
}配置Converter
<!--加载注解驱动 -->
<mvc:annotation-drivenconversion-service="conversionService"/>
<!--转换器配置 -->
<beanid="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<propertyname="converters">
<set>
<beanclass="cn.itcast.springmvc.convert.DateConverter"/>
</set>
</property>
</ bean >6.高级参数绑定
(1)绑定数组 如批量删除数据
(2)将表单中的数据绑定到list 如批量修改数据i
如在包装类中定义属性 private List<Items> itemList
在jsp中<c:foreach varstatus ='s'>
itemList[${s.index}].name
三 springmvc的注解
@RequestMapping
通过RequestMapping注解可以定义不同的处理器映射规则。
1.url路径映射
@RequestMapping(value="/item")或@RequestMapping("/item)
value的值是数组,可以将多个url映射到同一个方法
2.窄化请求映射
在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。
3.请求方法限定
使用@RequestParam常用于处理简单类型的绑定
value:参数名字,即入参的请求参数名字,如value='item_id'表示请求的参数区中的名字为item_id的参数的值将传入;
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报;
TTP Status 400 - Required Integer parameter'XXXX' is not present
defaultValue:默认值,表示如果请求中没有同名参数时的默认值
四 springmvc方法的返回值
1.返回ModelAndView
controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。
2.返回void在controller方法形参上可以定义request和response,使用request或response指定响应结果:
1)、使用request转向页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
2)、也可以通过response页面重定向:
response.sendRedirect("url")
3)、也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
3.返回字符串1)逻辑视图名
controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址 如:return"item/editItem"
2)Redirect重定向
Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。
如 :return"redirect:queryItem.action"3)forward转发
controller方法执行后继续执行另一个controller方法,如下商品修改提交后转向到商品修改页面,修改商品的id参数可以带到商品修改方法中。
如: return "forward:editItem.action"