Spring环境搭建

Spring环境搭建

Spring环境搭建步骤

  1. 创建工程(Project&Module)
  2. 导入静态页面(见资料jsp页面)
  3. 导入需要坐标(controller、service、dao、domian、utils)
  4. 创建包结构(controller、service、dao、domian、utils)
  5. 导入数据库脚本
  6. 创建POJO类
  7. 创建配置文件(applicationContext.xml、spring-mvc.xml、jdbc.properties、log4j.properties)
  • 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.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--加载jdbc.properties-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--dataSource数据源-->
    <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.user}"/>
        <property name="password" value="${jdbc.pwd}"/>
    </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
</beans>
  • jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.user=root
jdbc.pwd=1121
  • spring-mvc.xlm
<?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.xsd
                        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
                        http://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  只扫描Controller-->
    <context:component-scan base-package="com.jotian.controller"/>
    <!--配置Bean-->
</beans>
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--解决乱码的过滤器-->
    <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>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
  • pom.xml大概
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.12.RElEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
    </dependencies>

角色列表的展示步骤分析

  1. 点击角色管理菜单发送请求到服务器端(修改角色管理菜单的url地址)
  2. 创建RoleController和showList()方法
  3. 创建RoleServic和showList()方法
  4. 创建RoleDao和showList()方法
  5. 使用JdbcTemplate完成查询操作
  6. 将查询数据存储到Model中
  7. 转发到role-list.jsp页面进行展示
  • pojo
@Data
public class User{
	private Long id;
    private String username;
    private String email;
    private String password;
    private String phoneNum;
    //当前用户具备哪些角色
    private List<Role> roles;
    //set() get() 有参无参构造 toStinrg()
}
@Data
public class Role{
    private Long id;
    private String roleName;
    private String roleDesc;
}
  • dao
public interfice RoleDao {
    List<Role> showList();
    List<Role> findRolebyUserId(Long id);
}
public class RoleDaoImpl implements RoleDao{
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate=jdbcTemplate;
    }
    piblic List<Role> showList(){
        List<Role> rolelist = jdbcTemplate.query("select * from 表",new BeanPropertyRowMapping<Role>(Role.class));
        return roleList;
    }
     public List<Role> findRolebyUserId(Long id){
         return jdbcTemplate.query("select * from sys_user_role ur,sys_role r where ur.roleId=r.id and ur.userId=?",new BeanPropertyRowMapper<Role>(Role.class),id)
     }
}
  • service
public interface RoleService{
    List<Role> showList();
}
public class RoleServiceImpl implements RoleService{
    private RoleDao roleDao;
    public void setRoleDao(RoleDao roleDao){
        this.roleDao=roleDao;
    }
    public List<Role> showList(){
        return roleDao.showList();
    }
}
  • controller
@RequestMapping("/跳转地址")
@Controller   //注解需要进行扫描
public class RoleController{
    @Autowired
    private RoleService roleService;
    @RequestMapping("/showlist")
    public ModelAndView showList(){
        ModelAndView modelAndView = new ModelAndVicw;
        List<Role> roleList=roleService.showList();
        //设置模型
        modelAndView.addObject("showList",showList);
        //设置视图
        modelAndView.setViewName("地址-showlist")
        return modelAndView;
    }
}
  • 配置Bean xml文件
<bean id="roleDao" class="RoleDaoImpl"></bean>
<bean id="roleService" class="RoleServiceImpl">
	<property name="roleDao" ref="roleService"/>
</bean>

角色添加的步骤分析

  • 点击列表页面新建按钮跳转到角色添加页面
  • 输入角色信息,点击保存按钮,表单数据提交服务器
  • 编写RoleController的save()方法
  • 编写RoleService的save()方法
  • 编写RoleDao的save()方法
  • 使用JdbcTemplate保存Role数据到表(sys_role)
  • 跳转回角色列表页面

post存在乱码问题 get put delete

<!--解决乱码的过滤器-->
    <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>
  • dao
public interface UserDao{
    List<User> list();
    void save(User user);
    void saveUserRoleRel(user.getId,roleIds);
}
public class UserDaoImpl implements UserDao{
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate=jdbcTemplate;
    }
    public List<User> list(){
    return jdbcTemplate.query("select * from sys_user",new BeanPropertyRowmapper<User>(User.class));    
    }
    public void save(User user){
        jdbcTemplate.update("insert into sys_user value(?,?,?,?,?)",null,user.getUsername,user.getEmail().user.getPassword(),user.getPhoneNum())
    }
    public void saveUserRoleRel(user.getId,roleIds){
        
    }
}
  • service
public interface UserService{
    public void list();
}
public class UserServiceImpl implements UserService{
    private UserDao userDao;
    private RoleDao roleDao;
    public void setUserDao(UserDao userDao){
        this.userDao=userDao
    }
    public void setRoleDao(RoleDao roleDao){
        tihs.roleDao=roleDao;
    }
    public List<User> list(){
        List<User> userlist = userDao.list();
        for(User user:userList){
            //获得user的id
            Long id = user.getId();
            //将id作为参数查询当前userId对应的role的信息
            List<Role> roles = roleDao.findRolebyUserId(id);
                user.setRoles(roles);
            
        }
        return userDao.list();
    }
    public void save(User user,Long[] roleIds){
        //第一步 向sys_user表中存储数据
        userDao.save(user);
        //第二步 向sus_user_role关系表中存储多条数据
        userDao.saveUserRoleRel(user.getId,roleIds);
        
    }
}
  • Controller
@Controller
@RequestMapping("/")
public class UserController{
    @Autowired
    private UserService userservice;
    @Autowired
    private RoleService roleService;
    @RequestMapping("/save")
    public Stirng save(User user,Long[] roleIds){
        userService.save(user,roleIds);
        return "redirect:/user/list"
    }
    
    @RequestMapping("/saveUI")
    public String save(User user.Long roleIds){
        ModelAndView modelAndView = new ModelAndView();
        List<Role> roleList = roleService.List();
        modelAndView.addObject("roleList",roleList);
        modelAndView.setViewName("user-add");
        return modelAndView;
    }
    @RequsetMapping("/")
    public ModelAndView list(){
        List<User> userlist = userService.list();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("userList",userList);
        modelAndView.setViewName("user-list");
        return modelAndView;
    }
}
  • 配置Bean
<bean id="userDao" class="UserDaoImpl">
	<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<bean id="userService" class="UserServiceImpl">
	<property name="userDao" ref="userDao"/>
    <property name="roleDao" ref="roleDao"/>
</bean>
posted @ 2021-12-24 14:16  Tian-Jotian-Yongxing  阅读(36)  评论(0)    收藏  举报