Springboot进阶

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/Mythology_px/article/details/83185666

自定义转换器


 
 
  1. package com.converter;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import org.springframework.core.convert.converter.Converter;
  6. import org.springframework.stereotype.Component;
  7. /*
  8. * 设置类型转换器,将String类型日期进行转换成Date
  9. */
  10. // 注解声明该类为一个组件类
  11. @Component
  12. public class DateConverter implements Converter<String, Date> {
  13. // 重写方法,进行数据类型转换
  14. @Override
  15. public Date convert(String source) {
  16. SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd");
  17. try {
  18. Date date = format.parse(source);
  19. return date;
  20. } catch (ParseException e) {
  21. System.err.println( "格式化日期失败");
  22. }
  23. return null;
  24. }
  25. }

 
 
  1. package com.converter;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.context.support.ConversionServiceFactoryBean;
  8. import org.springframework.core.convert.ConversionService;
  9. import org.springframework.core.convert.converter.Converter;
  10. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  11. /*
  12. * 将自定义的类型转换器进行注册配置
  13. */
  14. // 注解声明该类为一个配置类
  15. @Configuration
  16. public class ConverterConfig extends WebMvcConfigurerAdapter{
  17. /*
  18. * 配置日期类型转换器:
  19. * 方法类型必须为ConversionService,参数为自定义的转换器;
  20. * 注解声明按照类型自动注入bean
  21. */
  22. @Bean
  23. @Autowired
  24. public ConversionService getConversionService(DateConverter dateConverter){
  25. // 创建转换器工厂
  26. ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
  27. // 创建转换器集合,将转换器放入集合
  28. Set<Converter> converters = new HashSet<Converter>();
  29. converters.add(dateConverter);
  30. // 将转换器集合设置到工厂
  31. factory.setConverters(converters);
  32. // 返回转换器服务
  33. return factory.getObject();
  34. }
  35. }

 

拦截器


 
 
  1. package com.inteceptor;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.springframework.stereotype.Component;
  5. import org.springframework.web.servlet.HandlerInterceptor;
  6. import org.springframework.web.servlet.ModelAndView;
  7. /*
  8. * 设置拦截器,重写方法,对请求进行处理
  9. */
  10. // 注解声明该类为一个组件类
  11. @Component
  12. public class webInteceptor implements HandlerInterceptor{
  13. @Override
  14. public void afterCompletion(HttpServletRequest arg0,
  15. HttpServletResponse arg1, Object arg2, Exception arg3)
  16. throws Exception {
  17. System.out.println( "请求后进行处理.........");
  18. }
  19. @Override
  20. public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
  21. Object arg2, ModelAndView arg3) throws Exception {
  22. System.out.println( "请求时进行处理.........");
  23. }
  24. @Override
  25. public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
  26. Object arg2) throws Exception {
  27. System.out.println( "请求前进行处理.........");
  28. /*
  29. * 返回值:
  30. * true:将拦截到的请求进行处理后,释放该请求,其他操作可以继续处理
  31. * false:将拦截到的请求进行处理后,不释放该请求,请求中断
  32. */
  33. return true;
  34. }
  35. }

 
 
  1. package com.inteceptor;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  4. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
  5. /*
  6. * 将拦截器处理类进行注册配置;@Configuration可能会导致页面跳转500,
  7. * 可使用@EnableAutoConfiguration或者@EnableWebMvc注解解决
  8. */
  9. // 注解声明该类为一个配置类
  10. @EnableWebMvc
  11. public class InteceptorConfig extends WebMvcConfigurationSupport{
  12. //重写addInterceptors方法,将拦截器类进行注册
  13. @Override
  14. public void addInterceptors(InterceptorRegistry registry) {
  15. // 将拦截器类进行添加注册
  16. registry.addInterceptor( new webInteceptor());
  17. }
  18. }

 

文件上传

          注意:form表单method="post" enctype="multipart/form-data"


 
 
  1. package com.controller;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import javax.servlet.http.HttpServletRequest;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestParam;
  8. import org.springframework.web.multipart.MultipartFile;
  9. /*
  10. * 文件上传
  11. */
  12. @Controller
  13. public class LoginController {
  14. @RequestMapping( "/login")
  15. public String subLogin(@RequestParam("file") MultipartFile file,HttpServletRequest request){
  16. // 获取文件名字
  17. String fileName = file.getOriginalFilename();
  18. System.out.println(fileName);
  19. // 获取服务器绝对路径
  20. String path = request.getSession().getServletContext().getRealPath( "/img/");
  21. System.out.println(path);
  22. // 创建文件
  23. File newFile = new File(path+fileName);
  24. // 写出文件
  25. try {
  26. file.transferTo(newFile);
  27. } catch (IllegalStateException e) {
  28. System.err.println( "文件上传失败");
  29. } catch (IOException e) {
  30. System.err.println( "文件传输失败");
  31. }
  32. return "index";
  33. }
  34. }

 

