首页 > 编程 > Java > 正文

Spring MVC登录注册以及转换json数据

2019-11-26 12:40:06
字体:
来源:转载
供稿:网友

项目结构;

代码如下:

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 根据 json 数据,转换成对应的 Object @RequestMapping(value="/testRequestBody") public void setJson(@RequestBody Book book,HttpServletResponse response) throws Exception {  // ObjectMapper 类是 Jackson 库的主要类。他提供一些功能将 Java 对象转换成对应的 JSON  ObjectMapper mapper = new ObjectMapper();  // 将 Book 对象转换成 json 输出  logger.info(mapper.writeValueAsString(book));  book.setAuthor("汪政");  response.setContentType("text/html;charset=UTF-8");  // 将 Book 对象转换成 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 注解用于指示该类是一个控制器,可以同时处理多个请求动作@Controller// RequestMapping 可以用来注释一个控制器类,此时,所有方法都将映射为相对于类级别的请求,// 表示该控制器处理所有的请求都被映射到 value属性所指示的路径下@RequestMapping(value="/user")public class UserController { // 静态 List<User> 集合,此处代替数据库用来保存注册的用户信息 private static List<User> userList; // UserController 类的构造器,初始化 List<User> 集合 public UserController() {  super();  userList = new ArrayList<User>(); } // 静态的日志类 LogFactory private static final Log logger = LogFactory.getLog(UserController.class); // 该方法映射的请求为 http://localhost:8080/context/user/register ,该方法支持GET请求 @RequestMapping(value="/register",method=RequestMethod.GET) public String registerForm() {  logger.info("register GET方法被调用...");  // 跳转到注册页面  return "register"; } // 该方法映射的请求支持 POST 请求 @RequestMapping(value="/register",method=RequestMethod.POST) // 将请求中的 loginname 参数的值赋给 loginname 变量, password 和 username 同样处理 public String register(   @RequestParam("loginName") String loginName,   @RequestParam("passWord") String passWord,   @RequestParam("userName") String userName) {  logger.info("register POST方法被调用...");  // 创建 User 对象  User user = new User();  user.setLoginName(loginName);  user.setPassWord(passWord);  user.setUserName(userName);  // 模拟数据库存储 User 信息   userList.add(user);  // 跳转到登录页面  return "login"; } // 该方法映射的请求为 http://localhost:8080/RequestMappingTest/user/login @RequestMapping("/login") public String login(   // 将请求中的 loginName 参数的值赋给 loginName 变量, passWord 同样处理   @RequestParam("loginName") String loginName,   @RequestParam("passWord") String passWord,   Model model) {  logger.info("登录名:"+loginName + " 密码:" + passWord);  // 到集合中查找用户是否存在,此处用来模拟数据库验证  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;// 域对象,实现序列化接口public class User implements Serializable { // 序列化 private static final long serialVersionUID = 1L; // 私有字段 private String loginName; private String userName; private String passWord; // 公共构造器 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可以自动去扫描base-pack下面的包或者子包下面的java文件,  如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean --> <context:component-scan base-package="com.mstf.controller"/> <!-- 设置配置方案 --> <mvc:annotation-driven/> <!-- 使用默认的 servlet 来响应静态文件 --> <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> <h3>登录</h3> <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>注册</title></head><body> <h3>注册页面</h3> <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="注册">    </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> <h3>欢迎[${requestScope.user.userName }]登录</h3></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 的前端控制器拦截所有请求 --> <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>测试接收JSON格式的数据</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",// 发送请求的 URL 字符串。    {    dataType : "json", // 预期服务器返回的数据类型。    type : "post", // 请求方式 POST 或 GET    contentType:"application/json", // 发送信息至服务器时的内容编码类型    // 发送到服务器的数据。    data:JSON.stringify({id : 1, name : "你们都是笨蛋"}),    async: true , // 默认设置下,所有请求均为异步请求。如果设置为 false ,则发送同步请求    // 请求成功后的回调函数。    success :function(data){     console.log(data);     $("#id").html(data.id);     $("#name").html(data.name);     $("#author").html(data.author);    },    // 请求出错时调用的函数    error:function(){     alert("数据发送失败");    }  }); }</script></head><body> 编号:<span id="id"></span><br> 书名:<span id="name"></span><br> 作者:<span id="author"></span><br></body></html>

所有用到的包如下:

我们有两个方法来进行软件设计:一个是让其足够的简单以至于让BUG无法藏身;另一个就是让其足够的复杂,让人找不到BUG。前者更难一些。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持武林网!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表