-
创建MaverWeb项目工程(spring_oneTest)
-
导入静态页面
可联系获取
-
导入需要坐标
mysql mysql-connector-java 5.1.32 c3p0 c3p0 0.9.1.2 com.alibaba druid 1.1.10 junit junit 4.12 test org.springframework spring-context 5.0.5.RELEASE org.springframework spring-test 5.0.5.RELEASE org.springframework spring-web 5.0.5.RELEASE org.springframework spring-webmvc 5.0.5.RELEASE javax.servlet javax.servlet-api 3.0.1 provided javax.servlet.jsp javax.servlet.jsp-api 2.2.1 provided com.fasterxml.jackson.core jackson-core 2.9.0 com.fasterxml.jackson.core jackson-databind 2.9.0 com.fasterxml.jackson.core jackson-annotations 2.9.0 commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.3 commons-logging commons-logging 1.2 org.slf4j slf4j-log4j12 1.7.7 log4j log4j 1.2.17 org.springframework spring-jdbc 5.0.5.RELEASE org.springframework spring-tx 5.0.5.RELEASE jstl jstl 1.2 -
创建包结构(controller、service、dao、domain、utils)
三层架构加实体对象包
-
导入数据库脚本
创建数据库test执行下面的sql语句生成数据库表:角色表:sys_role、用户表:sys_user、用户角色关系表sys_user_role
; ; ; ; ; ; CREATE DATABASE `test` ; USE `test`; 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; insert into `sys_role`(`id`,`roleName`,`roleDesc`) values (1,'院长','负责全面工作'),(2,'研究员','课程研发工作'),(3,'讲师','授课工作'),(4,'助教','协助解决学生的问题'); 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; 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'); 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; insert into `sys_user_role`(`userId`,`roleId`) values (1,1),(1,2),(2,2),(2,3); ; ; ; ;
-
创建POJO类
创建User用户实体类
package com.zcl.domain; public class User { private Long id; private String username; private String email; private String password; private String phoneNum; 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; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + ''' + ", email='" + email + ''' + ", password='" + password + ''' + ", phoneNum='" + phoneNum + ''' + '}'; } }创建Role角色实体类
package com.zcl.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; } @Override public String toString() { return "Role{" + "id=" + id + ", roleName='" + roleName + ''' + ", roleDesc='" + roleDesc + ''' + '}'; } } -
创建配置文件(applicationContext.xml、spring-mvc.xml、jdbc.properties、log4j.properties)
在resources包下创建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在resources包下创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///test jdbc.username=root jdbc.password=1234
在resources包下创建applicationContext.xml核心spring配置文件
在resources包下创建spring-mvc.xml核心配置文件
创建了spring和springMVC框架想要集中到web项目中需要配置web.xml
==配置webapp.WEB-INF文件下的web.xml
contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 2 DispatcherServlet /
-
点击角色管理菜单发送请求到服务器端(修改角色管理菜单的u地址)
-
创建RoleController和list方法【web层】
在com.zcl.controller包下创建RoleController方法
通过@RequestMapping来指定访问的路径
注入的RoleService层代码是还没有写的,先写Web层代码会报红,后面再从com.zcl.service包下创建相应的RoleService接口
package com.zcl.controller; import com.zcl.domain.Role; import com.zcl.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; @RequestMapping("/role") @Controller public class RoleController { @Autowired private RoleService roleService; @RequestMapping("/list") public ModelAndView list(){ System.out.println("请求成功"); ModelAndView modelAndView = new ModelAndView(); ListroleList = roleService.list(); // 设置视图模型数据 modelAndView.addObject("roleList",roleList); // 设置跳转的视图 modelAndView.setViewName("role-list"); System.out.println("输出查询列表:"+roleList); return modelAndView; } } -
创建RoleService和list方法【Service层】
在com.zcl.service包下创建RoleService接口
解决web层的RoleService报红
package com.zcl.service; import com.zcl.domain.Role; import java.util.List; public interface RoleService { public Listlist(); } 在此包下创建impl包并创建接口的实现类RoleServiceImpl
package com.zcl.service.impl; import com.zcl.dao.RoleDao; import com.zcl.domain.Role; import com.zcl.service.RoleService; import java.util.List; public class RoleServiceImpl implements RoleService { private RoleDao roleDao; public void setRoleDao(RoleDao roleDao) { this.roleDao = roleDao; } @Override public Listlist() { List roleList = roleDao.findAll(); return roleList; } } 在实现类里面会出现报RoleDao红,原因是还没有写Dao层的对应代码
-
创建RoleDao和findAll方法【Dao层】
在com.zcl.dao包下创建RoleDao接口
package com.zcl.dao; import com.zcl.domain.Role; import java.util.List; public interface RoleDao { ListfindAll(); } 在此包下创建impl包并在包中创建实现类RoleDaoImpl
package com.zcl.dao.impl; import com.zcl.dao.RoleDao; import com.zcl.domain.Role; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; public class RoleDaoImpl implements RoleDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public ListfindAll() { List roleList = jdbcTemplate.query("select * from sys_role",new BeanPropertyRowMapper (Role.class)); return roleList; } } -
使用JdbcTemplate?完成查询操作
请看步骤4
-
将查询数据存储到Modeli中
请看步骤步骤2
-
转发到role-list,jsp页面进行展示
请看步骤2
-
配置实现
web层、Service层、Dao层都需要放到Spring容器当中
web层
-
在spring-mvc.xml配置文件中配置包扫描
需要导入相关的context引用和依赖
xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
配置包扫描controller包
-
在com.zcl.controller包下的RoleController类上使用如下@Controller注解完成创建bean
@RequestMapping("/role") @Controller public class RoleController { @Autowired private RoleService roleService; // 因为service的注入在applicationContext.xml里面注入了所以可以省略下面的代码 }需要使用到@Autowired注解注入
因为下面的service层通过了applicationContext.xml参数注入所以上面的代码可以注释,否则报错
service层
-
在applicationContext.xml配置
复制RoleService的全限定名到applicationContext.xml配置文件中配置
service层是注入dao层的代码
dao层
-
在applicationContext.xml配置
复制RoleDaoImpl的全限定名到applicationContext.xml配置文件中配置
dao层的代码是注入jdbcTemplate模板
-
-
修改role-list.jsp页面获取模型数据并展示
在页面的顶部引入如下
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
找到数据表的内容部分修改,循环遍历模型里面的存储的角色列表数据
${role.id} ${role.roleName} ${role.roleDesc} 删除 -
启动页面查看
如果出现了下图的服务器启动错误,启动不了服务器的重新建一个工程一步一步来完成并启动测试,我也没找出是什么原因,可评论回复
成功的访问页面效果
GitHub远程仓库源码地址
https://github.com/ZhongChunle/Spring_oneTestPro.git



