当前位置: 移动技术网 > IT编程>开发语言>Java > Spring MVC登录注册以及转换json数据

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

项目结构;

代码如下:

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。前者更难一些。

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网