Springboot整合mybatis

         1. 配置pom.xml依赖


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <groupId>com.mo </groupId>
  6. <artifactId>Micro </artifactId>
  7. <version>0.0.1-SNAPSHOT </version>
  8. <name>springboot-mybatis </name>
  9. <!-- 引入springboot父项目 -->
  10. <parent>
  11. <groupId>org.springframework.boot </groupId>
  12. <artifactId>spring-boot-starter-parent </artifactId>
  13. <version>1.5.17.RELEASE </version>
  14. </parent>
  15. <!-- 添加starter依赖- -->
  16. <dependencies>
  17. <!-- 引入web-starter依赖 -->
  18. <dependency>
  19. <groupId>org.springframework.boot </groupId>
  20. <artifactId>spring-boot-starter-web </artifactId>
  21. </dependency>
  22. <!-- 引入jsp的依赖 -->
  23. <dependency>
  24. <groupId>javax.servlet </groupId>
  25. <artifactId>jstl </artifactId>
  26. </dependency>
  27. <!-- 引入tomcat的部分依赖:scope作用域,provided在进行部署项目时,不添加此jar -->
  28. <dependency>
  29. <groupId>org.apache.tomcat.embed </groupId>
  30. <artifactId>tomcat-embed-jasper </artifactId>
  31. <scope>provided </scope>
  32. </dependency>
  33. <!-- 引入mybatis的依赖 -->
  34. <dependency>
  35. <groupId>org.mybatis.spring.boot </groupId>
  36. <artifactId>mybatis-spring-boot-starter </artifactId>
  37. <version>1.1.1 </version>
  38. </dependency>
  39. <!-- mysql数据库驱动 -->
  40. <dependency>
  41. <groupId>mysql </groupId>
  42. <artifactId>mysql-connector-java </artifactId>
  43. </dependency>
  44. <!-- druid数据库连接池 -->
  45. <dependency>
  46. <groupId>com.alibaba </groupId>
  47. <artifactId>druid </artifactId>
  48. <version>1.0.9 </version>
  49. </dependency>
  50. </dependencies>
  51. <!-- 配置可以将项目打包jar -->
  52. <build>
  53. <plugins>
  54. <plugin>
  55. <groupId>org.springframework.boot </groupId>
  56. <artifactId>spring-boot-maven-plugin </artifactId>
  57. </plugin>
  58. </plugins>
  59. </build>
  60. </project>

         2. 在resources下创建和配置全局配置文件:application.properties


 
 
  1. spring.mvc.view.prefix=/WEB-INF/jsp/
  2. spring.mvc.view.suffix=.jsp
  3. spring.datasource.driverClassName=com.mysql.jdbc.Driver
  4. spring.datasource.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8
  5. spring.datasource.username=root
  6. spring.datasource.password=
  7. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  8. mybatis.type-aliases-package=com.entity

         注:配置文件配置页面视图解析,数据库连接信息,数据源类型,映射文件别名

         3. 创建mapper层接口:接口类和xml配置文件名字须一致


 
 
  1. package com.mapper;
  2. import com.entity.Student;
  3. /*
  4. * 数据库映射接口:由配置映射文件执行sql语句
  5. */
  6. public interface StudentMapper {
  7. public int insert(Student stu);
  8. }

 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.mapper.StudentMapper">
  6. <!-- mybatis接口映射文件 -->
  7. <insert id="insert" parameterType="Student">
  8. insert into student(sname,score,addr) values(#{sname},#{score},#{addr})
  9. </insert>
  10. </mapper>

         4. 创建service层业务处理


 
 
  1. package com.service;
  2. import com.entity.Student;
  3. /*
  4. * service层接口业务
  5. */
  6. public interface StudentService {
  7. public boolean insert(Student stu);
  8. }

 
 
  1. package com.service;
  2. import javax.annotation.Resource;
  3. import org.springframework.stereotype.Service;
  4. import org.springframework.transaction.annotation.Transactional;
  5. import com.entity.Student;
  6. import com.mapper.StudentMapper;
  7. /*
  8. * 业务层实现
  9. */
  10. @Service
  11. // 注解添加事务:在service层添加业务,可以防止操作失败导致数据库数据错误提交
  12. @Transactional
  13. public class StudentServiceImp implements StudentService {
  14. @Resource
  15. private StudentMapper studentMapper;
  16. @Override
  17. public boolean insert(Student stu) {
  18. int rows = studentMapper.insert(stu);
  19. if (rows > 0) {
  20. return true;
  21. } else {
  22. return false;
  23. }
  24. }
  25. }

         5. 创建controller层进行交互


 
 
  1. package com.controller;
  2. import javax.annotation.Resource;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. import com.entity.Student;
  7. import com.service.StudentService;
  8. /*
  9. * 控制层:与前台进行交互和页面跳转
  10. */
  11. @Controller
  12. public class StudentController {
  13. @Resource
  14. private StudentService studentService;
  15. @ResponseBody
  16. @RequestMapping( "/insert")
  17. public String insert(){
  18. Student stu = new Student( null, "Micro", 78, "咸阳");
  19. boolean flag = studentService.insert(stu);
  20. if(flag){
  21. return "插入成功";
  22. } else{
  23. return "插入失败";
  24. }
  25. }
  26. }

       

                                                                     前行的路上总是充满荆棘和诱惑的, 不忘初心,坚持,就会看到希望

                                                                                                                                                                             ----墨渐生微

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值