SpringBoot简介
SpringBoot是用来简化Spring应用的创建、运行、调试、部署等开发过程的一个全新框架,使用SpringBoot可以使用户专注于Spinrg应用的开发,而无需过多关注xml的配置(约定优于配置),简单来说,使用SpringBoot可以快速创建一个基于Spring的项目
SpringBoot的特点:
- 自动配置
- 内嵌servlet容器
- 起步依赖
SpringBoot整合JSP
- 导入依赖
在pom.xml中添加tomcat-embed-jasper的依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artfactId>
</dependency>
注:可以通过pom.xml中parent标签快速获取依赖
- 创建web目录
添加依赖之后,可以发现无法直接在resources目录及其子目录下创建jsp文件,此时可以在main目录下创建一个web目录,然后选择file-project structure-modules中的本项目中添加一个Web,之后在左侧的Web Resource Directory中添加刚才创建的web目录,之后会发现web目录上会多一个小蓝点,那就表示成功了,然后在该目录下创建jsp即可。
SpringBoot整合MyBatis
- 导入依赖
在创建SpringBoot项目时直接添加MyBatis与MySQL的依赖
- 配置相关属性
修改application.properties文件
#配置mysql连接要素
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc.mysql://127.0.0.1/mydb
spring.datasource.username=mysql
spring.datasource.password=mysql
#配置实体类别名
mybatis.type-aliases-package=cn.khue.pojo
#配置日志级别
loggin.level.cn.khue.mapper=debug
SpringSecurity
SpringSecurity是一个为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,提供一组可以在Spring应用上下文中配置的Bean,充分利用了IOC、DI、AOP功能,为应用程序提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。底层通过各种拦截器、过滤器来实现控制权限的访问。
Spring Security是Spring采用AOP思想,基于Servlet过滤器实现的安全框架,它提供了完善的认证机制和方法级的授权功能,是一款非常优秀的权限管理框架。
应用安全性的两个方面:
- 用户认证(Authentication):验证某个用户是否为系统中的合法主体(用户名、密码等凭证)
通过用户名和密码成功登录系统后,让系统得到当前用户的角色身份 - 用户授权(Authorization):验证某个用户是否有权限执行某个操作
系统根据当前用户的角色,给其授予对应可以操作的权限资源
SpringSecurity默认拦截全部请求,直接跳转至内置登录界面(默认用户名为user,密码将打印在控制台)
自定义认证逻辑
- 编写配置类
@Configuration public class SecurityConfig{ @Bean public PasswordEncoder getPasswordEncoder(){ return new BCryptPasswordEncoder(); } }
- 编写认证服务实现类
@Service public class CustomAuthentication implements UserDetailsService{ @Autowired private PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException(){ if(!username.equals("用户名")){ //如果该用户名不存在,就抛出异常 throw new UsernameNotFoundException(); } //如果用户名存在,验证密码 return new User(username,passwordEncoder.encode("真实密码"),AuthorityUitls.commaSeparatedStringToAuthorityList("用户权限1”,“用户权限2")); } }
自定义登录页面
- 编写登录页面
略 - 修改配置类
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Bean public PasswordEncoder getPasswordEncoder(){ return new BCryptPasswordEncoder(); } //自定义拦截 @Override protected void configure(HttpSecurity hppt){ //url拦截 http.authorizeRequests() .antMatchers("/login.html").permitAll() //登录页资源放行 .anyRequest().authenticated(); //其他所有请求资源必须认证 //表单登录 http.formLogin() .loginPage("/login.html") //自定义登录页 .loginProcessingUrl("/login") //自定义登录页中的登录请求 .successForwardUrl("/main") //登录成功后跳转的请求地址 .failureForwardUrl("/error"); //登录失败后跳转的请求地址 //关闭csrf防护 http.csrf().disable(); } }
- 编写控制器
@Controller public class LoginController{ //登录成功 @PostMapping("/main") public String toMain(){ return "redirect:/main.html"; } //登录失败 @PostMapping("/error") public String error(){ return "redirect:/error.html"; } }