您好,登錄后才能下訂單哦!
項(xiàng)目結(jié)構(gòu);
代碼如下:
BookController
package com.mstf.controller; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codehaus.jackson.map.ObjectMapper; import com.mstf.domain.Book; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/json") public class BookController { private static final Log logger = LogFactory.getLog(BookController.class); // @RequestMapping 根據(jù) json 數(shù)據(jù),轉(zhuǎn)換成對(duì)應(yīng)的 Object @RequestMapping(value="/testRequestBody") public void setJson(@RequestBody Book book,HttpServletResponse response) throws Exception { // ObjectMapper 類是 Jackson 庫的主要類。他提供一些功能將 Java 對(duì)象轉(zhuǎn)換成對(duì)應(yīng)的 JSON ObjectMapper mapper = new ObjectMapper(); // 將 Book 對(duì)象轉(zhuǎn)換成 json 輸出 logger.info(mapper.writeValueAsString(book)); book.setAuthor("汪政"); response.setContentType("text/html;charset=UTF-8"); // 將 Book 對(duì)象轉(zhuǎn)換成 json 寫到客戶端 response.getWriter().println(mapper.writeValueAsString(book)); } }
UserController
package com.mstf.controller; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.mstf.domain.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; // Controller 注解用于指示該類是一個(gè)控制器,可以同時(shí)處理多個(gè)請(qǐng)求動(dòng)作 @Controller // RequestMapping 可以用來注釋一個(gè)控制器類,此時(shí),所有方法都將映射為相對(duì)于類級(jí)別的請(qǐng)求, // 表示該控制器處理所有的請(qǐng)求都被映射到 value屬性所指示的路徑下 @RequestMapping(value="/user") public class UserController { // 靜態(tài) List<User> 集合,此處代替數(shù)據(jù)庫用來保存注冊(cè)的用戶信息 private static List<User> userList; // UserController 類的構(gòu)造器,初始化 List<User> 集合 public UserController() { super(); userList = new ArrayList<User>(); } // 靜態(tài)的日志類 LogFactory private static final Log logger = LogFactory.getLog(UserController.class); // 該方法映射的請(qǐng)求為 http://localhost:8080/context/user/register ,該方法支持GET請(qǐng)求 @RequestMapping(value="/register",method=RequestMethod.GET) public String registerForm() { logger.info("register GET方法被調(diào)用..."); // 跳轉(zhuǎn)到注冊(cè)頁面 return "register"; } // 該方法映射的請(qǐng)求支持 POST 請(qǐng)求 @RequestMapping(value="/register",method=RequestMethod.POST) // 將請(qǐng)求中的 loginname 參數(shù)的值賦給 loginname 變量, password 和 username 同樣處理 public String register( @RequestParam("loginName") String loginName, @RequestParam("passWord") String passWord, @RequestParam("userName") String userName) { logger.info("register POST方法被調(diào)用..."); // 創(chuàng)建 User 對(duì)象 User user = new User(); user.setLoginName(loginName); user.setPassWord(passWord); user.setUserName(userName); // 模擬數(shù)據(jù)庫存儲(chǔ) User 信息 userList.add(user); // 跳轉(zhuǎn)到登錄頁面 return "login"; } // 該方法映射的請(qǐng)求為 http://localhost:8080/RequestMappingTest/user/login @RequestMapping("/login") public String login( // 將請(qǐng)求中的 loginName 參數(shù)的值賦給 loginName 變量, passWord 同樣處理 @RequestParam("loginName") String loginName, @RequestParam("passWord") String passWord, Model model) { logger.info("登錄名:"+loginName + " 密碼:" + passWord); // 到集合中查找用戶是否存在,此處用來模擬數(shù)據(jù)庫驗(yàn)證 for(User user : userList){ if(user.getLoginName().equals(loginName) && user.getPassWord().equals(passWord)){ model.addAttribute("user",user); return "welcome"; } } return "login"; } }
Book
package com.mstf.domain; import java.io.Serializable; public class Book implements Serializable { private static final long serialVersionUID = 1L; private int id; private String name; private String author; public Book() { } public Book(int id, String name, String author) { super(); this.id = id; this.name = name; this.author = author; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return "Book [id=" + id + ", name=" + name + ", author=" + author + "]"; } }
User
package com.mstf.domain; import java.io.Serializable; // 域?qū)ο?,?shí)現(xiàn)序列化接口 public class User implements Serializable { // 序列化 private static final long serialVersionUID = 1L; // 私有字段 private String loginName; private String userName; private String passWord; // 公共構(gòu)造器 public User() { super(); } // get/set 方法 public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } }
springmvc-config.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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- spring可以自動(dòng)去掃描base-pack下面的包或者子包下面的java文件, 如果掃描到有Spring的相關(guān)注解的類,則把這些類注冊(cè)為Spring的bean --> <context:component-scan base-package="com.mstf.controller"/> <!-- 設(shè)置配置方案 --> <mvc:annotation-driven/> <!-- 使用默認(rèn)的 servlet 來響應(yīng)靜態(tài)文件 --> <mvc:default-servlet-handler/> <!-- 視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前綴 --> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <!-- 后綴 --> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> <h4>登錄</h4> <br> <form action="login" method="post"> <table> <tr> <td> <label> 登錄名: </label> </td> <td> <input type="text" id="loginName" name="loginName"> </td> </tr> <tr> <td> <label> 密 碼: </label> </td> <td> <input type="password" id="passWord" name="passWord"> </td> </tr> <tr> <td> <input id="submit" type="submit" value="登錄"> </td> </tr> </table> </form> </body> </html>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>注冊(cè)</title> </head> <body> <h4>注冊(cè)頁面</h4> <br> <form action="register" method="post"> <table> <tr> <td> <label> 登錄名: </label> </td> <td> <input type="text" id="loginName" name="loginName"> </td> </tr> <tr> <td> <label> 密 碼: </label> </td> <td> <input type="password" id="passWord" name="passWord"> </td> </tr> <tr> <td> <label> 姓 名: </label> </td> <td> <input type="text" id="userName" name="userName"> </td> </tr> <tr> <td> <input id="submit" type="submit" value="注冊(cè)"> </td> </tr> </table> </form> </body> </html>
welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> <h4>歡迎[${requestScope.user.userName }]登錄</h4> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- 定義 Spring MVC 的前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/springmvc-config.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 讓 Spring MVC 的前端控制器攔截所有請(qǐng)求 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 亂碼過濾器 --> <filter> <filter-name>characterEncodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>測(cè)試接收J(rèn)SON格式的數(shù)據(jù)</title> <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="js/json2.js"></script> <script type="text/javascript"> $(document).ready(function(){ testRequestBody(); }); function testRequestBody(){ $.ajax("${pageContext.request.contextPath}/json/testRequestBody",// 發(fā)送請(qǐng)求的 URL 字符串。 { dataType : "json", // 預(yù)期服務(wù)器返回的數(shù)據(jù)類型。 type : "post", // 請(qǐng)求方式 POST 或 GET contentType:"application/json", // 發(fā)送信息至服務(wù)器時(shí)的內(nèi)容編碼類型 // 發(fā)送到服務(wù)器的數(shù)據(jù)。 data:JSON.stringify({id : 1, name : "你們都是笨蛋"}), async: true , // 默認(rèn)設(shè)置下,所有請(qǐng)求均為異步請(qǐng)求。如果設(shè)置為 false ,則發(fā)送同步請(qǐng)求 // 請(qǐng)求成功后的回調(diào)函數(shù)。 success :function(data){ console.log(data); $("#id").html(data.id); $("#name").html(data.name); $("#author").html(data.author); }, // 請(qǐng)求出錯(cuò)時(shí)調(diào)用的函數(shù) error:function(){ alert("數(shù)據(jù)發(fā)送失敗"); } }); } </script> </head> <body> 編號(hào):<span id="id"></span><br> 書名:<span id="name"></span><br> 作者:<span id="author"></span><br> </body> </html>
所有用到的包如下:
我們有兩個(gè)方法來進(jìn)行軟件設(shè)計(jì):一個(gè)是讓其足夠的簡(jiǎn)單以至于讓BUG無法藏身;另一個(gè)就是讓其足夠的復(fù)雜,讓人找不到BUG。前者更難一些。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。