做外国的网站卖东西/厦门谷歌推广
本栏博客目录
一、Spring的IOC和DI
二、IoC和DI注解开发
三、SpringMVC入门
四、SpringMVC的请求和响应
五、JdbcTemplate
六、Spring练习
七、SpringMVC拦截器
八、SpringMVC异常处理机制
九、面向切面编程AOP
十、声明式事务控制
十一、MyBatis入门操作
十二、MyBatis的Dao层实现方式
十三、MyBatis映射文件深入
十四、MyBatis核心配置文件深入
十五、MyBatis的多表操作
十六、Mybatis的注解开发
十七、SSM框架整合
文章目录
- Spring练习环境搭建
- Spring环境搭建步骤
- 用户和角色的关系
- 角色列表的展示和添加操作
- 角色列表的展示效果
- 角色列表的展示步骤分析
- 角色添加的效果
- 角色添加的步骤分析
- 用户列表的展示和添加操作
- 用户列表的展示效果
- 用户列表的展示步骤分析
- 用户添加的效果
- 用户添加的步骤分析
- 删除用户的效果
- 删除用户的步骤分析
- 项目情况
- 依赖
- sql 语句创建表
- 项目结构
- resources 下的配置文件
- web.xml
- java文件
- controller
- dao
- impl
- domain
- interceptor
- service
- impl
Spring练习环境搭建
Spring环境搭建步骤
① 创建工程(Project&Module)
② 导入静态页面(jsp页面)
③ 导入需要坐标(pom.xml)
④ 创建包结构(controller、service、dao、domain、utils)
⑤ 导入数据库脚本(见资料test.sql)
⑥ 创建POJO类(见资料User.java和Role.java)
⑦ 创建配置文件(applicationContext.xml、spring-mvc.xml、jdbc.properties、log4j.properties)
用户和角色的关系
角色列表的展示和添加操作
角色列表的展示效果
角色列表的展示步骤分析
① 点击角色管理菜单发送请求到服务器端(修改角色管理菜单的url地址)
② 创建RoleController和showList()方法
③ 创建RoleService和showList()方法
④ 创建RoleDao和findAll()方法
⑤ 使用JdbcTemplate完成查询操作
⑥ 将查询数据存储到Model中
⑦ 转发到role-list.jsp页面进行展示
角色添加的效果
角色添加的步骤分析
① 点击列表页面新建按钮跳转到角色添加页面
② 输入角色信息,点击保存按钮,表单数据提交服务器
③ 编写RoleController的save()方法
④ 编写RoleService的save()方法
⑤ 编写RoleDao的save()方法
⑥ 使用JdbcTemplate保存Role数据到sys_role
⑦ 跳转回角色列表页面
用户列表的展示和添加操作
用户列表的展示效果
用户列表的展示步骤分析
① 点击用户管理菜单发送请求到服务器端(修改用户管理菜单的url地址)
② 创建RoleController和showList()方法
③ 创建RoleService和showList()方法
④ 创建RoleDao和findAll()方法
⑤ 使用JdbcTemplate完成查询操作
⑥ 将查询数据存储到Model中
⑦ 转发到user-list.jsp页面进行展示
用户添加的效果
用户添加的步骤分析
① 点击列表页面新建按钮跳转到角色添加页面
② 输入角色信息,点击保存按钮,表单数据提交服务器
③ 编写RoleController的save()方法
④ 编写RoleService的save()方法
⑤ 编写RoleDao的save()方法
⑥ 使用JdbcTemplate保存Role数据到sys_role
⑦ 跳转回角色列表页面
删除用户的效果
删除用户的步骤分析
① 点击用户列表的删除按钮,发送请求到服务器端
② 编写UserController的deleteById()方法
③ 编写UserService的deleteById()方法
④ 编写UserDao的deleteById()方法
⑤ 编写UserDao的deleteRelByUid()方法
⑥ 跳回当前用户列表页面
项目情况
依赖
pom.xml
<?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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><packaging>war</packaging><name>spring_test</name><groupId>com.lzjtu</groupId><artifactId>spring_test</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.2.1</version><scope>provided</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</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.3</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.7</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.0.5.RELEASE</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies></project>
sql 语句创建表
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 5.7.24-log : Database - test
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `test`;/*Table structure for table `sys_role` */DROP TABLE IF EXISTS `sys_role`;CREATE TABLE `sys_role` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`roleName` varchar(50) DEFAULT NULL,`roleDesc` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;/*Data for the table `sys_role` */insert into `sys_role`(`id`,`roleName`,`roleDesc`) values (1,'院长','负责全面工作'),(2,'研究员','课程研发工作'),(3,'讲师','授课工作'),(4,'助教','协助解决学生的问题');/*Table structure for table `sys_user` */DROP TABLE IF EXISTS `sys_user`;CREATE TABLE `sys_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`username` varchar(50) DEFAULT NULL,`email` varchar(50) DEFAULT NULL,`password` varchar(80) DEFAULT NULL,`phoneNum` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;/*Data for the table `sys_user` */insert into `sys_user`(`id`,`username`,`email`,`password`,`phoneNum`) values (1,'zhangsan','zhangsan@itcast.cn','123','13888888888'),(2,'lisi','lisi@itcast.cn','123','13999999999'),(3,'wangwu','wangwu@itcast.cn','123','18599999999');/*Table structure for table `sys_user_role` */DROP TABLE IF EXISTS `sys_user_role`;CREATE TABLE `sys_user_role` (`userId` bigint(20) NOT NULL,`roleId` bigint(20) NOT NULL,PRIMARY KEY (`userId`,`roleId`),KEY `roleId` (`roleId`),CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `sys_user` (`id`),CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `sys_user_role` */insert into `sys_user_role`(`userId`,`roleId`) values (1,1),(1,2),(2,2),(2,3);/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
项目结构
resources 下的配置文件
applicationContext.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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 加载jdbc.properties--><context:property-placeholder location="classpath:jdbc.properties" /><!-- 数据源--><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}" /></bean><!-- 配置JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" /></bean><!-- 配置RoleDao--><bean id="roleDao" class="com.lzjtu.dao.impl.RoleDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate" /></bean><!-- 配置RoleService--><bean id="roleService" class="com.lzjtu.service.impl.RoleServiceImpl"><property name="roleDao" ref="roleDao" /></bean><!-- 配置UserDao--><bean id="userDao" class="com.lzjtu.dao.impl.UserDaoImpl" ><property name="jdbcTemplate" ref="jdbcTemplate" /></bean><!-- 配置UserService--><bean id="userService" class="com.lzjtu.service.impl.UserServiceImpl" ><property name="userDao" ref="userDao" /><property name="roleDao" ref="roleDao" /></bean>
</beans>
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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- mvc注解驱动--><mvc:annotation-driven /><!-- 配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/pages/" /><property name="suffix" value=".jsp" /></bean><!-- 静态资源权限开放--><mvc:default-servlet-handler /><!-- 组件扫描 扫描Controller--><context:component-scan base-package="com.lzjtu.controller" /><!-- 配置权限拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/>
<!-- 配置哪些资源排除拦截操作--><mvc:exclude-mapping path="/user/login"/><bean class="com.lzjtu.interceptor.PrivilegeInterceptor" /></mvc:interceptor></mvc:interceptors></beans>
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
log4j.properties
### direct log messages to stdout ###
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{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout
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"><!-- 解决乱码的过滤器--><filter><filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 全局的初始化参数--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- Spring的监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</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-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>
</web-app>
java文件
controller
RoleController
package com.lzjtu.controller;import com.lzjtu.domain.Role;
import com.lzjtu.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller
@RequestMapping("/role")
public class RoleController {@Autowiredprivate RoleService roleService;@RequestMapping("/list")public ModelAndView list(){ModelAndView modelAndView = new ModelAndView();List<Role> roleList = roleService.list();// 设置模型modelAndView.addObject("roleList", roleList);// 设置视图modelAndView.setViewName("role-list");return modelAndView;}@RequestMapping("/save")public String save(Role role){roleService.save(role);return "redirect:/role/list";}
}
UserController
package com.lzjtu.controller;import com.lzjtu.domain.Role;
import com.lzjtu.domain.User;
import com.lzjtu.service.RoleService;
import com.lzjtu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpSession;
import java.util.List;@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;@RequestMapping("/login")public String login(String username, String password, HttpSession session){User user = userService.login(username, password);if(user != null){// 将user存储到sessionsession.setAttribute("user", user);return "redirect:/index.jsp";}return "redirect:/login.jsp";}@RequestMapping("/del/{userId}")public String del(@PathVariable("userId") Long userId){userService.del(userId);return "redirect:/user/list";}@RequestMapping("/save")public String save(User user, Long[] roleIds){userService.save(user, roleIds);return "redirect:/user/list";}@RequestMapping("/saveUI")public ModelAndView saveUI(){ModelAndView modelAndView = new ModelAndView();List<Role> roleList = roleService.list();modelAndView.addObject("roleList", roleList);modelAndView.setViewName("user-add");return modelAndView;}@RequestMapping("/list")public ModelAndView list(){List<User> userList = userService.list();ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("userList", userList);modelAndView.setViewName("user-list");return modelAndView;}
}
dao
RoleDao.java
package com.lzjtu.dao;import com.lzjtu.domain.Role;import java.util.List;public interface RoleDao {List<Role> findAll();void save(Role role);List<Role> findRoleByUserId(Long id);
}
UserDao.java
package com.lzjtu.dao;import com.lzjtu.domain.User;import java.util.List;public interface UserDao {List<User> findAll();Long save(User user);void saveUserRoleRel(Long id, Long[] roleIds);void delUserRoleRel(Long userId);void del(Long userId);User findByUsernameAndPassword(String username, String password);
}
impl
RoleDaoImpl.java
package com.lzjtu.dao.impl;import com.lzjtu.dao.RoleDao;
import com.lzjtu.domain.Role;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;public class RoleDaoImpl implements RoleDao {JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public List<Role> findAll() {String sql = "select * from sys_role";List<Role> roleList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Role>(Role.class));return roleList;}public void save(Role role) {String sql = "insert into sys_role value(?, ?, ?)";jdbcTemplate.update(sql, null, role.getRoleName(), role.getRoleDesc());}public List<Role> findRoleByUserId(Long id) {String sql = "select * from sys_user_role ur, sys_role r where ur.roleId=r.id and ur.userId=?";List<Role> roles = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Role>(Role.class), id);return roles;}
}
UserDaoImpl.java
package com.lzjtu.dao.impl;import com.lzjtu.dao.UserDao;
import com.lzjtu.domain.User;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;public class UserDaoImpl implements UserDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public List<User> findAll() {String sql = "select * from sys_user";List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));return userList;}public Long save(final User user) {// 创建 PreparedStatementCreatorPreparedStatementCreator creator = new PreparedStatementCreator() {public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {// 使用原始的jdbc完成一个PreparedStatement的组建PreparedStatement preparedStatement = connection.prepareStatement("insert into sys_user values(?,?,?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS);preparedStatement.setObject(1, null);preparedStatement.setString(2, user.getUsername());preparedStatement.setString(3, user.getEmail());preparedStatement.setString(4, user.getPassword());preparedStatement.setString(5, user.getPhoneNum());return preparedStatement;}};// 创建keyHolderGeneratedKeyHolder keyHolder = new GeneratedKeyHolder();jdbcTemplate.update(creator, keyHolder);// 获得生成的主键long userId = keyHolder.getKey().longValue();// String sql = "insert into sys_user values(?,?,?,?,?)";
// jdbcTemplate.update(sql, null, user.getUsername(), user.getEmail(), user.getPassword(), user.getPhoneNum());return userId; // 返回当前保存用户的id, 该id是数据库自动生成的}public void saveUserRoleRel(Long userId, Long[] roleIds) {String sql = "insert into sys_user_role values(?,?)";for (Long roleId: roleIds){jdbcTemplate.update(sql, userId, roleId);}}public void delUserRoleRel(Long userId) {String sql = "delete from sys_user_role where userId=?";jdbcTemplate.update(sql, userId);}public void del(Long userId) {String sql = "delete from sys_user where id=?";jdbcTemplate.update(sql, userId);}public User findByUsernameAndPassword(String username, String password) throws EmptyResultDataAccessException {String sql = "select * from sys_user where username=? and password=?";User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);return user;}
}
domain
Role.java
package com.lzjtu.domain;public class Role {private Long id;private String roleName;private String roleDesc;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public String getRoleDesc() {return roleDesc;}public void setRoleDesc(String roleDesc) {this.roleDesc = roleDesc;}@Overridepublic String toString() {return "Role{" +"id=" + id +", roleName='" + roleName + '\'' +", roleDesc='" + roleDesc + '\'' +'}';}
}
User.java
package com.lzjtu.domain;import java.util.List;public class User {private Long id;private String username;private String email;private String password;private String phoneNum;// 当前用户具备哪些角色private List<Role> roles;public List<Role> getRoles() {return roles;}public void setRoles(List<Role> roles) {this.roles = roles;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getPhoneNum() {return phoneNum;}public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", email='" + email + '\'' +", password='" + password + '\'' +", phoneNum='" + phoneNum + '\'' +'}';}
}
interceptor
PrivilegeInterceptor.java
package com.lzjtu.interceptor;import com.lzjtu.domain.User;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class PrivilegeInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 判断用户是否登录 判断session中有没有 userHttpSession session = request.getSession();User user = (User) session.getAttribute("user");if(user == null){// 没有登录response.sendRedirect(request.getContextPath()+"/login.jsp");return false;}// 放行return true;}
}
service
RoleService.java
package com.lzjtu.service;import com.lzjtu.domain.Role;import java.util.List;public interface RoleService {List<Role> list();void save(Role role);
}
UserService.java
package com.lzjtu.service;import com.lzjtu.domain.User;import java.util.List;public interface UserService {List<User> list();void save(User user, Long[] roleIds);void del(Long userId);User login(String username, String password);
}
impl
RoleServiceImpl.java
package com.lzjtu.service.impl;import com.lzjtu.dao.RoleDao;
import com.lzjtu.domain.Role;
import com.lzjtu.service.RoleService;import java.util.List;public class RoleServiceImpl implements RoleService {public void setRoleDao(RoleDao roleDao) {this.roleDao = roleDao;}private RoleDao roleDao;public List<Role> list() {List<Role> roleList = roleDao.findAll();return roleList;}public void save(Role role) {roleDao.save(role);}
}
UserServiceImpl.java
package com.lzjtu.service.impl;import com.lzjtu.dao.RoleDao;
import com.lzjtu.dao.UserDao;
import com.lzjtu.domain.Role;
import com.lzjtu.domain.User;
import com.lzjtu.service.UserService;
import org.springframework.dao.EmptyResultDataAccessException;import java.util.List;public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}private RoleDao roleDao;public void setRoleDao(RoleDao roleDao) {this.roleDao = roleDao;}public List<User> list() {List<User> userList = userDao.findAll();// 封装userList中的每一个User的roles数据for (User user: userList){// 获得user的idLong id = user.getId();// 将id作为参数 查询当前userId对应的Role集合数据List<Role> roles = roleDao.findRoleByUserId(id);user.setRoles(roles);}return userList;}public void save(User user, Long[] roleIds) {// 第一步 向sys_user表中存储数据Long userId = userDao.save(user);// 第二步 向 sys_user_role 关系表中存储多条数据userDao.saveUserRoleRel(userId, roleIds);}public void del(Long userId) {// 删除 sys_user_role 关系表userDao.delUserRoleRel(userId);// 删除 sys_user 表userDao.del(userId);}public User login(String username, String password) {try {User user = userDao.findByUsernameAndPassword(username, password);return user;}catch (EmptyResultDataAccessException e){return null;}}
}