SSM整合
基于【狂神说Java】Spring5最新完整教程IDEA版通俗易懂
视频地址:https://www.bilibili.com/video/BV1aE41167Tu
笔记地址:https://www.kuangstudy.com/zl/ssm#1381880045424898050
免责说明:笔记参照原来《狂神SSM教程》里的Spring MVC笔记为模板做的笔记。会有大量相同的笔记。仅用于个人学习。用来发博客
ssm是由mybatis,spring,spring-mvc组成的
- Spring Mvc:主要作用,跳转页面,接收参数,负责
Controller
层。 - Spring:管理bean,处理业务,负责
Service
层。 - MyBatis:和数据打交道,处理Sql,
Dao
层。
1、使用MySQL数据库搭建一个简单的表
CREATE DATABASE `ssm`;
USE `ssm`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `ssm`.`users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别,0男,1女',
`tel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话',
`mail` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮件',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态,0正常,1禁用',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
INSERT INTO `users`(`user_name`, `sex`, `tel`, `mail`, `status`) VALUES
('admin', '0', '123456', '', '0'),
('user1', '0', '123456', '', '0');
2、使用idea新建Maven项目
添加Pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>ssm-user</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>ssm-user Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<!--Junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!--Servlet - JSP -->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<!--Spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!--Spring操作数据库的话,还需要一个spring-jdbc
-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!--注解依赖 https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<!--Maven资源过滤设置 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
3、创建基本结构和配置框架!
-
建mapper包
-
建pojo包
-
建service包
-
建controller包
4、编写mybatis层
1、db.properties连接数据库
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=123456
2、实体类pojo
Users.java
package com.zl.pojo;
public class Users {
private int userId;
private String userName;
private String sex;
private String tel;
private String mail;
private String status;
public Users() {
}
public Users(int userId, String userName, String sex, String tel, String mail, String status) {
this.userId = userId;
this.userName = userName;
this.sex = sex;
this.tel = tel;
this.mail = mail;
this.status = status;
}
public Users( String userName, String sex, String tel, String mail, String status) {
this.userName = userName;
this.sex = sex;
this.tel = tel;
this.mail = mail;
this.status = status;
}
@Override
public String toString() {
return "Users{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", sex='" + sex + '\'' +
", tel='" + tel + '\'' +
", mail='" + mail + '\'' +
", status='" + status + '\'' +
'}';
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
3、mapper层接口
UsersMapper.java
package com.zl.mapper;
import com.zl.pojo.Users;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UsersMapper {
// 添加
int addUsers(Users users);
// 查询
List<Users> allUsers(Users users);
// 根据ID查询
Users getUsersById(@Param("id") int id);
// 修改
int updateUsers(Users users);
// 删除
int delUsers(@Param("id") int id);
}
4、创建对应的UsersMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zl.mapper.UsersMapper">
<insert id="addUsers">
insert into users (user_name, sex, tel, mail, status)
values (#{userName},#{sex},#{tel},#{mail},#{status});
</insert>
<delete id="delUsers">
delete
from users
where user_id=#{id};
</delete>
<update id="updateUsers">
update users
set user_name= #{userName},
sex= #{sex},
tel= #{tel},
mail= #{mail},
status= #{status}
where user_id=#{userId};
</update>
<resultMap id="users" type="users">
<id property="userId" column="user_id"></id>
<result property="userName" column="user_name"></result>
<result property="sex" column="sex"></result>
<result property="tel" column="tel"></result>
<result property="mail" column="mail"></result>
<result property="status" column="status"></result>
</resultMap>
<select id="allUsers" resultMap="users">
select *
from users
<where>
<if test="userName != null and userName!=''">
user_name LIKE CONCAT(CONCAT('%',#{userName}),'%')
</if>
<if test="tel != null and tel!=''">
AND tel like CONCAT(CONCAT('%',#{tel}),'%')
</if>
</where>;
</select>
<select id="getUsersById" resultMap="users">
select *
from users
where user_id=#{id};
</select>
</mapper>
5、service层接口
UsersService.java
package com.zl.service;
import com.zl.pojo.Users;
import java.util.List;
public interface UsersService {
// 添加
int addUsers(Users users);
// 查询
List<Users> allUsers(Users users);
// 根据ID查询
Users getUsersById(int id);
// 修改
int updateUsers(Users users);
// 删除
int delUsers(int id);
}
6、service层接口的实现类
UsersServiceImpl.java
package com.zl.service.Impl;
import com.zl.mapper.UsersMapper;
import com.zl.pojo.Users;
import com.zl.service.UsersService;
import org.springframework.stereotype.Service;
import java.util.List;
public class UsersServiceImpl implements UsersService {
private UsersMapper usersMapper;
public void setUsersMapper(UsersMapper usersMapper) {
this.usersMapper = usersMapper;
}
@Override
public int addUsers(Users users) {
users.setStatus("0");
return usersMapper.addUsers(users);
}
@Override
public List<Users> allUsers(Users users) {
return usersMapper.allUsers(users);
}
@Override
public Users getUsersById(int id) {
return usersMapper.getUsersById(id);
}
@Override
public int updateUsers(Users users) {
return usersMapper.updateUsers(users);
}
@Override
public int delUsers(int id) {
return usersMapper.delUsers(id);
}
}
6、建一个mybatis的xml文件
mybatis-config.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>
<!-- 日志-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
这步可以省略,为了展示是ssm我就把这个留下来了
5、spring层
1、编写Spring整合Mybatis的相关的配置文件spring-dao.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置整合mybatis -->
<!-- 1.关联数据库文件 -->
<context:property-placeholder
location="classpath:database.properties"/>
<!-- 2.数据库连接池 -->
<!--数据库连接池
dbcp 半自动化操作 不能自动连接
c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
-->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 配置连接池属性 -->
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- c3p0连接池的私有属性 -->
<property name="maxPoolSize" value="30"/>
<property name="minPoolSize" value="10"/>
<!-- 关闭连接后不自动commit -->
<property name="autoCommitOnClose" value="false"/>
<!-- 获取连接超时时间 -->
<property name="checkoutTimeout" value="10000"/>
<!-- 当获取连接失败重试次数 -->
<property name="acquireRetryAttempts" value="2"/>
</bean>
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--扫描bean包,设置别名-->
<property name="typeAliasesPackage" value="com.zl.pojo"/>
<!--扫描映射文件-->
<property name="mapperLocations">
<list>
<value>classpath:com/zl/mapper/*Mapper.xml</value>
</list>
</property>
</bean>
<!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
<!--解释 : https://www.cnblogs.com/jpfss/p/7799806.html-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 给出需要扫描Dao接口包 -->
<property name="basePackage" value="com.zl.mapper"/>
</bean>
</beans>
2、编写Spring整合service层的相关的配置文件spring-service.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描service下的包 也就是扫描相关的bean-->
<context:component-scan base-package="com.zl.service">
</context:component-scan>
<!-- 将我们的所有业务类,注入到spring,可以通过配置或者注解实现-->
<bean id="usersServiceImpl" class="com.zl.service.Impl.UsersServiceImpl">
<property name="usersMapper" ref="usersMapper"></property>
</bean>
<!-- 引入一个事务管理器,其中依赖DataSource,借以获取连接,进而控制事务逻辑-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入数据源-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- <tx:annotation-driven transaction-manager="transactionManager"/>-->
<!-- aop事务支持-->
</beans>
6、SpringMVC层
1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</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>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>
2、spring-mvc.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 配置SpringMVC -->
<!-- 1.开启SpringMVC注解驱动 -->
<mvc:annotation-driven/>
<!-- 2.静态资源默认servlet配置-->
<mvc:default-servlet-handler/>
<!-- 3.配置jsp 显示ViewResolver视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 4.扫描web相关的bean -->
<context:component-scan base-package="com.zl.controller"/>
</beans>
7、编写controller层
UsersController.java
package com.zl.controller;
import com.zl.mapper.UsersMapper;
import com.zl.pojo.Users;
import com.zl.service.UsersService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("/users")
public class UsersController {
@Autowired
@Qualifier("usersServiceImpl")
private UsersService usersService;
/**
* 查询所有用户模糊查询
*/
@RequestMapping("/allUsers")
public String list(Users users,Model model) {
System.out.println(users);
List<Users> list = usersService.allUsers(users);
model.addAttribute("list", list);
return "allUsers";
}
/**
* 跳转到添加页面
*/
@RequestMapping("/toadd")
public String toadd(Model model) {
return "addUsers";
}
/**
* 添加用户
*/
@RequestMapping("/addUsers")
public String toadd(Users users) {
usersService.addUsers(users);
return "redirect:allUsers";
}
/**
* 跳转到修改页面
*/
@RequestMapping("/toupdate/{userId}")
public String toupdate(@PathVariable int userId,Model model) {
Users users = usersService.getUsersById(userId);
model.addAttribute("users",users);
return "updusers";
}
/**
* 修改数据
*/
@RequestMapping("/updusers")
public String updusers(Users users) {
int i = usersService.updateUsers(users);
return "redirect:allUsers";
}
/**
* 删除数据
*/
@RequestMapping("/del/{userId}")
public String del(@PathVariable int userId) {
int count = usersService.delUsers(userId);
if (count != 0) {
System.out.println("删除成功");
}
return "redirect:allUsers";
}
/**
* 查看详细信息
*/
@RequestMapping("/info/{userId}")
public String info(@PathVariable int userId,Model model) {
Users users = usersService.getUsersById(userId);
model.addAttribute("users",users);
return "info";
}
}
8、前端页面编写jsp
1、首页:index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>首页</title>
<style type="text/css">
a {
text-decoration: none;
color: black;
font-size: 18px;
}
h3 {
width: 180px;
height: 38px;
margin: 100px auto;
text-align: center;
line-height: 38px;
background: deepskyblue;
border-radius: 4px;
}
</style>
</head>
<body>
<h3>
<a href="${pageContext.request.contextPath}/users/allUsers">点击进入列表页</a>
</h3>
</body>
</html>
2、主页面:allUsers.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>用户列表</small>
</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 column">
<a class="btn btn-primary" href="${pageContext.request.contextPath}/users/toadd">新增</a>
</div>
<div class="col-md-8 column" content="right" >
<form class="form-inline" action="${pageContext.request.contextPath}/users/allUsers" method="post" >
<div class="form-group">
<label for="exampleInputName2">名字:</label>
<input type="text" class="form-control" name="userName" id="exampleInputName2" placeholder="根据名字搜索">
</div>
<div class="form-group">
<label for="exampleInputEmail2">电话:</label>
<input type="text" class="form-control" name="tel" id="exampleInputEmail2" placeholder="根据电话搜索">
</div>
<button type="submit" class="btn btn-primary">搜索</button>
</form>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>序号</th>
<th>用户名称</th>
<th>用户性别</th>
<th>用户电话</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${list}">
<tr>
<td>${user.getUserId()}</td>
<td>${user.getUserName()}</td>
<td>${user.getSex()==0?"男":"女"}</td>
<td>${user.getTel()}</td>
<td>
<a href="${pageContext.request.contextPath}/users/info/${user.getUserId()}">详情</a> |
<a href="${pageContext.request.contextPath}/users/toupdate/${user.getUserId()}">更改</a> |
<a href="${pageContext.request.contextPath}/users/del/${user.getUserId()}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
3、添加页面:addUsers.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加用户</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>添加用户</small>
</h1>
</div>
</div>
</div>
<form action="${pageContext.request.contextPath}/users/addUsers" method="post">
用户名称:<input type="text" name="userName" required><br><br><br>
用户性别:
<input type="radio" name="sex" value="0" checked>男
<input type="radio" name="sex" value="1">女
<br><br><br>
用户电话:<input type="text" name="tel" required><br><br><br>
用户邮箱:<input type="text" name="mail"><br><br><br>
<input type="submit" value="添加">
</form>
</div>
4、修改页面:updusers.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改用户</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>修改用户</small>
</h1>
</div>
</div>
</div>
<form action="${pageContext.request.contextPath}/users/updusers" method="post">
<input type="hidden" name="userId" value="${users.userId}">
用户名称:<input type="text" name="userName" value="${users.userName}" required><br><br><br>
用户性别:
<input type="radio" name="sex" value="0" ${users.sex==0?"checked":""}>男
<input type="radio" name="sex" value="1" ${users.sex==1?"checked":""}>女
<br><br><br>
用户电话:<input type="text" name="tel" value="${users.tel}" required><br><br><br>
用户邮箱:<input type="text" name="mail" value="${users.mail}"><br><br><br>
用户状态:
<input type="radio" name="status" value="0" ${users.status==0?"checked":""}>正常
<input type="radio" name="status" value="1" ${users.status==1?"checked":""}>禁用
<br><br><br>
<input type="submit" value="修改">
</form>
</div>
5、用户详细:info.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>详情信息</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>详情信息</small>
</h1>
</div>
</div>
</div>
用户名称:${users.userName} <br>
用户性别:${users.sex==0?"男":"女"} <br>
用户电话:${users.tel} <br>
用户邮箱:${users.mail} <br>
用户状态:${users.status==0?"正常":"禁用"} <br>
<a href="${pageContext.request.contextPath}/users/allUsers">返回</a>
</div>
9、项目整体结构
10、测试
配置Tomcat,进行运行!
建议写一个功能就测试一下,不然一股脑敲完,出现问题人都麻了