执行流程
ModelAndView
@Controller
public class HelloController {
@RequestMapping("hello")
public ModelAndView hello(){
System.out.println("hello springmvc....");
//创建ModelAndView对象
ModelAndView mav = new ModelAndView();
//设置模型数据
mav.addObject("msg", "hello springmvc...");
//设置视图名字
mav.setViewName("/WEB-INF/jsp/hello.jsp");
return mav;
}
}
Model
@RequestMapping("itemEdit")
public String itemEdit(@RequestParam("id")Integer ids,Model m,ModelMap model){
//查询商品信息
Item item = itemServices.getItemById(ids);
//通过Model把商品数据返回页面
model.addAttribute("item", item);
//返回String视图名字
return "itemEdit";
}
id参数绑定
@RequestMapping("itemEdit")
public ModelAndView itemEdit(@RequestParam(value="id",required=true,defaultValue="1")Integer ids){
ModelAndView mav = new ModelAndView();
//查询商品信息
Item item = itemServices.getItemById(ids);
//设置商品数据返回页面
mav.addObject("item", item);
//设置视图名称
mav.setViewName("itemEdit");
return mav;
}
参数绑定pojo对象
@RequestMapping("updateItem")
public String updateItem(Item item,Model model){
//更新商品
itemServices.update(item);
//返回商品模型
model.addAttribute("item", item);
//返回担任提示
model.addAttribute("msg", "修改商品成功");
//返回修改商品页面
return "itemEdit";
}
参数绑定包装的pojo
要点:通过点(.)传递属性.
public class QueryVo{
private Item item;
//..省略get和set方法
}
@RequestMapping("queryItem")
public String queryItem(QueryVo vo){
//打印传入参数
System.out.println(vo);
//返回视图
return "itemList";
}
//jsp中修改
<input name='item.name' />
<input name='item.age' />
参数自定义参数绑定
<td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
/**
* 日期转换器
* S:source 要转换的源类型
* T:目标,要转换成的数据类型
* @author Steven
*
*/
public class DateConvert implements Converter<String, Date> {
@Override
public Date convert(String source) {
Date result = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
result = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
}
7.6.3配置日期转换器
<!-- 配置注解驱动,相当于同时使用最新处理器映射跟处理器适配器,对json数据响应提供支持 -->
<!-- 使用自定义转换器 -->
<mvc:annotation-driven conversion-service="MyConvert" />
<!-- 定义转换器 -->
<bean id="MyConvert" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.itheima.springmvc.utils.DateConvert" />
</set>
</property>
</bean>
参数绑定数组类型
//基于批量删除商品操作完成参数传递。
public class QueryVo {
private Item item;
private Integer[] ids;
//..省略get和set方法
}
<c:forEach items="${itemList }" var="item" varStatus="status">
<tr>
<td><input type="checkbox" name="ids" value="${item.id}"></td>
<td><input type="text" name="itemList[${ status.index }].name" value="${item.name }">
<input type="hidden" name="itemList[${ status.index }].id" value="${item.id}">
</td>
<td><input type="text" name="itemList[${ status.index }].price" value="${item.price }"></td>
<td><input type="text" name="itemList[${ status.index }].createtime" value='<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>'></td>
<td><input type="text" name="itemList[${ status.index }].detail" value="${item.detail }"></td>
<td><a href="${pageContext.request.contextPath }/itemEdit/${item.id}.action">修改</a></td>
</tr>
</c:forEach>
//
@RequestMapping("queryItem")
public String queryItem(QueryVo vo, Integer[] ids) {
System.out.println(vo);
//输出传入的数组
if (ids != null && ids.length > 0) {
for (Integer id : ids) {
System.out.println("传入的商品列表分别为:" + id);
}
}
return "itemList";
}
id参数绑定List类型的绑定
public class QueryVo {
private Item item;
private Integer[] ids;
private List<Item> itemList;
//..省略get set
}
@RequestMapping("queryItem")
public String queryItem(QueryVo vo, Integer[] ids) {
if (vo.getItem() != null) {
System.out.println(vo.getItem());
}
// 省略查询商品操作
if (ids != null && ids.length > 0) {
for (Integer integer : ids) {
System.out.println(integer);
}
System.out.println("vo.length:" + (vo.getIds() == null ? 0 : vo.getIds().length));
}
return "itemList";
}
@RequestMapping注解的使用



Request和Response,Redirect,forward



异常处理---创建全局异常处理器
/**
* 全局异常处理器
* @author Steven
*
*/
public class CustomerException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
Exception e) {
//记录日志
e.printStackTrace();
//错误消息
String msg = "很抱歉,系统发生异常了,请联系管理员";
//响应用户错误提示
ModelAndView mav = new ModelAndView();
//返回错误消息
mav.addObject("msg", msg);
//响应错误提示页面
mav.setViewName("msg");
return mav;
}
}

自定义异常
/**
* 自定义异常
* @author Steven
*
*/
public class MyException extends Exception {
//错误消息
private String msg;
public MyException() {
super();
}
public MyException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
**
* 全局异常处理器
* @author Steven
*
*/
public class CustomerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
Exception e) {
ModelAndView mav = new ModelAndView();
String msg = "抱歉,系统发生异常了,请联系管理员";
//判异常是否自定义
if(e instanceof MyException){
msg = ((MyException) e).getMsg();
}
mav.addObject("msg", msg);
mav.setViewName("msg");
return mav;
}
}
图片上传
<!-- 配置多媒体处理器 -->
<!-- 注意:这里id必须填写:multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 最大上传文件大小 -->
<property name="maxUploadSize" value="8388608" />
</bean>
<form id="itemForm" action="${pageContext.request.contextPath }/updateItem.action" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="${item.id }" />
</form>
//图片上传用MultipartFile接收文件
@RequestMapping(value = "updateItem", method = { RequestMethod.POST, RequestMethod.GET })
public String updateItem(Item item, Model model, MultipartFile picFile) throws Exception {
// 图片新名字
String name = UUID.randomUUID().toString();
// 图片原名字
String oldName = picFile.getOriginalFilename();
// 后缀名
String exeName = oldName.substring(oldName.lastIndexOf("."));
File pic = new File("D:\\WebWork\\" + name + exeName);
// 保存图片到本地磁盘
picFile.transferTo(pic);
// 更新商品图片信息
item.setPic(name + exeName);
itemServices.update(item);
model.addAttribute("item", item);
model.addAttribute("msg", "修改商品成功");
return "itemEdit";
}



浙公网安备 33010602011771号