spring mvc+Mybatis+bootstrap简单应用
来源:互联网 发布:网络电视怎么重新搜台 编辑:程序博客网 时间:2024/06/05 02:53
实现一个spring mvc结合Mybatis的简单示例,前端的界面主要是JSP,包含了少量的js和jQuery等内容,css渲染则使用了bootstrap。当然,整体来说还是很简单的一个demo。
这个项目,主要是实现了对于数据库中User表的增删改查功能,放在界面也就是登录、注册、修改个人信息和删除用户。
关于spring MVC的内容,可以参照我的前几篇博客,主要都是简单的示例。关于mybatis,可以去看http://download.csdn.net/detail/tan1912224958/8535731 这个资料,里面讲解得非常详细,很适合初学者学习。
嗯,下面spring MVC和mybatis整合示例的各个部分。
PS:博主使用的环境为eclipse for Java web developers,创建的是Dynamic Web Project。使用的所有包参照链接:【http://download.csdn.net/detail/qq_28379809/9923026。】
可能少了一个SQL连接的jar包,如果运行失败的话,参照下面的免费下载链接:http://download.csdn.net/detail/orzma/4828533
一、配置文件,一共是四个,两个是spring mvc的,两个是Mybatis的,这里没有关联。
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!-- 解决中文乱码问题 --><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><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>springmvc-servlet.xml,这个主要是dispatcher.
<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns:beans="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "default-autowire="byName"><mvc:annotation-driven /><!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --><context:component-scan base-package="net.use" /><!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 --><beans:beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /><beans:beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /><!-- 这个类用于Spring MVC视图解析 --><beans:bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/pages/" /><beans:property name="suffix" value=".jsp" /></beans:bean></beans:beans>
User.xml,这个xml文件其实是关于sql操作的配置文件,里面定义了几个对于数据库操作的方法。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- <mapper namespace="com.yihaomen.mybatis.models.UserMapper"> --><mapper namespace="net.use.inter.IUserOperation"> <!--执行增加操作的SQL语句。id和parameterType分别与IUserOperation接口中的addUser方法的名字和参数类型一致。 以#{name}的形式引用Student参数的name属性,MyBatis将使用反射读取Student参数的此 属性。#{name}中name大小写敏感。引用其他 的gender等属性与此一致。seGeneratedKeys设置 为"true"表明 要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入 到Student的id属性--> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(name,age,address,pwd) values(#{name},#{age},#{address},#{pwd}) </insert> <!-- 为了返回list 类型而定义的returnMap --> <resultMap type="User" id="resultListUser"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> <result column="address" property="address" /> <result column="pwd" property="pwd" /> </resultMap> <!-- 多参数传入参照博客:http://www.cnblogs.com/mingyue1818/p/3714162.html --> <select id="selectUsers" resultMap="resultListUser"> select * from user where name =#{arg0} and pwd =#{arg1} </select> <!-- delete user from the database --> <delete id="deleteUser"> delete from user where name =#{arg0} and pwd =#{arg1} </delete> <!-- first find the id of the user,and then change it --> <update id="updateUser" parameterType="User" > update user set name=#{name},age=#{age},address=#{address},pwd=#{pwd} where id=#{id} </update> <select id="findUserByID" parameterType="int" resultType="User"> select * from `user` where id = #{id} </select> </mapper>Configuration.xml,这个是mybatis的实际配置文件,配置数据库的类型、访问、用户密码,以及mapper等。这里的mapper就是指上面的user.xml。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="User" type="net.use.info.User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" /> <property name="username" value="root"/> <property name="password" value="19961006"/> </dataSource> </environment> </environments> <mappers> <mapper resource="net/use/mapper/User.xml"/> </mappers> </configuration>
二、Java部分
UserController.java,spring MVC的控制器,也就是浏览器请求提交后的实际执行者,根据上面的配置文件,所有的浏览器请求都会被提交到这个Controller中,然后根据不同的URL由不同的方法执行。
其中,这些方法主要包含了两大类,一种是跳转界面的,也就是打开某个界面,第二种就是处理请求的,会调用mybatis的mapper里定义的方法来执行SQL操作,从数据库取出或更新某些内容。
package net.use.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import net.use.form.UserForm;import net.use.info.User;import net.use.mapper.SessionFactory;@Controllerpublic class UserController {@RequestMapping("")public String index(Model model) {return "login";//}@RequestMapping("toLogin")public String toLo(Model model) {return "login";//}@RequestMapping("toRegister")public String toRe() {return "register";}@RequestMapping("toUpdate")public String toUp() {return "update";}@RequestMapping("toDelete")public String toDe() {return "delete";}/*@RequestMapping(value="/detail")public String detail(@ModelAttribute("form") UserForm userForm,Model model) {SessionFactory sessionFactory = new SessionFactory(); User user = sessionFactory.getUser(userForm.getName(),userForm.getPwd()); model.addAttribute("user",user);return "detail";//}*/@RequestMapping(value="/login")public String toLogin(@ModelAttribute("form") UserForm userForm,Model model) {System.out.println("function:toLogin;the original userForm:"+userForm.getName()+","+userForm.getPwd());SessionFactory sessionFactory = new SessionFactory(); User user = sessionFactory.getUser(userForm.getName(),userForm.getPwd()); model.addAttribute("user",user);return "detail";}@RequestMapping(value="/register")public String save(@ModelAttribute("form") UserForm userForm, Model model) { //model.addAttribute("user", user);//System.out.println(user.getName()+","+user.getSex()+","+user.getPwd()+","+user.getAge());//first,to convert the userform to the userSystem.out.println("function:save;the original userForm:"+userForm.getName()+","+userForm.getPwd()+","+userForm.getAge()+","+userForm.getAddress());System.out.println("the type of the age:"+userForm.getAge().getClass());SessionFactory sessionFactory = new SessionFactory();User isUser=sessionFactory.getUser(userForm.getName(), userForm.getPwd());if(isUser.getName() !=null) {System.out.println("该用户名和密码对应的用户已经存在!");}else {User user = new User();user.setName(userForm.getName());user.setAge(userForm.getAge());user.setAddress(userForm.getAddress());user.setPwd(userForm.getPwd()); sessionFactory.addUser(user); user=sessionFactory.getUser(user.getName(), user.getPwd());//now the new user has an id model.addAttribute("user",user);} return "detail";//}@RequestMapping(value="/update")public String update(@ModelAttribute("form") UserForm userForm, Model model) {//首先有一个让用户输入id的页面,然后根据此id来确认要修改的用户,跟着,在update界面,将用户的修改后的信息提交SessionFactory sessionFactory = new SessionFactory();User oldUser = sessionFactory.findUserByID(Integer.parseInt(userForm.getId()));System.out.println("the old user:"+oldUser.getId()+","+oldUser.getName()+","+oldUser.getPwd()+","+oldUser.getAge()+","+ oldUser.getAddress());if( ! userForm.getId().equals(oldUser.getId()+"")) {System.out.println("指定的用户id不存在,请重新输入");}else {User newUser = new User();newUser.setName(userForm.getName());int age=userForm.getAge();System.out.println(age);newUser.setAge(userForm.getAge());newUser.setAddress(userForm.getAddress());newUser.setPwd(userForm.getPwd());newUser.setId(oldUser.getId());//old user and the new user should has the same idsessionFactory.updateUser(newUser);model.addAttribute("user", newUser);}return "detail";}@RequestMapping(value="/delete")public String delete(@ModelAttribute("form") UserForm userForm, Model model) {System.out.println("the original userForm to delete:"+userForm.getId()+","+userForm.getName());SessionFactory sessionFactory = new SessionFactory();User user = sessionFactory.findUserByID(Integer.parseInt(userForm.getId())); sessionFactory.deleteUser(user.getName(), user.getPwd()); return "login";}}
UserForm.java
额,这个是User类的一个非常近似的类,因为博主对于数据绑定部分的内容还有些朦胧,所以采取了先将界面表单数据绑定到这个Form类,然后再手动地映射到user类。
package net.use.form;public class UserForm {private String name; // nameprivate String pwd; // pwdprivate Integer age; // ageprivate String address;private String id;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getId() {return id;}public void setId(String id) {this.id = id;}}
User.java
本示例中唯一的data类,对应着浏览器表单和数据库User表。
package net.use.info;import java.io.Serializable;public class User implements Serializable {/** * @author zjn */private static final long serialVersionUID = 1L;private int id;private String name; // nameprivate String pwd; // pwdprivate int age; // ageprivate String address;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 getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}//private Connection connection;//connection是对象//全部实现了set和get方法�? 以此完成依赖注入(设值注入)}
IUserOperation.java
mybatis的接口实现。其中定义了实际对于数据库的操作接口,至于具体的方法实现,是在User.xml配置文件中实现的(上面)。
package net.use.inter;import java.util.List;import net.use.info.User;public interface IUserOperation {//this interface is the interface connected with the User.xml configuration files, the method defined in this interface //and implment in the User.xmlpublic void addUser(User user);public List<User> selectUsers(String name,String pwd);public void deleteUser(String name, String pwd);public void updateUser(User user);public User findUserByID(int id);}
SessionFactory.java
这个类是对于数据库操作的再封装,因为不想让Controller类的方法每次都去重新初始化一个SQLSessionFactory,还要去分别执行那么多的操作,为了代码的简洁性,增加了这个类。
对于浏览器请求来说,它会先分发给Controller类,Controller类会根据URL调用不同的方法,而如果这个请求是要对数据库进行操作的,那么,该方法就会初始化一个SessionFactory对象,然后调用它的方法,得到自己想要的User 返回值/对数据库内容进行更新。
而对于SessionFactory来说,它会调用上面的IUserOperation接口中的方法,然后由User.xml中配置的具体方法去实现。
package net.use.mapper;import java.io.IOException;import java.io.Reader;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import net.use.info.User;import net.use.inter.IUserOperation;public class SessionFactory {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;static {try {reader = Resources.getResourceAsReader("Configuration.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSession() {return sqlSessionFactory;}public User getUser(String name,String pwd){SqlSession session = sqlSessionFactory.openSession();User user = new User();try {//User user = (User) session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID",1);IUserOperation userOperation=session.getMapper(IUserOperation.class);List<User> users = userOperation.selectUsers(name, pwd);if(users.size()==0) {System.out.println("用户不存在");}else if(users.size()==1){System.out.println("用户存在,信息如下:"+users.get(0).getId()+","+users.get(0).getName()+","+users.get(0).getAge()+","+users.get(0).getAddress()+","+users.get(0).getPwd());user = users.get(0);}else {System.out.println("数据库出错!发现重复的用户信息!");}}finally {session.close();}return user;}/*** 测试增加,增加后,必须提交事务,否则不会写入到数据库. * */public void addUser(User user) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.addUser(user);session.commit();System.out.println("当前添加的用户的id为:"+user.getId());}finally {session.close();}}public void deleteUser(String name,String pwd) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.deleteUser(name,pwd);System.out.println("已从数据库删除该用户");session.commit();}finally {session.close();}}//update,first to get the user,then change,then commitpublic void updateUser(User user) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.updateUser(user);System.out.println("已从数据库更新该用户信息");session.commit();}finally {session.close();}}public User findUserByID(int id) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);User user=userOperation.findUserByID(id);System.out.println("用户存在,信息如下:"+user.getId()+","+user.getName()+","+user.getAge()+","+user.getAddress()+","+user.getPwd());session.commit();return user;}finally {session.close();}}}
三、JSP界面
浏览器端界面,包括登录、注册、更新、删除四个基本的界面。其中主要是JSP界面,包含了少量的js方法。
login
<%@ 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>Login</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script></head><body> <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading text-center"> <h2>Login</h2> </div> <div class="panel-body" style="padding-top: 40px;"> <form class="form-horizontal" role="form" method="POST" action="login"> <input type="hidden" name="_token" value="U6oWdxyOCmls99JDRAJ5HUpHphpMpVOmeNmrElz9"> <div class="form-group"> <label for="name" class="col-md-4 control-label">User name</label> <div class="col-md-6"> <input id="username" type="text" class="form-control" name="name" value="" required autofocus> </div> </div> <div class="form-group"> <label for="password" class="col-md-4 control-label">Password</label> <div class="col-md-6"> <input id="password" type="password" class="form-control" name="pwd" required > </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <div class="checkbox"> <label> <input type="checkbox" name="remember"> Remember Me </label> </div> </div> </div> <div class="form-group"> <div class="col-md-8 col-md-offset-4"> <button type="submit" class="btn btn-primary"> Login </button> <a class="btn btn-link" href="http://localhost:8080/Spring_Mybatis/toRegister"> Create new Account? </a> </div> </div> </form> </div> </div> </div> </div></div></body></html>
register
<%@ 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>Register</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <!-- insert jquery validate --><script src="https://cdn.bootcss.com/jquery-validate/1.17.0/jquery.validate.js"></script> <script> function validateForm(){ var res = check_validate1(document.forms["reForm"]["age"]); if(res==false){ alert("age must be a number!"); document.forms["reForm"]["age"].value=""; //$("#age").focus(); return false; } return true; } </script></head><body><div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading text-center"> <h2>Create New Account</h2> </div> <div class="panel-body"> <form id="reForm" class="form-horizontal" role="form" method="POST" action="register"> <input type="hidden" name="_token" value="QFe0UARw5ThQWOQTtEetutiShrDpBZbCQBd87ypf"> <div class="form-group"> <label for="name" class="col-md-4 control-label">Name</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" value="" required autofocus> </div> </div> <div class="form-group"> <label for="age" class="col-md-4 control-label">Age</label> <div class="col-md-6"> <input id="age" type="text" class="form-control" name="age" value="" required> </div> </div> <div class="form-group"> <label for="address" class="col-md-4 control-label">Address</label> <div class="col-md-6"> <input id="address" type="text" class="form-control" name="address" value="" required> </div> </div> <div class="form-group"> <label for="password" class="col-md-4 control-label">Password</label> <div class="col-md-6"> <input id="pwd" type="password" class="form-control" name="pwd" required> </div> </div> <div class="form-group"> <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required> </div> </div> <div class="form-group"> <label for="password-confirm" class="col-md-4 control-label"></label> <div class="col-md-6"> <div class="g-recaptcha" data-sitekey="6Lc--SkUAAAAAFpxJNUtEhde4ACQlQySrjtL4rO9"></div> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <a href="http://localhost:8080/Spring_Mybatis/toLogin" class="btn btn-primary"> Cancel </a> <button type="submit" class="btn btn-primary"> Register </button> </div> </div> </form> </div> </div> </div> </div></div></body></html>
detail
<%@ 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>Detail</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <!-- insert jquery --><script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script><script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><!-- insert jquery validate --><script src="https://cdn.bootcss.com/jquery-validate/1.17.0/jquery.validate.js"></script><script> function reFunction(){ var name=document.getElementById("name").value; if(name==""){ alert("用户为空"); }else{ var form=document.getElementById("form"); form.submit(); alert("Update success!"); } } $(document).ready(function(){ if( (${user.id}) =="" ){ alert("用户名或密码错误,请重新输入!"); window.history.back(-1); } });</script></head><body><nav class="navbar navbar-default" role="navigation"><div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">测试</a> </div> <div> <!--向右对齐--> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> ${user.name}<b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="http://localhost:8080/Spring_Mybatis/toLogin">Sign out</a></li> </ul> </li> </ul> </div></div></nav><div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading text-center"> <h2>User Info</h2> </div> <div class="panel-body"> <form id ="form" class="form-horizontal" role="form" method="POST" action="update"> <div class="form-group"> <label for="id" class="col-md-4 control-label">Id</label> <div class="col-md-6"> <input id="id" type="text" class="form-control" name="id" disabled="true" value="" placeholder="${user.id}" required autofocus> </div> </div> <div class="form-group"> <label for="name" class="col-md-4 control-label">Name</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" disabled="true" value="" placeholder="${user.name}" required autofocus> </div> </div> <div class="form-group"> <label for="age" class="col-md-4 control-label">Age</label> <div class="col-md-6"> <input id="age" type="text" class="form-control" name="age" value="" disabled="true" placeholder="${user.age}"required autofocus> </div> </div> <div class="form-group"> <label for="address" class="col-md-4 control-label">Address</label> <div class="col-md-6"> <input id="address" type="text" class="form-control" name="address" value="" disabled="true" placeholder="${user.address}" required> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <a href="http://localhost:8080/Spring_Mybatis/toUpdate?id=${user.id}&name=${user.name}" class="btn btn-primary">Update User</a> <a href="http://localhost:8080/Spring_Mybatis/toDelete?id=${user.id}&name=${user.name}" class="btn btn-primary">Delete User</a> </div> </div> </form> </div> </div> </div> </div></div></body></html>
Delete
<%@ 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"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Delete 测试</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script type="text/javascript"> function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null) return unescape(r[2]); return null; } $(document).ready(function(){ //$("#sonpage_title").html(decodeURI(getQueryStringByName('name'))); $("#id").val(GetQueryString("id")); $("#name").val(GetQueryString("name")); $("#username").val(GetQueryString("name")); //document.findElementById("username").innerHTML=GetQueryString("name"); }); function returnLast(){ window.history.go(-1); } </script></head><body><nav class="navbar navbar-default" role="navigation"><div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">测试</a> </div> <div> <!--向右对齐--> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a id="username" href="#" class="dropdown-toggle" data-toggle="dropdown"> <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="http://localhost:8080/Spring_Mybatis/toLogin">Sign out</a></li> </ul> </li> </ul> </div></div></nav><div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading text-center"> <h2>Delete Your Account</h2> </div> <div class="panel-body"> <form class="form-horizontal" role="form" method="POST" action="delete"> <input type="hidden" name="_token" value="QFe0UARw5ThQWOQTtEetutiShrDpBZbCQBd87ypf"> <div class="form-group"> <label for="id" class="col-md-4 control-label">Id</label> <div class="col-md-6"> <input id="id" type="text" class="form-control" name="id" readonly="true"> </div> </div> <div class="form-group"> <label for="name" class="col-md-4 control-label">Name</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" readonly="true"> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button type="button" class="btn btn-primary" onclick="returnLast()"> Cancel </button> <button type="submit" class="btn btn-primary"> Confirm to delete the user? </button> </div> </div> </form> </div> </div> </div> </div></div></body></html>
update
<%@ 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"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Update</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script type="text/javascript"> function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null) return unescape(r[2]); return null; } $(document).ready(function(){ $("#id").val(GetQueryString("id")); $("#username").val(GetQueryString("name")); }); function returnLast(){ window.history.back(-1); } </script></head><body><nav class="navbar navbar-default" role="navigation"><div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand" href="#">测试</a> </div> <div> <!--向右对齐--> <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a id="username" href="#" class="dropdown-toggle" data-toggle="dropdown"> <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="http://localhost:8080/Spring_Mybatis/toLogin">Sign out</a></li> </ul> </li> </ul> </div></div></nav><div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading text-center"> <h2>Update Your Account</h2> </div> <div class="panel-body"> <form class="form-horizontal" role="form" method="POST" action="update"> <input type="hidden" name="_token" value="QFe0UARw5ThQWOQTtEetutiShrDpBZbCQBd87ypf"> <div class="form-group"> <label for="id" class="col-md-4 control-label">Id</label> <div class="col-md-6"> <input id="id" type="text" class="form-control" name="id" readonly="true"> </div> </div> <div class="form-group"> <label for="name" class="col-md-4 control-label">Name</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" value="" required autofocus> </div> </div> <div class="form-group"> <label for="age" class="col-md-4 control-label">Age</label> <div class="col-md-6"> <input id="age" type="text" class="form-control" name="age" value="" required autofocus> </div> </div> <div class="form-group"> <label for="address" class="col-md-4 control-label">Address</label> <div class="col-md-6"> <input id="address" type="text" class="form-control" name="address" value="" required> </div> </div> <div class="form-group"> <label for="password" class="col-md-4 control-label">Password</label> <div class="col-md-6"> <input id="pwd" type="password" class="form-control" name="pwd" required> </div> </div> <div class="form-group"> <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required> </div> </div> <div class="form-group"> <label for="password-confirm" class="col-md-4 control-label"></label> <div class="col-md-6"> <div class="g-recaptcha" data-sitekey="6Lc--SkUAAAAAFpxJNUtEhde4ACQlQySrjtL4rO9"></div> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button type="button" class="btn btn-primary" onclick="returnLast()"> Cancel </button> <button type="submit" class="btn btn-primary"> update </button> </div> </div> </form> </div> </div> </div> </div></div></body></html>
ok!
所有的代码已经齐全了。
- spring mvc+Mybatis+bootstrap简单应用
- Maven + Spring MVC+Mybatis + MySQL +AngularJS + Bootstrap 实现简单微博应用(一)环境搭建
- Maven + Spring MVC+Mybatis + MySQL +AngularJS + Bootstrap 实现简单微博应用(二)访问数据库
- Maven + Spring MVC+Mybatis + MySQL +AngularJS + Bootstrap 实现简单微博应用(三)前后台交互
- Spring MVC+Mybatis简单使用
- spring+spring mvc+mybatis+shiro+maven+bootstrap+ajax+json+分页
- spring MVC ajax 简单应用
- spring、mybatis、mvc 整合简单例子
- mybatis spring 集成 bootstrap
- spring+mybatis+spring-mvc
- Spring +Spring MVC+Mybatis
- Spring MVC 原理小结+简单应用
- Spring MVC 原理小结+简单应用
- Spring MVC 原理小结+简单应用
- 做一个合格的程序猿之Spring MVC+Spring + mybatis + Bootstrap 整合
- spring mvc 和 mybatis整合,简单的入门实例
- 自定义分页标签结合spring mvc、bootstrap、mybatis、mysql的使用
- spring boot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap实现后台权限管理系统源码
- 170804 逆向-RouterScan(8)
- Oracle使用实例:创建只读用户
- 文字的向上滚动
- sql语句优化
- nginx部署访问vue-cli搭建的项目
- spring mvc+Mybatis+bootstrap简单应用
- 第二题:公司发奖金:按照利润区间来规定提成比例,从键盘输入当月利润I,求应发放奖金总数
- ubuntu server conf
- HTML特殊字符编码对照表
- SILVAngs:免费在线宏基因组扩增子分析系统
- node-sass 安装失败的解决措施
- 创建Scrapy项目报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 19
- Android----实现短信发送器功能
- UVa804 习题 6-7 Petri网模拟(Petri Net Simulation,ACM/ICPC World Finals 1998)