1.引入依赖(此依赖已经包含了spring-boot-starter)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在启动web时出现以下异常:
出现异常的原因是在引入正确依赖和添加了正确注解的情况下,jar包版本冲突所致。
解决方法(粗暴):新建项目,引入合适版本的依赖
Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
2.Spring boot web 的默认端口是8080,可以通过classpath下的application.properties文件进行配置
sever.port=8088
3.在进行测试时可以使用谷歌浏览器的postman插件进行测试。
4.在Spring4.3.0中有一个新特性 @GetMapping(value="/user/home"),相当于@RequestMapping(value="/user/home",method=RequestMethod.GET)。同样还有@PostMapping(value="/user/home")
5.可以使用在类上加@RestController注解的方式代替在每个Controller方法上加@ResponseBody
@RestController //表明当前当前Controller的方法的返回值可以直接用于body的输出
public class UserController {
@RequestMapping(value="/user/home",method=RequestMethod.GET)
public String home()
{
return "user home";
}
}
6.在使用jsp时必须将页面放在src/main/webapp目录下,然后在application.properties中配置前缀和后缀
注意:Spring Boot默认是不支持JSP的,可以导入如下依赖
查找依赖的网站:https://search.maven.org/
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
spring.mvc.view.prefix=WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
7.在Eclipse中创建jsp文件 new->other(搜索jsp),在jsp中获取model中的值${}
8.在SpringBoot中使用freemarker模板需要引入依赖,然后去掉jsp的依赖和配置(前缀和后缀)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
默认存放位置为classpath下的templates文件夹,默认的文件扩展名.ftl
可以在配置文件中使用 spring.freemarker.templateLoaderPath=
进行配置,具有多个路径时用逗号隔开。
在该模板中获取参数的方式和jsp几乎一样。
9.在Spring Boot默认的Servlet容器时Tomcat,如果想使用jeety,参考博客
10.在SpringBoot中访问静态资源
静态资源存放的位置:放在webapp下的静态资源可以直接进行访问
访问方式:http://localhost:8080/User.html
静态资源还可以放在以下路径之中:也可以直接进行访问
“classpath:/META-INF/resources/”, “classpath:/resources/”,“classpath:/static/”, “classpath:/public/”
classpath指的是:src/main/resources
访问路径:http://localhost:8080/login.html
注意:可以在配置文件application.properties中对默认加载的位置进行修改
spring.resources.staticLocations=classpath:/image //默认记载classpath下的image文件夹中的静态资源
11.在SprinngBoot中使用Servlet
一种是通过配置类的形式servlet2.5以下只能使用此方式
另一种方式是通过@ServletComponentScan注解(servlet3.0特有的方式)的方式,具体步骤如下
步骤一:继承HttpServlet,并在类上使用@WebServlet注解
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/user.do")//servlet3.0的注解,为servlet映射访问路径
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("user......");
}
}
步骤二:在启动类上用@ServletComponentScan注解对编写的servlet进行扫描
@ServletComponentScan//对编写的servlet进行扫描
@SpringBootApplication
public class APP
{
public static void main( String[] args )
{
ConfigurableApplicationContext context=SpringApplication.run(APP.class, args);
// SpringApplication app=new SpringApplication(App.class);
//
// ConfigurableApplicationContext context=app.run(args);
//context.close();
}
}
步骤三:访问 http://localhost:8080/user.do
12.在SpringBoot中使用Filter
同样有配置类和注解两种方式实现,如下是注解方式
步骤一:实现Filter 接口
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/user.do")//定义拦截的请求形式
public class loginFilter implements Filter {
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println(arg0.getRemoteHost());
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
步骤二:测试 访问user.dao时会输出访问的主机号
@SpringBootApplication
public class APP
{
public static void main( String[] args )
{
ConfigurableApplicationContext context=SpringApplication.run(APP.class, args);
// SpringApplication app=new SpringApplication(App.class);
//
// ConfigurableApplicationContext context=app.run(args);
//context.close();
}
}
13.在SpringBoot中使用Listener 只需实现 ServletContextListener接口并在实现类上添加
@WebListener 注解即可
也可以通过配置类的形式进行使用