ssm框架整合+pageHelper--实现了简单的增删改查与分页

首先附上maven项目架构图(代码中标红的全部是要换成自己项目里相对应的名字)


1:在pom里写上ssm整合需要的jar包

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <spring.version>4.3.14.RELEASE</spring.version>
  <mybatis.version>3.4.1</mybatis.version>
</properties>
<dependencies>
  <!--spring-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.6</version>
  </dependency>


  <!--mybati-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
  </dependency>

  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
  </dependency>

  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.5</version>
  </dependency>
  <!-- 数据库链接 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.1.41</version>
  </dependency>

  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
  </dependency>

  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
  </dependency>

  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.7</version>
  </dependency>
  <!-- apache工具类包 -->
  <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.2.2</version>
  </dependency>

  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
  </dependency>

  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
  </dependency>

  <dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.9</version>
  </dependency>

  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.3.2</version>
  </dependency>

  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.14</version>
  </dependency>

  <!-- 引入Mybatis分页插件 -->
  <!-- 引入5.0版本在测试的时候会报错 4.2版本也会报错
  4.2版本总是出现String无法转换为某个对象的错误
   -->
  <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.1</version>
  </dependency>

  <!-- json解析jar-->
  <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
  </dependency>

  <!-- servlet组件支持jar -->
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
  </dependency>

  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
</dependencies>


2:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <!-- 初始化文件路径 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath*:spring/applicationContext.xml
    </param-value>

  </context-param>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>

  <!-- web容器初始化装载applicationContext配置文件 -->
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>
  <!-- web容器初始化装载applicationContext配置文件 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 定期清理没有实用的bean实例, 避免出现内存溢出问题 -->
  <listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
  <!-- 配置Log4j监听器 -->
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>

  <!-- springMvc拦截请求 -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:spring/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!-- 数据源监控通知 -->
  <filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
      <param-name>exclusions</param-name>
      <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  <!--拦截所有请求,并进行编码处理-->
  <filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 默认打开的页面 -->
  <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

3:配置spring-mvc.xml

<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.ytsd.modules" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>

<!-- 开启SpringMVC注解模式 -->
<mvc:annotation-driven/>

<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="contentType" value="text/jsp;charset=UTF-8"/>
    <property name="prefix" value="/view/modules/" />
    <property name="suffix" value=".jsp" />
</bean>

4:配置与mybatis整合,名字自取我这里叫(applicationContext.xml)

      注意:数据库连接池的value一定要与jdbc.properties一样

<!-- 自动扫描 -->
<context:component-scan base-package="com.ytsd">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

<!-- 配置数据库相关参数properties的属性:${url} -->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="dbType" value="${db.Type}"/>
    <property name="driverClassName" value="${db.driverClassName}"/>
    <property name="url" value="${db.url}"/>
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
</bean>

<!-- springMyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
    <!-- 自动扫描mapping.xml文件 -->
   <!-- <property name="mapperLocations" value="classpath:com/ytsd/west/modules/**/*Dao.xml" />-->
</bean>


<!-- 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 注入sqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <!-- 给出需要扫描Dao接口包 -->
    <property name="basePackage" value="com.ytsd.modules.*.dao"/>
</bean>

<!-- 配置事务管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!-- 注入数据库连接池 -->
    <property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>

5:数据库连接配置:jdbc.properties(park为数据库名称)

#mysql
db.Type=mysql
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/park?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT
db.username=fu
db.password=123456

6:日志配置:log4j.properties

log4j.rootLogger=DEBUG,console,file

#-----------------------------------#
#1 定义日志输出目的地为控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
####可以灵活地指定日志输出格式,下面一行是指定具体的格式 ###
#%c: 输出日志信息所属的类目,通常就是所在类的全名
#%m: 输出代码中指定的消息,产生的日志具体信息
#%n: 输出一个回车换行符,Windows平台为"/r/n"Unix平台为"/n"输出日志信息换行
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#-----------------------------------#
#2 文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
#日志文件输出目录
log4j.appender.file.File=log/tibet.log
#定义文件最大大小
log4j.appender.file.MaxFileSize=10mb
###输出日志信息###
#最低级别
log4j.appender.file.Threshold=ERROR
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#4 mybatis 显示SQL语句部分
log4j.logger.org.mybatis=DEBUG
#log4j.logger.cn.tibet.cas.dao=DEBUG
#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG#
#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG#
#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG#
#log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

