自定義轉換器
package com.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
/*
* 設置類型轉換器,將String類型日期進行轉換成Date
*/
// 註解聲明該類爲一個組件類
@Component
public class DateConverter implements Converter<String, Date> {
// 重寫方法,進行數據類型轉換
@Override
public Date convert(String source) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = format.parse(source);
return date;
} catch (ParseException e) {
System.err.println("格式化日期失敗");
}
return null;
}
}
package com.converter;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ConversionServiceFactoryBean;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.converter.Converter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/*
* 將自定義的類型轉換器進行註冊配置
*/
// 註解聲明該類爲一個配置類
@Configuration
public class ConverterConfig extends WebMvcConfigurerAdapter{
/*
* 配置日期類型轉換器:
* 方法類型必須爲ConversionService,參數爲自定義的轉換器;
* 註解聲明按照類型自動注入bean
*/
@Bean
@Autowired
public ConversionService getConversionService(DateConverter dateConverter){
// 創建轉換器工廠
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
// 創建轉換器集合,將轉換器放入集合
Set<Converter> converters = new HashSet<Converter>();
converters.add(dateConverter);
// 將轉換器集合設置到工廠
factory.setConverters(converters);
// 返回轉換器服務
return factory.getObject();
}
}
攔截器
package com.inteceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/*
* 設置攔截器,重寫方法,對請求進行處理
*/
// 註解聲明該類爲一個組件類
@Component
public class webInteceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("請求後進行處理.........");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
System.out.println("請求時進行處理.........");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
System.out.println("請求前進行處理.........");
/*
* 返回值:
* true:將攔截到的請求進行處理後,釋放該請求,其他操作可以繼續處理
* false:將攔截到的請求進行處理後,不釋放該請求,請求中斷
*/
return true;
}
}
package com.inteceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
/*
* 將攔截器處理類進行註冊配置;@Configuration可能會導致頁面跳轉500,
* 可使用@EnableAutoConfiguration或者@EnableWebMvc註解解決
*/
// 註解聲明該類爲一個配置類
@EnableWebMvc
public class InteceptorConfig extends WebMvcConfigurationSupport{
//重寫addInterceptors方法,將攔截器類進行註冊
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 將攔截器類進行添加註冊
registry.addInterceptor(new webInteceptor());
}
}
文件上傳
注意:form表單method="post" enctype="multipart/form-data"
package com.controller;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
/*
* 文件上傳
*/
@Controller
public class LoginController {
@RequestMapping("/login")
public String subLogin(@RequestParam("file") MultipartFile file,HttpServletRequest request){
// 獲取文件名字
String fileName = file.getOriginalFilename();
System.out.println(fileName);
// 獲取服務器絕對路徑
String path = request.getSession().getServletContext().getRealPath("/img/");
System.out.println(path);
// 創建文件
File newFile = new File(path+fileName);
// 寫出文件
try {
file.transferTo(newFile);
} catch (IllegalStateException e) {
System.err.println("文件上傳失敗");
} catch (IOException e) {
System.err.println("文件傳輸失敗");
}
return "index";
}
}
Springboot整合mybatis
1. 配置pom.xml依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mo</groupId>
<artifactId>Micro</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis</name>
<!-- 引入springboot父項目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.17.RELEASE</version>
</parent>
<!-- 添加starter依賴- -->
<dependencies>
<!-- 引入web-starter依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入jsp的依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- 引入tomcat的部分依賴:scope作用域,provided在進行部署項目時,不添加此jar -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- 引入mybatis的依賴 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql數據庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid數據庫連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
</dependencies>
<!-- 配置可以將項目打包jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2. 在resources下創建和配置全局配置文件:application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.entity
注:配置文件配置頁面視圖解析,數據庫連接信息,數據源類型,映射文件別名
3. 創建mapper層接口:接口類和xml配置文件名字須一致
package com.mapper;
import com.entity.Student;
/*
* 數據庫映射接口:由配置映射文件執行sql語句
*/
public interface StudentMapper {
public int insert(Student stu);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mapper.StudentMapper">
<!-- mybatis接口映射文件 -->
<insert id="insert" parameterType="Student">
insert into student(sname,score,addr) values(#{sname},#{score},#{addr})
</insert>
</mapper>
4. 創建service層業務處理
package com.service;
import com.entity.Student;
/*
* service層接口業務
*/
public interface StudentService {
public boolean insert(Student stu);
}
package com.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.entity.Student;
import com.mapper.StudentMapper;
/*
* 業務層實現
*/
@Service
// 註解添加事務:在service層添加業務,可以防止操作失敗導致數據庫數據錯誤提交
@Transactional
public class StudentServiceImp implements StudentService {
@Resource
private StudentMapper studentMapper;
@Override
public boolean insert(Student stu) {
int rows = studentMapper.insert(stu);
if (rows > 0) {
return true;
} else {
return false;
}
}
}
5. 創建controller層進行交互
package com.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.entity.Student;
import com.service.StudentService;
/*
* 控制層:與前臺進行交互和頁面跳轉
*/
@Controller
public class StudentController {
@Resource
private StudentService studentService;
@ResponseBody
@RequestMapping("/insert")
public String insert(){
Student stu = new Student(null, "Micro", 78, "咸陽");
boolean flag = studentService.insert(stu);
if(flag){
return "插入成功";
}else{
return "插入失敗";
}
}
}
前行的路上總是充滿荊棘和誘惑的, 不忘初心,堅持,就會看到希望
----墨漸生微