目录
- 常用知识
- 关于Springboot的22个问题
- 问题1 如何在进入网站时,就是登录页面
- 问题2
- 问题3无法解决 国际化如何解决
- 问题4登录拦截器
- 问题5如何restful传值 form如何restful传值
- 问题6拦截器中的 /** /*区别
- 问题7 themeleaf提取模板
- 问题8 templates包下的其他包命该怎么取
- 问题9 后端传递的数据是一个集合 需要遍历后放到model中吗
- 问题10 通过重定向后还可以读出model中的数据吗
- 问题11如何在前端处理时间 如何设置后端接收格式
- 问题12如何让表单变得好看些
- 问题13如何通过button去跳转网页 不用js
- 问题14 在使用超链接时 / 和没有/ 路径的区别是
- 问题15 没解决如何使 处于哪个导航栏 就让那个导航栏变色
- 问题16 thymeleaf 中便利时 子元素是一个标签如何遍历
- 问题17 在表单中使用value赋值 然后在表单中修改后 value的值会变吗
- 问题18如何让链接再服务器之间跳转
- 问题19如何设置一个错误页面
- 问题20Spring Boot的参数配置优先级
- 问题21在配置文件中修改mvc视图解析器
- 问题22 application.proprtties和application.yaml设置一样的配置谁优先级高
常用知识
web常用配置
**一些基础的配置项**
# 异步请求超时时间(单位为毫秒)
spring.mvc.async.request-timeout=5000
# 是否使用请求参数(默认参数为"format")来确定请求的媒体类型
spring.mvc.contentnegotiation.favor-parameter=false
# 是否使用URL中的路径扩展来确定请求的媒体类型
spring.mvc.contentnegotiation.favor-path-extension=false
# 设置内容协商向媒体类型映射文件扩展名。例如,YML/YAML
spring.mvc.contentnegotiation.media-types.*=
# 当启用favor-parameter参数是,自定义参数名
spring.mvc.contentnegotiation.parameter-name=
# 日期格式配置,如 yyyy-MM-dd
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
# 是否让frameworkServlet doService方法支持TRACE请求
spring.mvc.dispatch-trace-request=false
# 是否启用 FrameworkServlet doService 方法支持OPTIONS请求
spring.mvc.dispatch-options-request=true
# 如果配置为false,那么它将忽略模型重定向的场景
spring.mvc.ignore-default-model-on-redirect=true
# 默认国际化选项,默认取 Accept-Language
spring.mvc.locale=Accept-Language
# 国际化解析器,如果需要固定可以使用fixed
spring.mvc.locale-resolver=accept_header
# 是否启用警告日志异常解决
spring.mvc.log-resolved-exception=false
# 启用Spring Web服务Servlet的优先顺序配置
spring.mvc.servlet.load-on-startup=-1
# 指定静态资源路径
spring.mvc.static-path-pattern=/**
# 如果请求找不到处理器,是否抛出NoHandlerFoundException异常
spring.mvc.throw-exception-if-no-handler-found=false
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
# 设置国际化消息是否总是采用格式化,默认是false
spring.message.always-use-message-format=false
# 设置国际化属性名称,如果多个可以使用逗号分隔,默认为messages
spring.message.basename=message
# 设置国际化消息缓存超时秒数,默认为永久不过期,如果0表示每次都重新加载
spring.message.cache-duration=60
spring.message.encoding=UTF-8
数据校验
JSR-303验证主要是通过注解的方式进行的。在要使用的地方加上@Valid来启用验证机制
```java
// 非空判断,message是提示信息
@NotNull(message="id不能为空")
// 只能是将来日期
@Future(message="需要一个将来日期")
// 日期格式化转换
@DateTimeFormat(pattern="yyyy-MM-dd")
// 浮点数最小值
@DecimalMin(value="0.0")
// 浮点数最大值
@DecimalMax(value="100000.00")
// 整数的最小值
@Min(value= 1,message="最小值")
// 整数的最大值
@Max(value=88,message="最大值")
// 限定范围整形
@Range(min = 1,max=888,message="范围在1-888")
// 邮箱验证
@Email(message="邮件格式错误")
// 字符串长度要达到20到30之间
@Size(min=20,max=30)
静态资源扫描优先级
(1) webjars 访问路径:localhost:8080/webjars/ 很少使用这个
(2) resources、static(默认创建)、public 访问路径:localhost:8080/
Spring Boot 配置文件扫描优先级
优先级
1:当前项目下的 config文件夹中的配置文件 优先级
2:当前项目路径的根目录的配置文件 优先级
3:resource资源文件下的 config 文件夹中的配置文件 优先级
4:resource资源路径下的配置文件(默认创建的配置文件)
spring常用数据源及其mybatis
1.使用springboot自带的hikari数据源
2.使用阿里巴巴的德鲁伊数据源优势是有监控等
以下是使用这数据源对数据进行操作
@RestController
public class Datesource1 {
//使用springBoot写好的模板Bean来用 里面包含了DataSource
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping("/query")
//没有实体类数据库中的东西怎么获取 通过map
public List<Map<String,Object>> data() throws SQLException {
String sql="select * from user ";
return jdbcTemplate.queryForList(sql);
}
@RequestMapping("/addUser/{id}/{username}")
public String addUser(@PathVariable int id,@PathVariable String username){
String sql="insert into user(id,username) values(?,?)";
//问号传参两种方式 直接往jdbcTemplate中写,或者放入Object集合中
Object[] object = new Object[2];
object[0]=id;
object[1]=username;
jdbcTemplate.update(sql,object);
return "添加成功";
}
}
设置德鲁伊的监控功能
@Configuration
public class Datesource2 {
//将这里与配置文件中的配置连接起来
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//后台监控
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
//配置后台登录的账号密码
HashMap<String, String> initParameters = new HashMap<>();
initParameters.put("loginUsername","root");
initParameters.put("loginPassword","254438");
//设置谁可以访问
initParameters.put("allow","");
//禁止谁可以访问
// initParameters.put("","ip");
bean.setInitParameters(initParameters);
return bean;
}
//过滤器
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean<Filter> filter = new FilterRegistrationBean<>();
filter.setFilter(new WebStatFilter());
//可以过滤那些请求
HashMap<String, String> initParameters = new HashMap<>();
//这些东西不进行统计
initParameters.put("exclusions","*.js,*.css,/druid/*");
filter.setInitParameters(initParameters);
return filter;
}
}
mybatis
1.因此要在pojo中使用@mapper注解
2.建立mapper.xml对对应的mapper接口进行注册
3.将mapper.xml放入配置文件
关于Springboot的22个问题
springFactory 中的xxxConfiguration 与properties是boot为我们配置好的方法 我们可以直接使用
要想改变其中的参数 在我们的application中添加我们想要的即可
问题1 如何在进入网站时,就是登录页面
在controller中设置这样的映射器
@RequestMapping(value = {"/",“login.html”})
—或者在WebMvcConfigurer中设置 与上同理 简单跳转建议使用这种
问题2
如何放静态资源(js css)通过**
—所有页面的静态资源都需使用thymeleaf 记得在页面中引入他
—如使用了过滤器拦截所有请求 记得放静态资源通过
问题3无法解决 国际化如何解决
问题4登录拦截器
一个方法继承HandlerInterceptor 然后放到WebMvcConfigurer的addInterceptors下
问题5如何restful传值 form如何restful传值
---关于restful风格传参
---th:href=@{/emp/{id}(id=${emp.getId()})}
---th:href=@{/emp/{id}/(id=${emp.getId()})}
th:href=@{/emp/+${emp.getId()}}
问题6拦截器中的 /** /*区别
/** 包括路径及其子路径 /*只包括下一个路径
问题7 themeleaf提取模板
在想要提取的代码下使用fragment组件化 然后可以通过th:replace"路径名::组件名"在其他页面中使用
问题8 templates包下的其他包命该怎么取
随便 可以建一个公共的包叫commons
问题9 后端传递的数据是一个集合 需要遍历后放到model中吗
可以不用 直接把集合传给前端 在前端遍历输出
问题10 通过重定向后还可以读出model中的数据吗
不可以
问题11如何在前端处理时间 如何设置后端接收格式
前端使用th:${#dates.format(时间,格式)} 后端使用 spring.mvc.format.date=yyyy-MM-dd 设置
问题12如何让表单变得好看些
可以使用这个类修饰 class=“table table-striped table-sm”
问题13如何通过button去跳转网页 不用js
若不用js 可以用a伪装成一个button <a class="btn btn-sm btn-primary">
按钮
问题14 在使用超链接时 / 和没有/ 路径的区别是
: /是从根目录下查找 没有/是从当前目录下加上链接地址进行查找
问题15 没解决如何使 处于哪个导航栏 就让那个导航栏变色
问题16 thymeleaf 中便利时 子元素是一个标签如何遍历
再要遍历多次的这个标签上使用th:each
问题17 在表单中使用value赋值 然后在表单中修改后 value的值会变吗
会
问题18如何让链接再服务器之间跳转
显式使用forward: 请求转发 不会走视图解析器
问题19如何设置一个错误页面
你把404.html直接放到error包下 会自动识别
问题20Spring Boot的参数配置优先级
- 命令行参数
- 来自java:comp/env的JNDI属性
- Java系统属性(System.getProperties())
- 操作系统环境变量
- Randowm ValuePropertySource配置的 random.*属性值
- jar包外部的application-{profile}.properties或application.yaml 带(spring.profile)配置文件
- jar包内部的application-{profile}.properties或application.yaml 带(spring.profile)配置文件
- jar包外部的application-{profile}.properties或application.yaml 不带(spring.profile)配置文件
- jar包内部的application-{profile}.properties或application.yaml 不带(spring.profile)配置文件
问题21在配置文件中修改mvc视图解析器
spring:
mvc:
view:
prefix: /MATE-INF/pages/
suffix: .jsp
问题22 application.proprtties和application.yaml设置一样的配置谁优先级高
application.proprtties高