7:配置mybatis的映射资源文件mybatis-config.xml

<configuration>

<!-- 实体接口映射资源,简称 -设置别名 -->
    <!--
    说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml
    -->
    <typeAliases>
        <typeAlias alias="User" type="com.ytsd.modules.test.entity.UserEntity" />
    </typeAliases>


    <!--分页配置-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
        </plugin>
    </plugins>
</configuration>

8:配置结束了,接下来看方法和实体

userEntity

 
 
public class UserEntity {
    
    private int id;
    private String userName;   
    private String age;    
      
    @Override  
    public String toString() {  
        return "User [id=" + id + ", age=" + age + ", userName=" + userName  
                + "]";  
    }  
    public UserEntity(){
        super();    
    }    
    public int getId() {
        return id;    
    }    
    public void setId(int id) {
        this.id = id;    
    }    
    public String getAge() {
        return age;    
    }    
    public void setAge(String age) {    
        this.age = age;    
    }    
    public String getUserName() {    
        return userName;    
    }    
    public void setUserName(String userName) {    
        this.userName = userName;    
    }    
    public UserEntity(int id, String age, String userName) {
        super();    
        this.id = id;    
        this.age = age;    
        this.userName = userName;    
    }    
 
 

UserService

@Service
public class UserService{
    @Autowired
    private UserDao userDao;
    public void save(UserEntity user){
       userDao.insert(user);
    }
    public boolean edit(UserEntity user){
       return userDao.edit(user);
    }
    public boolean deleteUser(int id){
        return userDao.deleteUser(id);
    }
    public UserEntity findById(int id){
        return  userDao.findById(id);
    }
    public List<UserEntity> findAll(){
        return userDao.findAll();
    }
}  
userDao
@Repository
public interface UserDao{
    int insert(UserEntity user);
    boolean edit(UserEntity user);
    boolean deleteUser(int id);
    UserEntity findById(int id);
    List<UserEntity> findAll();
}    
 
 

userDao.xml类(如果dao.xml与dao在同一层包目录下则applicationContext.xml里不用配置自动扫描mapping.xml文件)

!--
    namespace:必须与对应的接口全类名一致  UserMapper.java
    id :必须与对应接口的某个对应的方法名一致即必须要和UserMapper.java接口中的方法同名。
 -->
<mapper namespace="com.ytsd.modules.test.dao.UserDao">

<insert id="insert" parameterType="User">
    insert into t_user(userName,age) values(#{userName},#{age})
</insert>

<update id="edit" parameterType="User">
    update t_user set userName=#{userName},age=#{age} where id=#{id}
</update>

<delete id="deleteUser" parameterType="int">
    delete from t_user where id=#{id}
</delete>

<!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路径 -->
<select id="findById" parameterType="int" resultType="User">
    select  id,userName,age from t_user where id=#{id}
</select>

<select id="findAll" resultType="User">
    select  id,userName,age from t_user
</select>

</mapper>
@Controller
@RequestMapping("/user")
public class UserController {  
    @Autowired
    private UserService userService;
    /**  
     * 获取所有用户列表  
     * @param request  
     * @return  
     */
    @RequestMapping("/getAllUser")  
    public String getAllUser(@RequestParam(required = false, defaultValue = "1") Integer page,
                             HttpServletRequest request, Model model){
        PageHelper.startPage(page,2);
        List<UserEntity> user = userService.findAll();
        PageInfo<UserEntity> p = new PageInfo<UserEntity>(user);
        model.addAttribute("page",p);
        model.addAttribute("userList", user);
        request.setAttribute("userList", user);
        return "test/allUser";
    }  
    /**  
     * 跳转到添加用户界面  
     * @param
     * @return  
     */  
    @RequestMapping("/toAddUser")  
    public String toAddUser(){  
        return "test/addUser";
    }  
    /**  
     * 添加用户并重定向  
     * @param user  
     * @param
     * @return  
     */  
    @RequestMapping("/addUser")  
    public String addUser(UserEntity user){
        userService.save(user);
        return "redirect:/user/getAllUser";
    }  
    /**  
     *编辑用户  
     * @param user  
     * @param request  
     * @return  
     */  
    @RequestMapping("/updateUser")  
    public String updateUser(UserEntity user, HttpServletRequest request, Model model){
        if(userService.edit(user)){
            user = userService.findById(user.getId());  
            request.setAttribute("user", user);  
            model.addAttribute("user", user);  
            return "redirect:/user/getAllUser";  
        }else{  
            return "/error";  
        }
    }  
    /**  
     * 根据id查询单个用户  
     * @param id  
     * @param request  
     * @return  
     */  
    @RequestMapping("/getUser")  
    public String getUser(int id,HttpServletRequest request,Model model){
        request.setAttribute("user", userService.findById(id));  
        model.addAttribute("user", userService.findById(id));  
        return "test/editUser";
    }  
    /**  
     * 删除用户  
     * @param id  
     * @param
     * @param
     */  
    @RequestMapping("/delUser")
    public String delUser(int id){
        userService.deleteUser(id);
        return "redirect:/user/getAllUser";
    }
}  

9:方法结束了,接下来看页面(index.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>首页</title>
</head>
<body>
<h5>
    <a href="<%=basePath%>/user/getAllUser">进入用户管理页</a>
</h5>
</body>
</html>

allUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
    <title>用户列表</title>

    <script type="text/javascript">
        function del(id){
            $.get("<%=basePath%>user/delUser.do?id=" + id,function(data){
                if("success" == data.result){
                    alert("删除成功");
                    window.location.reload();
                }else{
                    alert("删除失败");
                }
            });
        }
    </script>
</head>

<body>
<h6><a href="<%=basePath%>user/toAddUser">添加用户</a></h6>
<table border="1">
    <tbody>
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>操作</th>
    </tr>
    <c:if test="${!empty userList }">
        <c:forEach items="${userList}" var="user">
            <tr>
                <td>${user.userName }</td>
                <td>${user.age }</td>
                <td>
                    <a href="<%=basePath%>user/getUser.do?id=${user.id}">编辑</a>
                    <a href="<%=basePath%>user/delUser.do?id=${user.id}">删除</a>
                </td>
            </tr>
        </c:forEach>
    </c:if>
    </tbody>

</table>
   <p>
    每页${page.pageSize}条 当前页${page.size}${page.pageNum}/${page.pages}页 总条数${page.total}
   </p>
    <c:if test="${page.isFirstPage==true}"><a>首页</a></c:if>
    <c:if test="${page.isFirstPage==false}">
        <a href="<%=basePath%>user/getAllUser.do?page=${page.firstPage}">首页</a>
    </c:if>

    <c:if test="${page.hasPreviousPage==true}">
        <a href="<%=basePath%>user/getAllUser.do?page=${page.prePage}">上一页</a>
    </c:if>
    <c:if test="${page.hasPreviousPage==false}"><a>上一页</a></c:if>

    <c:if test="${page.hasNextPage==true}">
        <a href="<%=basePath%>user/getAllUser.do?page=${page.nextPage}">下一页</a>
    </c:if>
    <c:if test="${page.hasNextPage==false}"><a>下一页</a></c:if>

    <c:if test="${page.isLastPage==true}"><a>末页</a></c:if>
    <c:if test="${page.isLastPage==false}">
        <a href="<%=basePath%>user/getAllUser.do?page=${page.lastPage}">末页</a>
    </c:if>
</body>
</html>

addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">

    <title>添加用户</title>

    <script type="text/javascript">
        function addUser(){
            var form = document.forms[0];
            form.action = "<%=basePath%>user/addUser";
            form.method="post";
            form.submit();
        }
    </script>

</head>

<body>
<h1>添加用户</h1>
<form action="" name="userForm">
    姓名:<input type="text" name="userName">
    年龄:<input type="text" name="age">
    <input type="button" value="添加" onclick="addUser()">
</form>
</body>
</html>

editUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">

    <title>编辑用户</title>

    <script type="text/javascript">
        function updateUser(){
            var form = document.forms[0];
            form.action = "<%=basePath%>user/updateUser";
            form.method="post";
            form.submit();
        }
    </script>

</head>

<body>
<h1>添加用户</h1>
<form action="" name="userForm">
    <input type="hidden" name="id" value="${user.id }"/>
    姓名:<input type="text" name="userName" value="${user.userName }"/>
    年龄:<input type="text" name="age" value="${user.age }"/>
    <input type="button" value="编辑" onclick="updateUser()"/>
</form>
</body>

</html>

接下来效果图





项目就到这结束了,有问题可以留言,项目源码点击打开链接

猜你喜欢

转载自blog.csdn.net/weixin_41965979/article/details/80926877