新手搭建springboot微服务框架的时候,出现的一个小问题及如何解决的记录下来,分享给大家。
新建一个controller,这样最基本的加上@Controller和@RequestMapping,这时候启动程序访问页面是不行的。
Spring Boot提供了默认配置的模板引擎主要有以下几种:Thymeleaf FreeMarker Velocity Groovy Mustache
springboot中推荐使用Thymeleaf,这里是因为缺少了视图引擎的配置,所以启动不成功。在pom.xml中引入
org.springframework.boot
spring-boot-starter-thymeleaf
即可。
还需要说明一下 使用thymeleaf的时候,会对html进行严格的语法校验,实际并没有什么必要,如下是解决方法:
net.sourceforge.nekohtml
nekohtml
1.9.22
同时在配置文件application.properties中进行如下配置:
将spring.thymeleaf.mode默认值为“HTML5”的严格模式,改为“LEGACYHTML5”非严格模式;LEGACYHTML5的使用需要与nekohtml依赖相搭配搭配。
页面html标签必须引入xmlns:th="http://www.thymeleaf.org"
页面中其他thymeleaf的标签作用请自行百度。
Spring Boot 默认的处理方式就已经足够了,默认情况下Spring Boot 使用WebMvcAutoConfiguration
中配置的各种属性。
建议使用Spring Boot 默认处理方式,需要自己配置的地方可以通过配置文件修改。
但是如果你想完全控制Spring MVC,你可以在@Configuration
注解的配置类上增加@EnableWebMvc
,增加该注解以后WebMvcAutoConfiguration
中配置就不会生效,你需要自己来配置需要的每一项。这种情况下的配置方法建议参考WebMvcAutoConfiguration
类。
以下内容针对Spring Boot 默认的处理方式
Spring Boot 默认配置的/**
映射到/static
如果你所有的静态资源文件都是在static文件夹下的,那么springboot默认的配置已经足够用了。但是如果你新建了文件夹的话 就需要自己去配置
注意:上面的/static
等目录都是在classpath:
下面。
如果你想增加如/mystatic/**
映射到classpath:/mystatic/
,你可以让你的配置类继承WebMvcConfigurerAdapter
,然后重写如下方法:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/mystatic/**").addResourceLocations("classpath:/mystatic/");
}
这种方式会在默认的基础上增加/mystatic/**
映射到classpath:/mystatic/
,不会影响默认的方式,可以同时使用。
在index.html
中该如何引用上面的静态资源 呢
注意:JS前面要带上斜杠,表示去到默认的static目录下面去找js目录下的jquery文件。
如果不带的话,给controller的@RequestMapping的注解,访问页面的时候静态资源路径就会带上这个值.切记!切记!
在pom.xml中引入aop配置:
org.springframework.boot
spring-boot-starter-aop
建立GlobalExceptionHandler类处理全局异常
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(value = RuntimeException.class)
public ModelAndView tipException(Exception e) {
LOGGER.error("find exception:e={}",e.getMessage());
e.printStackTrace();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("common/500");//返回自定义渲染页面
return modelAndView;
}
@ExceptionHandler(value = Exception.class)
public ModelAndView exception(Exception e){
LOGGER.error("find exception:e={}",e.getMessage());
e.printStackTrace();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("common/404");//返回自定义渲染页面
return modelAndView;
}
}
@ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理
pom.xml配置
com.alibaba
druid
1.0.18
配置Druid配置
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
Druid是阿里巴巴开源的一个项目,是当前性能最高的DBCP,也可以对数据库访问情况,日志,缓存等进行实时监控。
项目运行起来,访问
http://localhost:8085/druid
登录账号密码admin-123456即可查看项目运行情况
有什么问题欢迎大家留言,也可以给我发邮件[email protected]如果看到会及时回复的,谢谢。