Spring环境搭建
Spring环境搭建
Spring环境搭建步骤
- 创建工程(Project&Module)
- 导入静态页面(见资料jsp页面)
- 导入需要坐标(controller、service、dao、domian、utils)
- 创建包结构(controller、service、dao、domian、utils)
- 导入数据库脚本
- 创建POJO类
- 创建配置文件(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>
角色列表的展示步骤分析
- 点击角色管理菜单发送请求到服务器端(修改角色管理菜单的url地址)
- 创建RoleController和showList()方法
- 创建RoleServic和showList()方法
- 创建RoleDao和showList()方法
- 使用JdbcTemplate完成查询操作
- 将查询数据存储到Model中
- 转发到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>

浙公网安备 33010602011771号