栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring阶段一总结练习一(环境搭建和角色信息查询展示)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring阶段一总结练习一(环境搭建和角色信息查询展示)

Spring阶段一总结练习 1、练习环境搭建
  1. 创建MaverWeb项目工程(spring_oneTest)

  2. 导入静态页面

    可联系获取

  3. 导入需要坐标

    
        
            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
        
    
    
    
  4. 创建包结构(controller、service、dao、domain、utils)

    三层架构加实体对象包

  5. 导入数据库脚本

    创建数据库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);
    
    ;
    ;
    ;
    ;
    
    
  6. 创建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 + ''' +
                    '}';
        }
    }
    
    
  7. 创建配置文件(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
            /
        
    
    
2、角色列表的展示步骤分析
  1. 点击角色管理菜单发送请求到服务器端(修改角色管理菜单的u地址)

  2. 创建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();
            List roleList = roleService.list();
            // 设置视图模型数据
            modelAndView.addObject("roleList",roleList);
            // 设置跳转的视图
            modelAndView.setViewName("role-list");
            System.out.println("输出查询列表:"+roleList);
            return modelAndView;
        }
    }
    
    
  3. 创建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 List list();
    }
    
    

    在此包下创建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 List list() {
            List roleList = roleDao.findAll();
            return roleList;
        }
    }
    
    

    在实现类里面会出现报RoleDao红,原因是还没有写Dao层的对应代码

  4. 创建RoleDao和findAll方法【Dao层】

    在com.zcl.dao包下创建RoleDao接口

    package com.zcl.dao;
    
    import com.zcl.domain.Role;
    
    import java.util.List;
    
    
    public interface RoleDao {
        List findAll();
    }
    
    

    在此包下创建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 List findAll() {
            List roleList = jdbcTemplate.query("select * from sys_role",new BeanPropertyRowMapper(Role.class));
            return roleList;
        }
    }
    
    
  5. 使用JdbcTemplate?完成查询操作

    请看步骤4

  6. 将查询数据存储到Modeli中

    请看步骤步骤2

  7. 转发到role-list,jsp页面进行展示

    请看步骤2

  8. 配置实现

    web层、Service层、Dao层都需要放到Spring容器当中

    web层

    1. 在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包

      
      
      
    2. 在com.zcl.controller包下的RoleController类上使用如下@Controller注解完成创建bean

      @RequestMapping("/role")
      @Controller
      public class RoleController {
          
          @Autowired
          private RoleService roleService;
          // 因为service的注入在applicationContext.xml里面注入了所以可以省略下面的代码
          
      }
      

      需要使用到@Autowired注解注入

      因为下面的service层通过了applicationContext.xml参数注入所以上面的代码可以注释,否则报错

    service层

    1. 在applicationContext.xml配置

      复制RoleService的全限定名到applicationContext.xml配置文件中配置

      
      
          
      
      

      service层是注入dao层的代码

    dao层

    1. 在applicationContext.xml配置

      复制RoleDaoImpl的全限定名到applicationContext.xml配置文件中配置

      
      
          
      
      

      dao层的代码是注入jdbcTemplate模板

  9. 修改role-list.jsp页面获取模型数据并展示

    在页面的顶部引入如下

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    

    找到数据表的内容部分修改,循环遍历模型里面的存储的角色列表数据

    
    	
    		
    			
                ${role.id}
                ${role.roleName}
                ${role.roleDesc}
                
                	删除
                
    		
    		
    
    
  10. 启动页面查看

    如果出现了下图的服务器启动错误,启动不了服务器的重新建一个工程一步一步来完成并启动测试,我也没找出是什么原因,可评论回复

    成功的访问页面效果

GitHub远程仓库源码地址

https://github.com/ZhongChunle/Spring_oneTestPro.git

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号