applicationContext-jdbc.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:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--
使spring扫描包下的所有类,让标注spring注解的类生效
若扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
-->
<context:component-scan base-package="cn.bdqn.service"/>
<context:component-scan base-package="cn.bdqn.dao"/>
</beans>
database.properties 配置文件
driver=com.mysql.cj.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,字符集设置为utf-8,并根据需要设置时区
url=jdbc:mysql://127.0.0.1:3306/cvs_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
user=root
password=123.com
log4j.properties 日志文件
log4j.rootLogger=debug,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.cvs=debug
log4j.logger.org.apache.ibatis=debug
log4j.logger.org.mybatis.spring=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
######################################################################################
# Console Appender \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=debug
log4j.appender.CONSOLE.DatePattern=yyyy-MM-dd
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
######################################################################################
# Rolling File \u6587\u4ef6\u5927\u5c0f\u5230\u8fbe\u6307\u5b9a\u5c3a\u5bf8\u7684\u65f6\u5019\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6
######################################################################################
#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
#log4j.appender.ROLLING_FILE.Threshold=INFO
#log4j.appender.ROLLING_FILE.File=${baojia.root}/logs/log.log
#log4j.appender.ROLLING_FILE.Append=true
#log4j.appender.ROLLING_FILE.MaxFileSize=5000KB
#log4j.appender.ROLLING_FILE.MaxBackupIndex=100
#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
######################################################################################
# DailyRolling File \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=${CVS_C10_09.root}/logs/log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
#DWR \u65e5\u5fd7
#log4j.logger.org.directwebremoting = ERROR
#\u663e\u793aHibernate\u5360\u4f4d\u7b26\u7ed1\u5b9a\u503c\u53ca\u8fd4\u56de\u503c
#log4j.logger.org.hibernate.type=DEBUG,CONSOLE
#log4j.logger.org.springframework.transaction=DEBUG
#log4j.logger.org.hibernate=DEBUG
#log4j.logger.org.acegisecurity=DEBUG
#log4j.logger.org.apache.myfaces=TRACE
#log4j.logger.org.quartz=DEBUG
#log4j.logger.com.opensymphony=INFO
#log4j.logger.org.apache.struts2=DEBUG
log4j.logger.com.opensymphony.xwork2=debug
springmvc-servlet.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven/>
<context:component-scan base-package="cn.bdqn.controller"/>
<mvc:resources mapping="/statics/**" location="/statics/" />
<!-- 完成视图的对应 -->
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 全局异常处理 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
</beans>
创建业务逻辑层
BasDao
package cn.bdqn.dao;
import cn.bdqn.utils.ConfigManager;
import java.sql.*;
/**
* 操作数据库的基类--静态类
* @author Administrator
*
*/
public class BaseDao {
private static BaseDao baseDao = new BaseDao();
/**
* 私有化构造方法
*/
private BaseDao(){
getConnection();
}
/**
* 获取BaseDao实例对象
* @return
*/
public static BaseDao getInstance(){
return baseDao;
}
public static void main(String[] args) {
getInstance();
}
/**
* 获取数据库连接对象
* @return
*/
public static Connection getConnection(){
Connection connection = null;
String driver = ConfigManager.getInstance().getValue("driver");
String url = ConfigManager.getInstance().getValue("url");
String user = ConfigManager.getInstance().getValue("user");
String password = ConfigManager.getInstance().getValue("password");
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
/**
* 查询操作
* @param connection
* @param pstm
* @param rs
* @param sql
* @param params
* @return
*/
public static ResultSet execute(Connection connection,PreparedStatement pstm,ResultSet rs,
String sql,Object[] params) throws Exception{
pstm = connection.prepareStatement(sql);
if(params!=null){
for(int i = 0; i < params.length; i++){
pstm.setObject(i+1, params[i]);
}
}
rs = pstm.executeQuery();
return rs;
}
/**
* 更新操作
* @param connection
* @param pstm
* @param sql
* @param params
* @return
* @throws Exception
*/
public static int execute(Connection connection,PreparedStatement pstm,
String sql,Object[] params) throws Exception{
int updateRows = 0;
pstm = connection.prepareStatement(sql);
for(int i = 0; i < params.length; i++){
pstm.setObject(i+1, params[i]);
}
updateRows = pstm.executeUpdate();
return updateRows;
}
/**
* 释放资源
* @param connection
* @param pstm
* @param rs
* @return
*/
public static boolean closeResource(Connection connection,PreparedStatement pstm,ResultSet rs){
boolean flag = true;
if(rs != null){
try {
rs.close();
rs = null;//GC回收
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag = false;
}
}
if(pstm != null){
try {
pstm.close();
pstm = null;//GC回收
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag = false;
}
}
if(connection != null){
try {
connection.close();
connection = null;//GC回收
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag = false;
}
}
return flag;
}
}
创建ISysUserDao 接口
package cn.bdqn.dao;
import cn.bdqn.pojo.SysUser;
import java.util.List;
/**
* dao层接口
*/
public interface ISysUserDao {
/**
* 根据登陆名查询用户信息
* @param name 登陆名
* @return 用户信息
*/
public SysUser getSysUserByName(String name) throws Exception;
/**
* 查询全部用户
* @return 用户集合
*/
public List<SysUser> getSysUserList()throws Exception;
/**
* 根据id删除用户信息
* @param id 用户id
* @return 返回受影响行数
*/
public int delSysUserById(int id);
/**
* 新增用户
* @param sysUser 用户对象
* @return 受影响行数
*/
public int insertSysUser(SysUser sysUser);
/**
* 根据id查询用户信息
* @param id 用户id
* @return 用户信息
*/
public SysUser getSysUserById(int id);
/**
* 修改用户信息
* @param sysUser 用户对象
* @return 受影响行数
*/
public int updateSysUser(SysUser sysUser);
}
创建SysUserDaoImpl
package cn.bdqn.dao;
import cn.bdqn.pojo.SysUser;
import org.springframework.stereotype.Repository;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@Repository("sysUserDao")
public class SysUserDaoImpl implements ISysUserDao {
@Override
public SysUser getSysUserByName(String name) throws Exception{
PreparedStatement pstm = null;
ResultSet rs = null;
SysUser user = null;
String sql="SELECT * FROM t_sys_user WHERE account =?";
Object[] params = {name};
rs =BaseDao.execute(BaseDao.getConnection(), pstm, rs, sql, params);
while (rs.next()){
user = new SysUser();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setRealName(rs.getString("realName"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getInt("sex"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setCreatedUserId(rs.getInt("createdUserId"));
user.setCreatedTime(rs.getTimestamp("createdTime"));
user.setUpdatedUserId(rs.getInt("updatedUserId"));
user.setUpdatedTime(rs.getTimestamp("updatedTime"));
}
BaseDao.closeResource(null, pstm, rs);
return user;
}
@Override
public List<SysUser> getSysUserList() throws Exception{
List<SysUser> userList = new ArrayList<SysUser>();
PreparedStatement pstm = null;
ResultSet rs = null;
SysUser user = null;
String sql="SELECT * FROM t_sys_user";
/*Object[] params = {null};*/
rs =BaseDao.execute(BaseDao.getConnection(), pstm, rs, sql, null);
while (rs.next()){
user = new SysUser();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setRealName(rs.getString("realName"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getInt("sex"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setCreatedUserId(rs.getInt("createdUserId"));
user.setCreatedTime(rs.getTimestamp("createdTime"));
user.setUpdatedUserId(rs.getInt("updatedUserId"));
user.setUpdatedTime(rs.getTimestamp("updatedTime"));
userList.add(user);
}
BaseDao.closeResource(null, pstm, rs);
return userList;
}
@Override
public int delSysUserById(int id) {
int flag =0;
PreparedStatement pstm = null;
String sql="delete FROM t_sys_user where id=?";
Object[] params = {id};
try{
flag =BaseDao.execute(BaseDao.getConnection(), pstm, sql, params);
}
catch (Exception e){
e.printStackTrace();
}
finally {
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
@Override
public int insertSysUser(SysUser sysUser) {
int flag =0;
PreparedStatement pstm = null;
String sql="insert into t_sys_user(account,realName,password,sex,birthday,phone,address,roleId,createdUserId,createdTime)" +
" values(?,?,?,?,?,?,?,?,?,?)";
Object[] params = {sysUser.getAccount(),sysUser.getRealName(),sysUser.getPassword(),sysUser.getSex(),sysUser.getBirthday(),sysUser.getPhone(),sysUser.getAddress(),sysUser.getRoleId(),sysUser.getCreatedUserId(),sysUser.getCreatedTime()};
try{
flag =BaseDao.execute(BaseDao.getConnection(), pstm, sql, params);
}
catch (Exception e){
e.printStackTrace();
}
finally {
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
@Override
public SysUser getSysUserById(int id) {
int flag =0;
PreparedStatement pstm = null;
ResultSet rs = null;
SysUser user = null;
String sql="SELECT * FROM t_sys_user where id=?";
Object[] params = {id};
try{
rs =BaseDao.execute(BaseDao.getConnection(), pstm,rs, sql, params);
while (rs.next()){
user = new SysUser();
user.setId(rs.getInt("id"));
user.setAccount(rs.getString("account"));
user.setRealName(rs.getString("realName"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getInt("sex"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setRoleId(rs.getInt("roleId"));
user.setCreatedUserId(rs.getInt("createdUserId"));
user.setCreatedTime(rs.getTimestamp("createdTime"));
user.setUpdatedUserId(rs.getInt("updatedUserId"));
user.setUpdatedTime(rs.getTimestamp("updatedTime"));
}
}
catch (Exception e){
e.printStackTrace();
}
finally {
BaseDao.closeResource(null, pstm, null);
}
return user;
}
@Override
public int updateSysUser(SysUser sysUser) {
int flag =0;
PreparedStatement pstm = null;
String sql="update t_sys_user set account=?,realName=?,password=?,sex=?,birthday=?,phone=?,address=?,roleId=?,updatedUserId=?,updatedTime=? where id=?";
Object[] params = {sysUser.getAccount(),sysUser.getRealName(),sysUser.getPassword(),sysUser.getSex(),sysUser.getBirthday(),sysUser.getPhone(),sysUser.getAddress(),sysUser.getRoleId(),sysUser.getUpdatedUserId(),sysUser.getUpdatedTime(),sysUser.getId()};
try{
flag =BaseDao.execute(BaseDao.getConnection(), pstm, sql, params);
}
catch (Exception e){
e.printStackTrace();
}
finally {
BaseDao.closeResource(null, pstm, null);
}
return flag;
}
}
pojo 实体类
package cn.bdqn.pojo;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class SysUser {
private Integer id; //id
private String account; //用户编码
private String realName; //用户名称
private String password; //用户密码
private Integer sex; //性别
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday; //出生日期
private String phone; //电话
private String address; //地址
private Integer roleId; //用户角色
private Integer createdUserId; //创建者
private Date createdTime; //创建时间
private Integer updatedUserId; //更新者
private Date updatedTime; //更新时间
private Integer age; //年龄
private String roleIdName; //用户角色名称
public SysUser(){}
public SysUser(Integer id, String account, String realName, String userPassword, Integer sex, Date birthday, String phone,
String address, Integer roleId, Integer createdUserId, Date createdTime, Integer updatedUserId, Date updatedTime){
this.id = id;
this.account = account;
this.realName = realName;
this.password = userPassword;
this.sex = sex;
this.birthday = birthday;
this.phone = phone;
this.address = address;
this.roleId = roleId;
this.createdUserId = createdUserId;
this.createdTime = createdTime;
this.updatedUserId = updatedUserId;
this.updatedTime = updatedTime;
}
public Integer getAge() {
/*long time = System.currentTimeMillis()-birthday.getTime();
Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*/
Date date = new Date();
Integer age = date.getYear() - birthday.getYear();
return age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public Integer getCreatedUserId() {
return createdUserId;
}
public void setCreatedUserId(Integer createdUserId) {
this.createdUserId = createdUserId;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Integer getUpdatedUserId() {
return updatedUserId;
}
public void setUpdatedUserId(Integer updatedUserId) {
this.updatedUserId = updatedUserId;
}
public Date getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(Date updatedTime) {
this.updatedTime = updatedTime;
}
public void setAge(Integer age) {
this.age = age;
}
public String getRoleIdName() {
return roleIdName;
}
public void setRoleIdName(String roleIdName) {
this.roleIdName = roleIdName;
}
}
创建 ISysUserService
package cn.bdqn.service;
import cn.bdqn.pojo.SysUser;
import java.util.List;
/**
* 业务层接口
*/
public interface ISysUserService {
/**
* 根据用户名和密码查询用户信息
* @param name 用户名
* @param pwd 密码
* @return 用户信息
*/
public SysUser loginUser(String name,String pwd);
/**
* 查询全部用户
* @return 用户集合
*/
public List<SysUser> getSysUserList();
public boolean delSysUserById(int id);
public boolean saveSysUser(SysUser sysUser);
public SysUser getSysUserById(int id);
}
创建SysUserSercviceImpl
package cn.bdqn.service;
import cn.bdqn.dao.ISysUserDao;
import cn.bdqn.pojo.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service("sysUserService")
public class SysUserServiceImpl implements ISysUserService {
@Resource
ISysUserDao sysUserDao;
@Override
public SysUser loginUser(String name, String pwd) {
SysUser user =null;
try{
user =sysUserDao.getSysUserByName(name);
}
catch (Exception e){
e.printStackTrace();
}
if(user!=null && pwd.equals(user.getPassword())){
return user;
}
else{
return null;
}
}
@Override
public List<SysUser> getSysUserList() {
List<SysUser> sysUserList =null;
try{
sysUserList=sysUserDao.getSysUserList();
}
catch (Exception e){
e.printStackTrace();
}
return sysUserList;
}
@Override
public boolean delSysUserById(int id) {
boolean flag =false;
if(sysUserDao.delSysUserById(id)>0){
flag=true;
}
return flag;
}
@Override
public boolean saveSysUser(SysUser sysUser) {
boolean flag =false;
if(sysUser.getId()>0){
//修改
sysUser.setUpdatedUserId(1);
sysUser.setUpdatedTime(new Date());
if(sysUserDao.updateSysUser(sysUser)>0){
flag=true;
}
}
else{
// 新增
sysUser.setCreatedUserId(1);
sysUser.setCreatedTime(new Date());
if(sysUserDao.insertSysUser(sysUser)>0){
flag=true;
}
}
return flag;
}
@Override
public SysUser getSysUserById(int id) {
return sysUserDao.getSysUserById(id);
}
}
创建ConfigManger 工具包
package cn.bdqn.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//读取配置文件的工具类-单例模式
public class ConfigManager {
private static ConfigManager configManager = new ConfigManager();
private static Properties properties;
//私有构造器-读取数据库配置文件
private ConfigManager(){
String configFile = "database.properties";
properties = new Properties();
InputStream is =
ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
try {
properties.load(is);
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//饿汉模式
public static ConfigManager getInstance(){
return configManager;
}
public String getValue(String key){
return properties.getProperty(key);
}
}
创建jsp
add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="save.html" method="post">
<table>
<tr>
<td>用户名</td>
<input type="hidden" name="id" value="${user.id}"/>
<td><input name="account" value="${user.account}"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" value="${user.password}"/></td>
</tr>
<tr>
<td>姓名</td>
<td><input name="realName" value="${user.realName}"/></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="sex" value="2" <c:if test="${user.sex == 2}">checked</c:if>/>男
<input type="radio" name="sex" value="1" <c:if test="${user.sex == 1}">checked</c:if>/>女
</td>
</tr>
<tr>
<td>出生日期</td>
<td><input name="birthday" type="date" value="${user.birthday}"/></td>
</tr>
<tr>
<td>手机号</td>
<td><input name="phone" value="${user.phone}"/></td>
</tr>
<tr>
<td>用户地址</td>
<td><input name="address" value="${user.address}"/></td>
</tr>
<tr>
<td>用户角色</td>
<td>
<select name="roleId">
<option value="1" <c:if test="${user.roleId == 1}">selected</c:if>>管理系统员</option>
<option value="2" <c:if test="${user.roleId == 2}">selected</c:if>>店长</option>
<option value="3" <c:if test="${user.roleId == 3}">selected</c:if>>店员</option>
</select>
</td>
</tr>
</table>
<input type="submit" value="保存">
</form>
</body>
</html>
创建login
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="doLogin.html" method="post">
用户名:<input name="account"/>
密码:<input name="password" type="password"/>
<input type="submit" value="登陆">
</form>
</body>
</html>
创建view.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="save.html" method="post">
<table>
<tr>
<td>用户名</td>
<td>${user.account}</td>
</tr>
<tr>
<td>密码</td>
<td>${user.password}</td>
</tr>
<tr>
<td>姓名</td>
<td>${user.realName}</td>
</tr>
<tr>
<td>性别</td>
<td>
<c:if test="${user.sex == 2}">男</c:if>
<c:if test="${user.sex == 1}">女</c:if>
</td>
</tr>
<tr>
<td>出生日期</td>
<td>${user.birthday}</td>
</tr>
<tr>
<td>手机号</td>
<td>${user.phone}</td>
</tr>
<tr>
<td>用户地址</td>
<td>${user.address}</td>
</tr>
<tr>
<td>用户角色</td>
<td>
<c:if test="${user.roleId == 1}">管理系统员</c:if>
<c:if test="${user.roleId == 2}">店长</c:if>
<c:if test="${user.roleId == 3}">店员</c:if>
</td>
</tr>
</table>
<input type="button" value="返回" onclick="javascript:window.history.go(-1)">
</form>
</body>
</html>
创建welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
欢迎:${loginUser.realName},访问本网站! <br>
<a href="add.html">添加</a><br>
<table>
<tr>
<th>登录名</th>
<th>姓名</th>
<th>性别</th>
<th>生日</th>
<th>电话</th>
<th>操作</th>
</tr>
<c:forEach var="user" items="${userList}">
<tr>
<td>${user.account}</td>
<td>${user.realName}</td>
<td>
<c:if test="${user.sex==1}">
女
</c:if>
<c:if test="${user.sex==2}">
男
</c:if>
</td>
<td>${user.birthday}</td>
<td>${user.phone}</td>
<td><a href="view.html?id=${user.id}">详细</a> <a href="update.html?id=${user.id}">修改</a> <a onclick="return confirm('确定要删除?')" href="del.html?id=${user.id}">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
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"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>springMVC</display-name>
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<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>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>MvcAndSringAndJDBC.root</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
测试