Spring MVC登录注册以及转换json数据
程序员文章站
2024-03-02 23:30:16
项目结构;
代码如下:
bookcontroller
package com.mstf.controller;
import javax.servl...
项目结构;
代码如下:
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。前者更难一些。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!