在漫长的java应用程序开发过程中,笨重的开发框架渐渐的不受人待见,取而代之的将是越来越自动化,越来越轻量级的框架。
学过java的人都应该知道,目前最流行的SSM组合,Spring
、SpringMVC
、Mybatis
。这三个框架要想组合在一起,需要编写大量的配置文件,而且这一过程使得整个项目开发在一开始就变得又臭又长。如此一来,对一个全自动化,不需要用户输入任何配置的智能框架的需求就变得格外重要了。于是乎,spring的作者就为我们开发者带来了福音 -> spring boot。spring boot并不是一个全新的框架,而是对目前所有流行框架和库的一种整合,jar包管理有了Maven,今后框架的管理也有了Spring Boot。 - 第一步创建Maven工程
- 在pom.xml中加入如下配置
org.springframework.boot spring-boot-starter-parent 1.4.4.RELEASE 1.8 复制代码 org.springframework.boot spring-boot-starter-web mysql mysql-connector-java org.apache.tomcat.embed tomcat-embed-jasper provided javax.servlet jstl org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 com.github.pagehelper pagehelper-spring-boot-starter 1.2.2
- 创建一个启动类
package cn.java2016.controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class App{ public static void main(String[] args) { // spring boot项目的启动入口 SpringApplication.run(App.class, args); }}复制代码
- 创建一个Controller类
package cn.java2016.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class HelloWorldController{ @RequestMapping("/helloworld") public String helloworld() { // 转发到helloworld.jsp页面 return "helloworld"; }}复制代码
- 在WEB-INF下创建一个jsp文件夹,并创建一个
helloworld.jsp
- 在
src/main/resource
目录下创建application.properties
文件,这个文件很重要,这就相当于我们以前配置过的所有的spring xml文件。 在这个文件中做如下配置,指定controller中return的jsp页面路径,注意application.properties里面不能包含中文
spring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp复制代码
- 这时候回到App.java类中,启动 run as -> java application 运行spring boot项目,没有任何报错说明启动成功!
- 最后我们来访问localhost:8080/helloworld
(这里默认不需要加项目名)
这时候说明访问成功 - 我们还可以做更多的配置,设置UTF-8编码
spring.http.encoding.charset=UTF-8spring.http.encoding.enabled=truespring.http.encoding.force=trueserver.tomcat.uri-encoding=UTF-8复制代码
- 数据库连接配置,这里需要mysql驱动的依赖
spring.datasource.url=jdbc:mysql:///boot_crm?characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=123spring.datasource.driver-class-name=com.mysql.jdbc.Driver复制代码
- 我们在分页会用到的分页配置,这里需要配置pagehelper的依赖
pagehelper.helper-dialect: mysqlpagehelper.reasonable: truepagehelper.support-methods-arguments: truepagehelper.params: count=countSql复制代码
pagehelper在spring boot中的用法
// 开始分页,第一个参数表示要查第几页,第二个参数表示一页有多少条数据Page
- 配置登陆拦截器, 创建一个类LoginInterceptor
package cn.java2016.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;/** * 配置拦截器 * * @author Administrator * */public class LoginInterceptor implements HandlerInterceptor{ public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception { // 没有登陆过的用户直接打回login页面 if (req.getSession().getAttribute("username") != null || req.getRequestURI().indexOf("/login") >= 0) { return true; } else { req.getRequestDispatcher("WEB-INF/jsp/index.jsp").forward(req, resp); return false; } }}复制代码
- 在App.java中配置拦截器, 需要继承
WebMvcConfigurerAdapter
,并重写addInterceptors
方法
public class App extends WebMvcConfigurerAdapter{ @Override public void addInterceptors(InterceptorRegistry registry) { // /** 表示拦截多层请求,如 /a/b/c/, 而 /* 只拦截一层请求,如: /a registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**"); } ...}复制代码
- 如果你用的是mybatis的话 如果你的mapper.xml和mapper.java在cn.java2016.mapper包下,在启动类上加@MapperScan("cn.java2016.mapper"),配置mapper文件扫描器
...@MapperScan("cn.java2016.mapper") // 扫描所有的mapper文件, 不能指定到包名,否则报错public class App extends WebMvcConfigurerAdapter {...复制代码