RESTful
Representational State Transfer
一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
web.xml:
<!--springmvc的后台配置-->
<servlet>
<servlet-name>springmvc</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>
</servlet>
<!--配置全局方法的拦截-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--HiddenHttpMethod 过滤器-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>
新增按钮
<a href="<c:url value='/user/detail'/>">
controller:
/**
* 跳转到新增用户页面
*/
@RequestMapping(value = "detail", method = RequestMethod.GET)
public ModelAndView createUser() {
ModelAndView mav = new ModelAndView("system/user_detail");
return mav;
}
/**
* 新增用户
*/
@RequestMapping(value = "detail", method = RequestMethod.POST)
public ModelAndView createUserDetail(
@RequestParam(value = "userName") String name) {
ModelAndView mav = new ModelAndView("redirect:/user/list");
try {
userInfoService.insertUserInfo(name);
} catch (Exception e) {
e.printStackTrace();
}
return mav;
}
jsp:
<form class="form-horizontal" id="f1" method="post" action="<c:url value="/user/${user.UserID}"/>" οnsubmit="return submitForm();">
<input name="_method" value="PUT" type="hidden"/>
</form>
<script>
var submitForm = function () {
var userID = $('input[name="userID"]').val();
if (userID == "") {//没有id,调用新增请求
$("#f1")[0].action = "<c:url value="/user/detail"/>";
$('input[name="_method"]').val("POST");//新增
}
return true;
}
</script>
跳转按钮:
<a href='/user/" + UserID + "'></a>
controller:
/**
* 用户详细页面
*/
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public ModelAndView userDetail(@PathVariable int id) {
ModelAndView mav = new ModelAndView("system/user_detail");
try {
PageData data = userInfoService.getUserInfoByID(id);
mav.addObject("user", data);
} catch (Exception e) {
e.printStackTrace();
}
return mav;
}
/**
* 编辑用户信息
*/
@RequestMapping(value = "{id}", method = RequestMethod.PUT)
public ModelAndView updateUserDetail(@PathVariable int id,
@RequestParam(value = "userName") String name) {
ModelAndView mav = new ModelAndView("redirect:/user/list");
try {
userInfoService.updateUserInfo(id, name);
} catch (Exception e) {
e.printStackTrace();
}
return mav;
}
jsp同新增。
删除:
按钮:
<a href='javascript:void(0);' οnclick='deleteUser(this," + UserID + ")'></a>
<script>
var basePath = "<%=basePath%>";
var deleteUser = function (btn, userID) {
if (!confirm("Are you sure delete this record?")) {
return;
}
$.ajax({
url: basePath + "/user/" + userID,
type: "post",
data: {
"_method": "delete"
},
success: function (msg) {
if (msg == "success") {
alert("Delete successfully.");
return;
}
alert("System error,please try again later.");
}
});
}
</script>
controller:
/**
* 删除用户信息
*/
@RequestMapping(value = "{id}", method = RequestMethod.DELETE, produces = "text/plain;charset=UTF-8")
@ResponseBody
public String deleteUserDetail(@PathVariable int id) {
try {
if (userInfoService.deleteUserInfo(id)) {
return UserMessage.SUCCESS;
}
} catch (Exception e) {
e.printStackTrace();
}
return UserMessage.ERROR;
}