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>

所有用到的包如下:

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

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

(0)

相关推荐

  • SpringMVC实现自定义类型转换器

    我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对象的属性中,我们可以在默认的spring-servlet.xml加上如下的配置即可做到普通数据类型的转换,如将String转换成Integer和Double等: <mvc:annotation-driven /> 或 复制代码 代码如下: <bean id="conversionService" class="org.springframework.format.support.Formatt

  • springMVC4之强大类型转换器实例解析

    我们以自定义格式转换器的实现思路,来理解新架构的类型转换器的使用方法,同时在实际开发中,我们可能会有自己的格式转换需求,这个时候我们也可以通过自定义格式转换器来完成这些个性化需求. 自定义格式转换器 完成自定义转换器需要实现以下三个中的任意一个接口:Convertor<S,T>.GenericConvertor或ConvertorFacoty.下面我们对这些接口进行逐一分析: 1. Convertor<S,T> 这是最为简单的一个接口,定义了从源类到目标类的转换方法.该接口的定义如

  • 深入理解Spring MVC的数据转换

    本文主要给大家介绍了关于Spring MVC数据转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 数据绑定 SpringMVC负责将request中的信息以一定的方式转换并绑定到处理方法的参数上.整个过程的处理核心是由DataBinder完成.转换流程如下: 1.DataBinder从ServletRequest中获取参数信息: 2.DataBinder获取处理方法的参数: 3.DataBinder调用ConversionService组件数据类型转换和数据格式化

  • SpringMVC中Json数据格式转换

    1  @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json.xml等格式的数据并绑定到controller方法的参数上. List.action?id=1&name=zhangsan&age=12 本例子应用: @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象  2  @ResponseBody 作

  • springmvc实现自定义类型转换器示例

    springmvc除了自带的部分类型转换之外,还可以自定义类型转换器,按照以下步骤: 1.写一个类实现Converter接口 package com.hy.springmvc.entities; import org.springframework.core.convert.converter.Converter; import com.google.gson.Gson; public class DepartmentConvertor implements Converter<String,

  • SpringMVC中日期格式的转换

    解决日期提交转换异常的问题 由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑定.前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定.在springmvc这可以在处理器适配器上自定义Converter进行参数绑定.如果使用<mvc:annotation-driven/>可以在此标签上进行扩展. 1.自定义DataConvertor类, 并实现Convertor接口 p

  • SpringMVC对日期类型的转换示例

    在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如下 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; 2.如果我们只负责we

  • 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.

  • Spring mvc实现Restful返回xml格式数据实例详解

    spring mvc实现Restful返回xml格式数据 最近,想在自己的小项目中搭建一个Restful风格的服务接口api,项目用的spring mvc 3,听说spring mvc本身就能十分方便的支持restful的实现,于是查询了下资料,果然非常强大. 在一次偶然的#墙#外#(你懂的)状态下浏览到了一个老外的博客,举了几个入门例子十分经典,原文是E文+被墙状态,觉得有必要扒过来收藏学习下. 在本示例中,我们将向您展示如何将对象转换成xml格式并通过spring mvc框架返回给用户. 技

  • Go语言中转换JSON数据简单例子

    Go语言转换JSON数据真是非常的简单. 以EasyUI的Demo为例,将/demo/datagrid/datagrid_data1.json 拷贝到$GOPATH/src目录: JSON.go: 复制代码 代码如下: package main import (         "encoding/json"         "fmt"         "io/ioutil" ) type product struct {         Pro

  • Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). 一.JSON字符串转换为JSON对象: eval() 和 JSON.parse eg- js

  • Spring MVC 更灵活的控制 json 返回问题(自定义过滤字段)

    这篇文章主要讲 Spring MVC 如何动态的去返回 Json 数据 在我们做 Web 接口开发的时候, 经常会遇到这种场景. 两个请求,返回同一个对象,但是需要的返回字段并不相同.如以下场景 /** * 返回所有名称以及Id */ @RequestMapping("list") @ResponseBody public List<Article> findAllNameAndId() { return articleService.findAll(); } /** *

  • 彻底解决Spring mvc中时间的转换和序列化等问题

    痛点 在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8的新特性java.time包下的具体类型参数来直接接收. 我们使用含有java.time封装类型的参数接收也会报反序列化问题,在返回前端带时间类型的同样会出现一些格式化的问题.今天我们来彻底解决他们. 建议 其实最科学的建议统一使用时间戳来代表时间.这个是最完美的,避免了前端浏览器的兼容性问题,同时也避免了其它一些中间件的序列化/反序列化问题.但是用时间表达可能更清晰语义化.两种方式各有千秋,如

  • SpringMVC接收与响应json数据的几种方式

    前言 前后端的数据交互,除了通过form表单进行提交外,也可以通过ajax向后端传递和接收json格式数据(这种方式可以实现请求数据和页面分离).本文将总结一下在Spring MVC中接收和响应json数据的几种方式. 话不多说了,来一起看看详细的介绍吧 准备步骤: 1.导入json相关框架的依赖(比如jackson). 2.spring mvc的controller方法正常写,如果需要响应json,增加@responsebody注解. 3.在接受json对应的输入参数前,加上@RequestB

  • Spring mvc实现Restful返回json格式数据实例详解

    在本示例中,我们将向您展示如何将对象转换成json格式并通过spring mvc框架返回给用户. 使用技术及环境: Spring 3.2.2.RELEASE Jackson 1.9.10 JDK 1.6 Eclipse 3.6 Maven 3 PS:在spring 3 中,要输出json数据,只需要添加Jackson 库到你的classpath. 1.项目依赖 spring和jackson的依赖: <project xmlns="http://maven.apache.org/POM/4.

  • Spring MVC基于注解的使用之JSON数据处理的方法

    目录 1.JSON数据交互 1.1 JSON概述 1.1.1 对象结构 1.1.2 数组结构 1.2 JSON数据转换 2. HttpMessageConverter 2.1 @RequestBody 2.2 @ResponseBody 1.JSON数据交互 1.1 JSON概述 JSON 是一种轻量级的数据交换格式,是一种理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成.JSON有两种数据结构: 对象结构 数组结构 1.1.1 对象结构 对象结构是由花括号括起来的逗号分割的键值对

  • Spring MVC学习笔记之json格式的输入和输出

    Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version>

随机推荐