maven+ssm+bootstrap实现简单的增删改查
学习完ssm框架以后 做的第一个完整的增删改查
是在博客园找到的一个小demo,我自己稍微修改了一下,加入了bootstrap和mybatis的分页插件,有些地方并没有处理好,等以后水平进步了在继续改进一下吧
工程结构
pom文件
4.0.0
com.summer
ssmdemo
0.0.1-SNAPSHOT
war
org.springframework
spring-webmvc
4.3.7.RELEASE
org.springframework
spring-jdbc
4.3.7.RELEASE
org.springframework
spring-aspects
4.3.7.RELEASE
org.mybatis
mybatis
3.4.2
org.mybatis
mybatis-spring
1.3.1
c3p0
c3p0
0.9.1.2
mysql
mysql-connector-java
5.1.40
javax.servlet
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
provided
junit
junit
4.12
test
org.springframework
spring-test
4.3.7.RELEASE
test
com.github.pagehelper
pagehelper
4.1.5
jar包一览
1:实体类:
package com.ssm.model;
/**
* 描述:用户实体类
* 创建人:
* 时间:2017年7月10日下午6:11:17
* @version
*/
public class User {
//主键
private int id;
//用户名
private String username;
//年龄
private String age;
public User() {
super();
}
public User(int id, String username, String age) {
super();
this.id = id;
this.username = username;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
2:*创建DAO接口【在mybatis中 mapper就相当于dao】*
package com.ssm.mapper;
import java.util.List;
import com.ssm.model.User;
/**
* 描述:用户mapper接口
* 创建人:
* 时间:2017年7月10日下午6:14:22
* @version
*/
public interface UserMapper {
void saveUser(User user);
boolean updateUser(User user);
boolean deleteUser(int id);
User findUserById(int id);
List findAll();
}
*3:实现dao接口【mybatis中就是UserMapper.xml文件】*
insert into t_user(user_name,user_age) values (#{username},#{age})
update t_user set user_name=#{username},user_age=#{age} where user_id=#{id}
delete from t_user where user_id=#{id}
4:spring配置文件
5:mybatis配置文件
6:log4j.properties
### set log levels ###
log4j.rootLogger = INFO , console , debug , error
### console ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
### log file ###
log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.File = ../logs/springmvc-demo.log
log4j.appender.debug.Append = true
log4j.appender.debug.Threshold = INFO
log4j.appender.debug.layout = org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
### exception ###
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = ../logs/springmvc-demo_error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
###\u9700\u8981\u58F0\u660E\uFF0C\u7136\u540E\u4E0B\u65B9\u624D\u53EF\u4EE5\u4F7Fdruid sql\u8F93\u51FA\uFF0C\u5426\u5219\u4F1A\u629B\u51FAlog4j.error.key not found
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %l %c%n%p: %m%n
### druid sql ###
log4j.logger.druid.sql=warn,stdout
log4j.logger.druid.sql.DataSource=warn,stdout
log4j.logger.druid.sql.Connection=warn,stdout
log4j.logger.druid.sql.Statement=warn,stdout
log4j.logger.druid.sql.ResultSet=warn,stdout
7:springmvc.xml springmvc的配置文件
8:jdbc.properties
jdbc.url = jdbc\:mysql\:///ssm
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username= root
jdbc.password= root
9:web.xml
ssmdemo
index.jsp
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
dispatcherServlet
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
10:建立service以及service实现【UserService.java】
package com.ssm.service;
import java.util.List;
import com.ssm.model.User;
/**
* 描述:用户service
* 创建人:
* 时间:2017年7月11日下午7:06:59
* @version
*/
public interface UserService {
void saveUser(User user);
boolean updateUser(User user);
boolean deleteUser(int id);
User findUserById(int id);
List findAll();
}
service实现类
package com.ssm.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ssm.mapper.UserMapper;
import com.ssm.model.User;
import com.ssm.service.UserService;
@Service
/**
* 描述:用户service实现类
* 创建人:
* 时间:2017年7月10日下午7:11:57
* @version
*/
public class UserServiceImpl implements UserService {
/**
* 注入UserMapper接口
*/
@Autowired
private UserMapper userMapper;
/**
* 新增用户
*/
@Override
public void saveUser(User user) {
userMapper.saveUser(user);
}
/**
* 更新用户
*/
@Override
public boolean updateUser(User user) {
return userMapper.updateUser(user);
}
/**
* 根据Id删除用户
*/
@Override
public boolean deleteUser(int id) {
return userMapper.deleteUser(id);
}
/**
* 根据id查找用户
*/
@Override
public User findUserById(int id) {
User user = userMapper.findUserById(id);
return user;
}
/**
* 查询所有用户
*/
@Override
public List findAll() {
List allUser = userMapper.findAll();
return allUser;
}
}
11:建立controller
package com.ssm.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ssm.model.User;
import com.ssm.service.UserService;
@Controller
@RequestMapping("/user")
/**
* 描述:用户controller
* 创建人:
* 时间:2017年7月10日下午7:15:58
* @version
*/
public class UserController {
@Autowired
private UserService userService;
/**
*跳转到添加用户界面
*/
@RequestMapping("toAddUser")
public String toAddUser(){
return "addUser";
}
/**
* 添加用户并重定向
* @param model
* @param user
* @return
*/
@RequestMapping("addUser")
public String addUser(Model model,User user){
if(user != null){
userService.saveUser(user);
}
return "redirect:/user/userInfo";
}
/**
* 修改用户
* @param model
* @param request
* @param user
* @return
*/
@RequestMapping("updateUser")
public String UpdateUser(Model model,User user){
if(userService.updateUser(user)){
user = userService.findUserById(user.getId());
model.addAttribute("user", user);
return "redirect:/user/userInfo";
}
return "/error";
}
/**
* 查询所有用户
* @param request
* @param model
* @return
*/
@RequestMapping("getAllUser")
public String getAllUser(Model model){
List user = userService.findAll();
model.addAttribute("userList",user);
return "allUser";
}
/**
* 查询单个用户
* @param id
* @param request
* @param model
* @return
*/
@RequestMapping("/getUser")
public String getUser(int id,Model model){
model.addAttribute("user", userService.findUserById(id));
return "editUser";
}
/**
* 根据id删除用户
* @param id
* @param request
* @param response
*/
@RequestMapping("/delUser")
public String deleteUser(int id,Model model){
model.addAttribute("user", userService.deleteUser(id));
return "redirect:/user/userInfo";
}
/**
* 分页查询用户信息
* @param pn 默认从第一页开始 请求参数
* @param model
* @return
*/
@RequestMapping("userInfo")
public String getUsers(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model){
//从第一条开始 每页查询五条数据
PageHelper.startPage(pn, 5);
List users = userService.findAll();
//将用户信息放入PageInfo对象里
PageInfo page = new PageInfo(users,5);
model.addAttribute("pageInfo", page);
return "allUser";
}
}
好啦 后端部分至此基本结束
下面就是前台页面
由于除了首页 其他页面都是放在WEB-INF下 所以我们通过首页来跳转一下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("path", request.getContextPath());
%>
首页
进入用户管理页
点击这里可以跳转到用户列表界面
在页面引入bootstrap需要的文件 他提供的按钮样式 列表样式 分页导航等很方便,省的我们在去写前端的东西
用户列表界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
pageContext.setAttribute("path", request.getContextPath());
%>
用户列表
通过首页 就跳到了这里来 然后进行增删改查
在引入mybatis分页插件的时候5.0 版本会出现找不到sqlSessionFactory的异常 4.2版本会报转换异常 郁闷 所以这里 如果你们也遇到了同样的问题 可以注意一下
用户添加界面
为了省事 没必要引入bootstrap了
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
添加用户
添加用户