springMVC之增刪改查(RESTful),springmvcrestful

來源:互聯網
上載者:User

springMVC之增刪改查(RESTful),springmvcrestful

一、核心原理

1. 用於發送請求給伺服器: /home.htm

2. 請求被DispatchServlet攔截到

3. DispatchServlet通過HandleMapping檢查url有沒有對應的Controller, 如果有則調用Controller

4. Controller開始執行商務邏輯

5. Controller執行完畢後, 如果返回字串, 則ViewResolver將字串轉化成相應的視圖對象;

如果返回ModelAndView對象, 該對象本身就包含了視圖對象資訊.

6. DispatchServlet將視圖對象中的資料輸出給伺服器.

7. 伺服器將資料輸出給用戶端.

二、REST風格

1. 查詢:
傳統:  /user_query?id=123
rest: /user/123
2. 刪除:
傳統:  /user_delete?id=123
rest: /user/123/delete
3. 更新:
傳統:  /user_update?id=123
rest: /user/123/update
4. 列表:
傳統:  /user_list
rest: /user/users


三、增刪改查

1. 代碼結構



2. web.xml 配置DispatchServlet

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xmlns="http://java.sun.com/xml/ns/javaee"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">           <!-- user需要和設定檔user-servlet.xml名字對應 -->  <servlet>  <servlet-name>user</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>  <servlet-name>user</servlet-name>  <url-pattern>/</url-pattern>  </servlet-mapping>    <!-- 配置過濾器, 設定編碼為UTF-8 -->  <filter><filter-name>CharacterFilter</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>CharacterFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>


3. user-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"><!-- spring掃描的包 --><context:component-scan base-package="com.zdp"></context:component-scan><!-- 使用spring註解 --><mvc:annotation-driven /><!-- 設定返回url首碼和尾碼 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean><!-- 指明靜態資源位置 --><mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"/></beans>

4. User.java

/** * 實體類 */public class User {private String username;private String password;public User() {}public User(String username, String password) {this.username = username;this.password = password;}@NotEmpty(message="使用者名稱不可為空")public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}@Size(min=1,max=10,message="密碼的長度應該在1和10之間")public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

5. UserController.java

@Controller@RequestMapping("/user")public class UserController {// 使用map類比資料庫 private Map<String, User> userMap = new HashMap<String, User>();public UserController() {userMap.put("zhangsan", new User("zhangsan", "123"));userMap.put("lishimin", new User("lishimin", "456"));}// 擷取使用者列表 // 存取方法: http://localhost/springmvc_user/user/users@RequestMapping(value = "/users", method = RequestMethod.GET)public String list(Model model) {model.addAttribute("users", userMap);return "/user/list";}// 跳轉到添加使用者頁面(get請求)// 存取方法: http://localhost/springmvc_user/user/add@RequestMapping(value = "/add", method = RequestMethod.GET)public String add(@ModelAttribute("user") User user) {return "user/add";}// 具體的添加使用者處理方法(post請求) // 注意: BindingResult必須在User之後, 中間不能有其他的參數@RequestMapping(value = "/add", method = RequestMethod.POST)public String add(@Validated User user, BindingResult br) throws IOException { // @Validated: 對User資料進行校正if (br.hasErrors()) {return "user/add"; // 如果有錯誤, 則直接跳轉到add添加使用者頁面}userMap.put(user.getUsername(), user);return "redirect:/user/users"; // 重新導向到使用者列表頁面}// 查看使用者資訊// 存取方法: http://localhost/springmvc_user/user/zhangsan@RequestMapping(value="/{username}", method=RequestMethod.GET)public String show(@PathVariable String username, Model model) { // @PathVariable: 路徑裡面的值作為參數model.addAttribute(userMap.get(username)); return "user/show";}// 跳轉到修改使用者資訊頁面// 存取方法: http://localhost/springmvc_user/zhangsan/update@RequestMapping(value="/{username}/update", method=RequestMethod.GET) public String update(@PathVariable String username, Model model) { // @PathVariable: 路徑裡面的值作為參數model.addAttribute(userMap.get(username)); // 等同: model.addAttribute("user", userMap.get(username));return "user/update";}// 具體的修改使用者處理方法(post請求) // 注意: BindingResult必須在User之後, 中間不能有其他的參數@RequestMapping(value="/{username}/update", method=RequestMethod.POST)public String update(@PathVariable String username, @Validated User user, BindingResult br) {if(br.hasErrors()) {return "user/update"; // 如果有錯誤, 則直接跳轉到update修改使用者頁面}userMap.remove(username);userMap.put(user.getUsername(), user);return "redirect:/user/users";}// 刪除使用者資訊// 存取方法: http://localhost/springmvc_user/zhangsan/delete@RequestMapping(value="/{username}/delete",method=RequestMethod.GET)public String delete(@PathVariable String username) {userMap.remove(username);return "redirect:/user/users";}}

6. jsp pages

① list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!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>使用者列表 </title><!-- 引入靜態檔案, 需要在user-servlet.xml配置映射關係 --><link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/main.css" type="text/css"></head><body><a href="add">添加</a><br/><c:forEach items="${users}" var="usermap"><a href="${usermap.value.username}">${usermap.value.username}</a>-- <a href="${usermap.value.username}/update">修改</a>-- <a href="${usermap.value.username}/delete">刪除</a><br/></c:forEach></body></html>

② add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %><!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>添加使用者</title></head><body><!-- 如沒寫action, 也會提交給add(匹配檔案名稱) --><sf:form method="post" modelAttribute="user" action="add">Username:<sf:input path="username"/><sf:errors path="username"/><br/>Password:<sf:password path="password"/><sf:errors path="password"/><br/><input type="submit" value="添加使用者"/></sf:form></body></html>
③ show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %><!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>使用者詳細資料</title></head><body>Username:${user.username}<br/>Password:${user.password}<br/></body></html>
④ update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %><!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>修改使用者</title></head><body><!-- 如沒寫action, 也會提交給update(匹配檔案名稱) --><sf:form method="post" modelAttribute="user" action="update">Username:<sf:input path="username"/><sf:errors path="username"/><br/>Password:<sf:password path="password"/><sf:errors path="password"/><br/><input type="submit" value="修改使用者"/></sf:form></body></html>







java用spring mvc + hibernate,實現資料庫的增刪改查

1)在applicationContext裡面配置Hibernate的dataSource和SessionFactory
2)編寫Dao的介面是實作類別。如果用到Spring的Hibernate的操作模板(HibernateTemplate)可以繼承HibernateDaoSupport,實作類別註解成@Repository
3)編寫Action,然後註解成@Controller,在Action裡面需要用@Autowired注入Dao的執行個體
4)配置applicationContext.xml,加上Spring MVC的視圖處理器
5)編寫頁面,然後提交請求。搞定!
 
spring mvc 增刪改查

www.blogjava.net/...=admin 發你郵箱了
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.