Spring MVC登录注册以及转换json数据
项目结构;
代码如下:
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>
所有用到的包如下:
Spring MVC登录注册以及转换json数据的更多相关文章
- spring mvc接收ajax提交的JSON数据,并反序列化为对象
需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...
- 0059 Spring MVC与浏览器间的JSON数据转换--@RequestBody--@ResponseBody--MappingJacson2HttpMessageConverter
浏览器与服务器之间的数据交换有很多类型,不只是表单提交数据这一种,比如ajax技术就大量使用json.xml等,这时候就涉及到浏览器端和服务器端数据格式转换的问题,服务器端都是Java对象,需要把请求 ...
- Spring MVC之中前端向后端传数据
Spring MVC之中前端向后端传数据和后端向前端传数据是数据流动的两个方向, 在此先介绍前端向后端传数据的情况. 一般而言, 前端向后端传数据的场景, 大多是出现了表单的提交,form表单的内容在 ...
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- Spring mvc登录拦截器
自己实现的第一个Spring mvc登录拦截器 题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录 实现步骤: 1.在spring的配置文件中添加登 ...
- js声明json数据,打印json数据,遍历json数据,转换json数据为数组
1.js声明json数据: 2.打印json数据: 3.遍历json数据: 4.转换json数据为数组; //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿 ...
- Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object
Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object 资料参考:http://stack ...
- Spring MVC全局异常后返回JSON异常数据
问题: 当前项目是作为手机APP后台支持,使用spring mvc + mybaits + shiro进行开发.后台服务与手机端交互是发送JSON数据.如果后台发生异常,会直接返回异常页面,显示异常内 ...
- 第6章 Spring MVC的数据转换、格式化和数据校验
使用ConversionService转换数据 <%@ page language="java" contentType="text/html; charset=U ...
随机推荐
- Android studio 分32位64位版本吗?
下载的时候,是不分32位和64位的.安装完成之后,在bin目录下,有studio.exe和studio64.exe这两个文件.前一个是32位的,后一个是64位的.根据自己的电脑进行选择.
- WebStorm配置github
1.配置github 2.安装git,配置git 3.配置ssh,用git中的git Bash 4.迁出项目 5.提交文件 6.查看
- ThinkPHP5.0框架开发--第6章 TP5.0 请求和响应
ThinkPHP5.0框架开发--第6章 TP5.0 请求和响应 第6章 TP5.0 请求和响应 ===================================== 上次复习 1.新建控制器 ...
- html单行、多行文本溢出隐藏
欢迎加入前端交流群来py:749539640 单行: div{/* 单行溢出隐藏 */ width: 150px; white-space: nowrap; overflow: hidden; tex ...
- [JZOJ 5905] [NOIP2018模拟10.15] 黑暗之魂(darksoul) 解题报告 (拓扑排序+单调队列+无向图基环树)
题目链接: http://172.16.0.132/senior/#main/show/5905 题目: oi_juruo热爱一款名叫黑暗之魂的游戏.在这个游戏中玩家要操纵一名有 点生命值的无火的余灰 ...
- 最长回文子串 C++实现 java实现 leetcode系列(五)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- [ Linux ] [ OS ] [ CPU ] Linux系統 OS, CPU, Memory, Disk
查看 linux 版本 及 Kernel 版本 指令: cat /etc/*-release http://benit.pixnet.net/blog/post/19390916-%E5%A6%82% ...
- 来,我们来聊聊怎么学好3dMax三维建模这款软件
效果图公司近年来的发展体现了流行3D技术,而3D技术的应用也越来越广泛,3D为电脑效果图制作的主力.室内效果是设计师进行设计后所达到的效果,除了通常采用的方法外,还应该积极地找寻一种适合的教学方法,培 ...
- LA3231 Fair Share 二分_网络流
Code: #include<cstdio> #include<vector> #include<queue> #include<cstring> #i ...
- nginx访问日志access_log
在 nginx.conf 配置文件 http{} 方法体的括号内,增加或者打开以下代码注释: log_format main '$remote_addr - $remote_user [$time_l ...