项目搭建请查看上一篇《SpringMVC(二)之注解以及参数封装》,这里不再介绍
数据回显
jstl-1.2.jar
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
// 用户列表
@RequestMapping("list")
public String list(Model model) {
List<User> list = new ArrayList<User>();
// 这里因为没有连接数据库,为了方便,这里造些数据
User user1 = new User();
user1.setId(1);
user1.setUsername("张三");
user1.setBirthday(new Date(System.currentTimeMillis()));
user1.setSex("男");
user1.setAddress("东莞");
User user2 = new User();
user2.setId(2);
user2.setUsername("李四");
user2.setBirthday(new Date(System.currentTimeMillis()));
user2.setSex("女");
user2.setAddress("东莞");
User user3 = new User();
user3.setId(3);
user3.setUsername("王五");
user3.setBirthday(new Date(System.currentTimeMillis()));
user3.setSex("男");
user3.setAddress("东莞");
list.add(user1);
list.add(user2);
list.add(user3);
model.addAttribute("userList", list);
return "list";
}
// 更新,注意与后面修改为restfull风格后的代码做对比
@RequestMapping("update")
public String update(Integer id) {
System.out.println(id);
return "success";
}
}
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 这里引入jstl标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" >
<tr>
<td>姓名</td>
<td>生日</td>
<td>性别</td>
<td>地址</td>
<td>操作</td>
</tr>
<c:forEach items="${userList }" var="user">
<tr>
<td>${user.username }</td>
<td>${user.birthday }</td>
<td>${user.sex }</td>
<td>${user.address }</td>
<td><a href="${pageContext.request.contextPath }/user/update.do?id=${user.id}">操作</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
页面
url模板映射
我们会发现上面的a标签会带有参数以及后缀在地址栏上显示,这样并不美观,所以这里可以使用restful风格设计
<a href="${pageContext.request.contextPath }/user/update.do?id=${user.id}">操作</a>
主要是为请求restfull设计模式
Restfull软件架构设计模式:请求更间接,更安全,方便于搜索引擎收录
第一步:在web.xml添加以下内容
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
第二步:修改Controller中的方法
// 更新,与上面为修改前的update方法做对比
@RequestMapping("update/{id}")
public String update(@PathVariable Integer id) {
System.out.println(id);
return "success";
}
第三部:修改jsp中的请求地址
<a href="${pageContext.request.contextPath }/rest/user/update/${user.id }">操作</a>
修改前与修改后对比
原理
转发
关键字:forward
1.本类进行转发:
本类方法与方法之间进行forward
方式一:return "forward:list.do";
方式二:return "forward:/user/list.do";
注意:user根路径前面必须有
/.
2.跨类进行转发:
方式:return "forward:/items/list.do";
重定向
关键字:redirect
1.本类进行重定向:
本类方法与方法之间进行redirect
方式一:return "redirect:list.do";
方式二:return "redirect:/user/list.do";
2.跨类进行重定向:
方式:return "redirect:/items/list.do";
mvc:annotation-driven标签
<!-- 此配置等价于配置了RequestMappingHandlerMapping、RequestMappingHandlerAdapter
以及提供json数据格式的支持 -->
<mvc:annotation-driven />
<!-- 配置注解处理器映射器
负责寻找Controller
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
配置注解处理器处理器
负责执行Controller
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
-->
上一篇:《SpringMVC(二)之注解以及参数封装》
下一篇:《SpringMVC(四)之requestParam、requestBody、responseBody》