SpringBoot MVC
環境搭建
-
在pom.xml添加spring-boot-starter-web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
修改application.yml配置
spring: datasource: username: system password: 123456 url: jdbc:oracle:thin:@localhost:1521:XE driverClassName: oracle.jdbc.OracleDriver server: port: 8889
-
編寫Controller,使用@RequestMapping和@RestController
@RestController public class BookService { @Autowired private BookDao bookDao; @RequestMapping(value="/book",method=RequestMethod.GET) public List<Book> loadAll(){ return bookDao.findAll(); } @RequestMapping(value="/book/{id}",method=RequestMethod.GET) public Book load(@PathVariable("id")int id){ return bookDao.findById(id); } @RequestMapping(value="/book/{id}",method=RequestMethod.DELETE) public boolean delete(@PathVariable("id")int id){ int row = bookDao.deleteById(id); if(row >= 1){ return true; }else{ return false; } } @RequestMapping(value="/book/{id}",method=RequestMethod.PUT) public boolean update(@PathVariable("id")int id, @RequestBody Book book){ book.setId(id); int row = bookDao.update(book); if(row >= 1){ return true; }else{ return false; } } @RequestMapping(value="/book",method=RequestMethod.POST) public boolean add(@RequestBody Book book){ bookDao.save(book); return true; } }
-
編寫Filter,解決Ajax調用跨域問題
@WebFilter(servletNames={"dispatcherServlet"}) public class AjaxDomainFilter implements Filter{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse)response; httpResponse.setHeader("Access-Control-Allow-Origin", "*");//設置允許哪些域名應用進行ajax訪問 httpResponse.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE"); httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type"); chain.doFilter(request, response);//調用後續serlvet } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
-
配置Filter,使用@WebFilter和@ServletComponentScan
@SpringBootApplication//開啓掃描、自動配置、bean定義 @MapperScan(basePackages={"cn.xdl.dao"})//開啓掃描Mapper接口 @ServletComponentScan//開啓WebFilter、WebServlet、WebListener配置支持 public class BootApplication { public static void main(String[] args){ SpringApplication.run(BootApplication.class, args); } }
-
修改pc_web前端的common.js,將請求路徑改爲
var path = "http://localhost:8889";
SpringBoot 熱啓動
當修改完畢程序代碼後,可以自動重新部署。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
如果修改了pom.xml定義,要從新啓動,修改了java代碼可以自動重新啓動。
SpringBoot MyBatis分頁
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
然後在調用查詢代碼之前執行PageHelper.startPage方法
Page page = PageHelper.startPage(p, 3);
//分頁查詢
List list = bookDao.findAll();
//獲取總頁數
int totalPage = page.getPages();
SpringBoot 攔截器
-
編寫攔截器類,實現HandlerInterceptor接口,實現PreHandle、PostHandle、afterCompletion方法
public class AjaxDomainInterceptor implements HandlerInterceptor{ @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setHeader("Access-Control-Allow-Origin", "*");//設置允許哪些域名應用進行ajax訪問 response.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE"); response.setHeader("Access-Control-Allow-Headers", "Content-Type"); return true; } //... }
-
編寫配置類,繼承WebMvcConfigurerAdapter,重寫addInterceptors方法
//@Configuration @Component public class InterceptorConfiguration extends WebMvcConfigurerAdapter{ public void addInterceptors(InterceptorRegistry registry) { //配置攔截器 AjaxDomainInterceptor ajaxDomain = new AjaxDomainInterceptor(); registry.addInterceptor(ajaxDomain).addPathPatterns("/**"); } }