项目目录结构
第一步:创建数据库和数据表
1 CREATE DATABASE 2 IF NOT EXISTS mybatis; 3 4 USE mybatis; 5 6 CREATE TABLE t_user ( 7 user_id INT (11) NOT NULL AUTO_INCREMENT, 8 user_name VARCHAR (20) NOT NULL, 9 user_age VARCHAR (20) NOT NULL, 10 PRIMARY KEY (user_id) 11 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
第二步:导入jar包
第三步:创建实体类
1 package com.oracle.model; 2 3 /** 4 * 5 * @ClassName: 类名:User 6 * @Description: 描述:User实体类 7 * @author: 作者:Back 8 * @date: 时间:2017年1月12日 下午2:12:55 9 */ 10 public class User { 11 // 用户id 12 private int id; 13 // 用户年龄 14 private String age; 15 // 用户名 16 private String userName; 17 18 /** 19 * 20 * @Title:User 21 * @Description:隐式构造方法 22 */ 23 public User() { 24 25 } 26 27 /** 28 * 29 * @Title:User 30 * @Description:全参构造方法 31 * @param id 32 * @param age 33 * @param userName 34 */ 35 public User(int id, String age, String userName) { 36 super(); 37 this.id = id; 38 this.age = age; 39 this.userName = userName; 40 } 41 42 /** 43 * 44 * @Title: getId 45 * @Description: TODO 46 * @return 47 * @return: int 48 */ 49 public int getId() { 50 return id; 51 } 52 53 /** 54 * 55 * @Title: setId 56 * @Description: TODO 57 * @param id 58 * @return: void 59 */ 60 public void setId(int id) { 61 this.id = id; 62 } 63 64 /** 65 * 66 * @Title: getAge 67 * @Description: TODO 68 * @return 69 * @return: String 70 */ 71 public String getAge() { 72 return age; 73 } 74 75 /** 76 * 77 * @Title: setAge 78 * @Description: TODO 79 * @param age 80 * @return: void 81 */ 82 public void setAge(String age) { 83 this.age = age; 84 } 85 86 /** 87 * 88 * @Title: getUserName 89 * @Description: TODO 90 * @return 91 * @return: String 92 */ 93 public String getUserName() { 94 return userName; 95 } 96 97 /** 98 * 99 * @Title: setUserName 100 * @Description: TODO 101 * @param userName 102 * @return: void 103 */ 104 public void setUserName(String userName) { 105 this.userName = userName; 106 } 107 108 }
第四步:创建UserDao接口
1 package com.oracle.dao; 2 3 import java.util.List; 4 5 import com.oracle.model.User; 6 7 /** 8 * 9 * @ClassName: 类名:UserMapper 10 * @Description: 描述:UserMapper接口 11 * @author: 作者:Back 12 * @date: 时间:2017年1月12日 下午2:16:10 13 */ 14 public interface UserMapper { 15 /** 16 * 17 * @Title: save 18 * @Description: 新增用户信息 19 * @param user 20 * @return: void 21 */ 22 public void save(User user); 23 24 /** 25 * 26 * @Title: update 27 * @Description: 修改用户信息 28 * @param user 29 * @return 30 * @return: boolean 31 */ 32 public boolean update(User user); 33 34 /** 35 * 36 * @Title: delete 37 * @Description: 删除用户信息 38 * @param id 39 * @return 40 * @return: boolean 41 */ 42 public boolean delete(int id); 43 44 /** 45 * 46 * @Title: findById 47 * @Description: 根据id查找用户信息 48 * @param id 49 * @return 50 * @return: User 51 */ 52 public User findById(int id); 53 54 /** 55 * 56 * @Title: findAll 57 * @Description: 查找全部用户信息 58 * @return 59 * @return: List<User> 60 */ 61 public List<User> findAll(); 62 }
第五步:在数据持久层(dao层)同级目录下创建UserMapper.xml SQL映射语句文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 5 <!-- namespace:必须与对应的接口全类名一致 id:必须与对应接口的某个对应的方法名一致 parameterType:参数类型 resultType:返回值类型--> 6 <mapper namespace="com.oracle.dao.UserMapper"> 7 <!-- 新增用户信息 --> 8 <insert id="save" parameterType="User"> 9 insert into 10 t_user(user_name,user_age) values(#{userName},#{age}) 11 </insert> 12 <!-- 更新用户信息 --> 13 <update id="update" parameterType="User"> 14 update t_user set 15 user_name=#{userName},user_age=#{age} where user_id=#{id} 16 </update> 17 <!-- 删除用户信息 --> 18 <delete id="delete" parameterType="int"> 19 delete from t_user where 20 user_id=#{id} 21 </delete> 22 <!-- 根据用户Id查询用户信息 --> 23 <!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路劲 --> 24 <select id="findById" parameterType="int" resultType="User"> 25 select 26 user_id id,user_name userName,user_age age from t_user where 27 user_id=#{id} 28 </select> 29 <!-- 查询所有用户信息 --> 30 <select id="findAll" resultType="User"> 31 select user_id id,user_name 32 userName,user_age age from t_user 33 </select> 34 </mapper>
第六步:在service下创建UserService.java接口
1 package com.oracle.service; 2 3 import java.util.List; 4 5 import com.oracle.model.User; 6 7 /** 8 * 9 * @ClassName: 类名:UserService 10 * @Description: 描述:业务逻辑接口层 11 * @author: 作者:Back 12 * @date: 时间:2017年1月12日 下午2:45:26 13 */ 14 public interface UserService { 15 /** 16 * 17 * @Title: save 18 * @Description: 新增用户信息 19 * @param user 20 * @return: void 21 */ 22 public void save(User user); 23 24 /** 25 * 26 * @Title: update 27 * @Description: 修改用户信息 28 * @param user 29 * @return 30 * @return: boolean 31 */ 32 public boolean update(User user); 33 34 /** 35 * 36 * @Title: delete 37 * @Description: 删除用户信息 38 * @param id 39 * @return 40 * @return: boolean 41 */ 42 public boolean delete(int id); 43 44 /** 45 * 46 * @Title: findById 47 * @Description: 根据用户id查找用户信息 48 * @param id 49 * @return 50 * @return: User 51 */ 52 public User findById(int id); 53 54 /** 55 * 56 * @Title: findAll 57 * @Description: 查找全部用户信息 58 * @return 59 * @return: List<User> 60 */ 61 public List<User> findAll(); 62 }
第七步:在com.oracle.service.impl下实现Service接口
1 package com.oracle.service.impl; 2 3 import java.util.List; 4 5 import javax.annotation.Resource; 6 7 import org.springframework.stereotype.Service; 8 import org.springframework.transaction.annotation.Transactional; 9 10 import com.liuxianglin.dao.UserMapper; 11 import com.liuxianglin.model.User; 12 import com.liuxianglin.service.UserService; 13 14 /** 15 * Copyright © 2017刘祥林|BMEETYMISS. All rights reserved. 16 * 17 * @Title: 文件名:UserviceImpl.java 18 * @Prject: 项目名:SSM 19 * @Package: 包名:com.liuxianglin.service.impl 20 * @ClassName: 类名:UserviceImpl 21 * @Description: 描述:TODO 22 * @author: 作者:Back 23 * @date: 时间:2017年1月11日 下午5:23:58 24 * @version: 版本:V1.0 25 */ 26 27 @Service 28 @Transactional // 此处不再进行创建SqlSession和提交事务,都已交由spring去管理了 29 public class UserviceImpl implements UserService { 30 31 @Resource 32 private UserMapper mapper; 33 34 /* 35 * (non Javadoc) 36 * 37 * @Title: save 38 * 39 * @Description: TODO 40 * 41 * @param user 42 * 43 * @see com.liuxianglin.service.UserService#save(com.liuxianglin.model.User) 44 */ 45 @Override 46 public void save(User user) { 47 // TODO Auto-generated method stub 48 mapper.save(user); 49 } 50 51 /* 52 * (non Javadoc) 53 * 54 * @Title: update 55 * 56 * @Description: TODO 57 * 58 * @param user 59 * 60 * @return 61 * 62 * @see 63 * com.liuxianglin.service.UserService#update(com.liuxianglin.model.User) 64 */ 65 @Override 66 public boolean update(User user) { 67 // TODO Auto-generated method stub 68 return mapper.update(user); 69 } 70 71 /* 72 * (non Javadoc) 73 * 74 * @Title: delete 75 * 76 * @Description: TODO 77 * 78 * @param id 79 * 80 * @return 81 * 82 * @see com.liuxianglin.service.UserService#delete(int) 83 */ 84 @Override 85 public boolean delete(int id) { 86 // TODO Auto-generated method stub 87 return mapper.delete(id); 88 } 89 90 /* 91 * (non Javadoc) 92 * 93 * @Title: findById 94 * 95 * @Description: TODO 96 * 97 * @param id 98 * 99 * @return 100 * 101 * @see com.liuxianglin.service.UserService#findById(int) 102 */ 103 @Override 104 public User findById(int id) { 105 // TODO Auto-generated method stub 106 User user = mapper.findById(id); 107 return user; 108 } 109 110 /* 111 * (non Javadoc) 112 * 113 * @Title: findAll 114 * 115 * @Description: TODO 116 * 117 * @return 118 * 119 * @see com.liuxianglin.service.UserService#findAll() 120 */ 121 @Override 122 public List<User> findAll() { 123 // TODO Auto-generated method stub 124 List<User> findAllList = mapper.findAll(); 125 return findAllList; 126 } 127 128 }
第八步:在actioin中创建UserAction.java
1 package com.oracle.action; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.List; 6 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.stereotype.Controller; 12 import org.springframework.web.bind.annotation.RequestMapping; 13 14 import com.liuxianglin.model.User; 15 import com.liuxianglin.service.UserService; 16 17 /** 18 * Copyright © 2017刘祥林|BMEETYMISS. All rights reserved. 19 * 20 * @Title: 文件名:UserAction.java 21 * @Prject: 项目名:SSM 22 * @Package: 包名:com.liuxianglin.action 23 * @ClassName: 类名:UserAction 24 * @Description: 描述:TODO 25 * @author: 作者:Back 26 * @date: 时间:2017年1月11日 下午5:31:17 27 * @version: 版本:V1.0 28 */ 29 @Controller 30 @RequestMapping("/user") 31 public class UserAction { 32 // 自动注入属性 33 @Autowired 34 private UserService service; 35 36 public String toAddUser(HttpServletRequest request) { 37 return "/addUser"; 38 } 39 40 /** 41 * 42 * @Title: addUser 43 * @Description: 跳转到添加用户界面 44 * @param user 45 * @param request 46 * @return 47 * @return: String 48 */ 49 @RequestMapping("/addUser") 50 public String addUser(User user, HttpServletRequest request) { 51 service.save(user); 52 return "redirect:/user/getAllUser"; 53 } 54 55 /** 56 * 57 * @Title: updateUser 58 * @Description:编辑用户 59 * @param user 60 * @param request 61 * @return 62 * @return: String 63 */ 64 public String updateUser(User user, HttpServletRequest request) { 65 if (service.update(user)) { 66 user = service.findById(user.getId()); 67 request.setAttribute("user", user); 68 return "redirect:/user/getAllUser"; 69 } else { 70 return "/error"; 71 } 72 } 73 74 /** 75 * 76 * @Title: delUser 77 * @Description: 删除用户 78 * @param id 79 * @param request 80 * @param response 81 * @return: void 82 */ 83 public void delUser(int id, HttpServletRequest request, HttpServletResponse response) { 84 String result = "{\"result\":\"error\"}"; 85 if (service.delete(id)) { 86 result = "{\"result\":\"success\"}"; 87 } 88 response.setContentType("application/json"); 89 try { 90 PrintWriter out = response.getWriter(); 91 out.write(result); 92 } catch (IOException e) { 93 e.printStackTrace(); 94 } 95 } 96 97 /** 98 * 99 * @Title: getUser 100 * @Description: 根据id查询单个用户 101 * @param id 102 * @param request 103 * @return 104 * @return: String 105 */ 106 public String getUser(int id, HttpServletRequest request) { 107 request.setAttribute("user", service.findById(id)); 108 return "/editUser"; 109 } 110 111 /** 112 * 113 * @Title: getAllUser 114 * @Description: 获取全部用户列表 115 * @param request 116 * @return 117 * @return: String 118 */ 119 public String getAllUser(HttpServletRequest request) { 120 List<User> findAll = service.findAll(); 121 request.setAttribute("userList", findAll); 122 return "/allUser"; 123 } 124 125 }
第九步:在src下创建log4j.properties属性文件
1 ### set log levels ### 2 log4j.rootLogger = info , Console , D 3 #Console 4 log4j.appender.Console=org.apache.log4j.ConsoleAppender 5 log4j.appender.Console.layout=org.apache.log4j.PatternLayout 6 log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n 7 log4j.logger.java.sql.ResultSet=INFO 8 log4j.logger.org.apache=INFO 9 log4j.logger.java.sql.Connection=INFO 10 log4j.logger.java.sql.Statement=INFO 11 log4j.logger.java.sql.PreparedStatement=INFO 12 #output2file 13 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 14 log4j.appender.D.File = D:/logs/log.log 15 log4j.appender.D.Append = true 16 log4j.appender.D.Threshold = DEBUG 17 log4j.appender.D.layout = org.apache.log4j.PatternLayout 18 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
第十步:在src下创建mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 6 <!-- 实体类,简称 -设置别名 --> 7 <typeAliases> 8 <typeAlias alias="User" type="com.oracle.model.User" /> 9 </typeAliases> 10 <!-- 实体接口映射资源 --> 11 <!-- 说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml --> 12 <mappers> 13 <mapper resource="com/oracle/dao/UserMapper.xml" /> 14 </mappers> 15 </configuration>
第十一步:在src下创建spring-common.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context-4.0.xsd 10 http://www.springframework.org/schema/tx 11 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 12 13 14 <!-- 1. 数据源 : DriverManagerDataSource --> 15 <bean id="dataSource" 16 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 17 <!-- jdbc驱动类名字 --> 18 <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 19 <!-- 数据库地址 --> 20 <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> 21 <!-- 数据账户名 --> 22 <property name="username" value="root" /> 23 <!-- 数据密码 --> 24 <property name="password" value="123456" /> 25 </bean> 26 27 <!-- 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 MyBatis定义数据源,同意加载配置 --> 28 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 29 <property name="dataSource" ref="dataSource"></property> 30 <property name="configLocation" value="classpath:mybatis-config.xml" /> 31 </bean> 32 33 <!-- 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory 34 basePackage:指定sql映射文件/接口所在的包(自动扫描) --> 35 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 36 <property name="basePackage" value="com.oracle.dao"></property> 37 <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 38 </bean> 39 40 <!-- 4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源 --> 41 <bean id="txManager" 42 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 43 <property name="dataSource" ref="dataSource"></property> 44 </bean> 45 46 <!-- 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器 --> 47 <tx:annotation-driven transaction-manager="txManager" /> 48 49 </beans>
第十四步:在src下创建一个spring-mvc.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-4.0.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 11 12 <!-- 注解扫描包 --> 13 <context:component-scan base-package="com.oracle" /> 14 15 <!-- 开启注解 --> 16 <mvc:annotation-driven /> 17 18 <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd --> 19 <mvc:resources mapping="/img/**" location="/img/" /> 20 <mvc:resources mapping="/js/**" location="/js/" /> 21 <mvc:resources mapping="/css/**" location="/css/" /> 22 <mvc:resources mapping="/html/**" location="/html/" /> 23 24 25 26 <!-- 定义跳转的文件的前后缀 ,视图模式配置 --> 27 <bean id="viewResolver" 28 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 29 <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> 30 <property name="prefix" value="/WEB-INF/jsp/" /> 31 <property name="suffix" value=".jsp" /> 32 </bean> 33 </beans>
第十五步:配置web.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 id="WebApp_ID" version="3.1"> 6 <display-name>SpringMVC_Spriing_Mybatis</display-name> 7 <!-- 加载Spring容器配置 --> 8 <listener> 9 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 10 </listener> 11 12 <!-- 设置Spring容器加载所有的配置文件的路径 --> 13 <context-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>classpath*:spring-*.xml</param-value> 16 </context-param> 17 18 <!-- 配置SpringMVC核心控制器 --> 19 <servlet> 20 <servlet-name>springMVC</servlet-name> 21 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 22 <!-- 配置初始配置化文件,前面contextConfigLocation看情况二选一 --> 23 <init-param> 24 <param-name>contextConfigLocation</param-name> 25 <param-value>classpath*:spring-mvc.xml</param-value> 26 </init-param> 27 <!-- 启动加载一次 --> 28 <load-on-startup>1</load-on-startup> 29 </servlet> 30 31 <!--为DispatcherServlet建立映射 --> 32 <servlet-mapping> 33 <servlet-name>springMVC</servlet-name> 34 <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> 35 <url-pattern>/</url-pattern> 36 </servlet-mapping> 37 38 <!-- 防止Spring内存溢出监听器 --> 39 <listener> 40 <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> 41 </listener> 42 43 <!-- 解决工程编码过滤器 --> 44 <filter> 45 <filter-name>encodingFilter</filter-name> 46 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 47 <init-param> 48 <param-name>encoding</param-name> 49 <param-value>UTF-8</param-value> 50 </init-param> 51 <init-param> 52 <param-name>forceEncoding</param-name> 53 <param-value>true</param-value> 54 </init-param> 55 </filter> 56 57 <filter-mapping> 58 <filter-name>encodingFilter</filter-name> 59 <url-pattern>/*</url-pattern> 60 </filter-mapping> 61 62 <welcome-file-list> 63 <welcome-file>index.jsp</welcome-file> 64 </welcome-file-list> 65 </web-app>
第十六步:前端配置引入jquery-1.7.1.js 创建index.jsp文件
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 5 + path + "/"; 6 %> 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 <title>首页</title> 12 </head> 13 <body> 14 <a href="<%=basePath%>user/getAllUser">进入用户管理页</a> 15 </body> 16 </html>
创建allUser.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 5 + path + "/"; 6 %> 7 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html> 10 <head> 11 <base href="<%=basePath%>"> 12 <script type="text/javascript" src="js/jquery-1.7.1.js"></script> 13 <title>用户列表</title> 14 15 <script type="text/javascript"> 16 function del(id){ 17 alert("删除"); 18 $.get("<%=basePath%> 19 user/delUser?id=" + id, function(data) { 20 if ("success" == data.result) { 21 window.location.reload(); 22 } else { 23 alert("删除失败"); 24 } 25 }); 26 } 27 </script> 28 </head> 29 <body> 30 <h6> 31 <a href="<%=basePath%>user/toAddUser">添加用户</a> 32 </h6> 33 <table border="1"> 34 <tbody> 35 <tr> 36 <th>姓名</th> 37 <th>年龄</th> 38 <th>操作</th> 39 </tr> 40 <c:if test="${!empty userList }"> 41 <c:forEach items="${userList}" var="user"> 42 <tr> 43 <td>${user.userName }</td> 44 <td>${user.age }</td> 45 <td><a href="<%=basePath%>user/getUser?id=${user.id}">编辑</a> 46 <a href="javascript:del('${user.id }')">删除</a></td> 47 </tr> 48 </c:forEach> 49 </c:if> 50 </tbody> 51 </table> 52 </body> 53 </html>
创建editUser.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 5 + path + "/"; 6 %> 7 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html> 10 <head> 11 <base href="<%=basePath%>"> 12 <title>编辑用户</title> 13 <script type="text/javascript"> 14 function updateUser(){ 15 var form = document.forms[0]; 16 form.action = "<%=basePath%> 17 user/updateUser"; 18 form.method = "post"; 19 form.submit(); 20 } 21 </script> 22 23 </head> 24 25 <body> 26 <h1>添加用户</h1> 27 <form action="" name="userForm"> 28 <input type="hidden" name="id" value="${user.id }" /> 姓名:<input 29 type="text" name="userName" value="${user.userName }" /> 年龄:<input 30 type="text" name="age" value="${user.age }" /> <input type="button" 31 value="编辑" onclick="updateUser()" /> 32 </form> 33 </body> 34 35 </html>
创建addUser.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 // 获取请求的路径 4 String path = request.getContextPath(); 5 // getScheme:协议 getServerName:主机名 getServerPort:端口号 6 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 7 + path + "/"; 8 %> 9 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 11 <html> 12 <head> 13 <base href="<%=basePath%>"> 14 <title>添加用户</title> 15 <script type="text/javascript"> 16 function addUser(){ 17 var form = document.forms[0]; 18 form.action = "<%=basePath%>user/addUser"; 19 form.method = "post"; 20 form.submit(); 21 } 22 </script> 23 24 </head> 25 26 <body> 27 <h1>添加用户</h1> 28 <form action="" name="userForm"> 29 姓名:<input type="text" name="userName"> 年龄:<input type="text" 30 name="age"> <input type="button" value="添加" 31 onclick="addUser()"> 32 </form> 33 </body> 34 </html>