java28-SpringBoot开发笔记

101 阅读5分钟

一、记录

  • 1 路径问题
//里面的路径可以加/也可以不加,但是对应的Getmapping的路径一定要加
@RequestMapping("index")

欢迎页可以直接使用http://localhost:8080/访问到

  • 2 网站图标 添加网站的图标,创建文件favicon.con,找的资源对应的文件,并关闭默认的图标
`  #关闭默认图标 `
spring.mvc.favicon.enabled=false

在新版的SpringBoot已经不需要了,直接将facicon.con放到static.images.favicon
并在前端进行配置

<link rel="icon" href="images/favicon.ico" type="image/x-icon"/>
  • 3 thymeleaf模板 导入对应的依赖,将对应的HTML页面放到tempaltes文件夹下,必须这样放置,源码里规定的
    jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war,第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的
    常用的th的格式\
//文件夹下的
th:src="@{/ /}"
//url
th:href="@{}"
//标签外的,你如按钮和bo
[[#{login.memember}]]
//响应的
th:action="@{/}"
//$符号是取表达式的
[[${session.loginUser}]]
  • 4、SpringMvc自动配置原理 例子:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor(new LoginInterceptor())
//                .addPathPatterns("/admin/**")
//                .excludePathPatterns("/admin")
//                .excludePathPatterns("/admin/login");  /*排除一些路径*/
    }
}

扩展SpringMVC,官方就推荐我们这么去使用,既保SpringBoot留所有的自动配置,也能用我们扩展的配置!
全面接管即:SpringBoot对SpringMVC的自动配置不需要了,所有都是我们自己去配置! 只需在我们的配置类中要加一个@EnableWebMvc。

  • 5、模拟数据库创建员工表 对应的数据库中的表都是一个个map,一个key是自动生成的,是主键,对应数据库中的对象\
  1. 首先,创建一个map对象,其中key 为主键的id,value为对应的对象
  2. 要增加数据,需要使用static静态代码块,让类生成的数据就添加进来
  3. 使用的是对应map的put方法进行添加
  4. 对应这个类,来操作,包括增删改查等方法,实际是哪个就是对集合的操作
  • 6、国际化配置
  1. 在resource的文件夹下设置一个文件为i18n,定义一个文件为login.properties,在新一个中文对应的login_zh.properties
  2. 创建好后添加en_US,自动生成
  3. 点击下方资源捆绑,resource bundle 设置对应的中英文,名字可自定义设置
  4. 配置文件中,进行配置对应的信息
spring.messages.basename=i18n.login
  1. 使用,通过thymeleaf模板,通过#{login.自定义的名字}
  2. 需要动态的修改实现中英文的切换,通过拦截SpingMvc的默认配置,自定义语言管理器,并且实现LocaleResolver接口,方法最终返回的本地的使用的语言
  3. 通过request请求获取到前端的请求参数L,语言的设置通过locale类进行返回。使用@bean将自定义的LocaleResolver进行注入到容器中
locale = new Locale(split[0], split[1]);

总结:
@Compent和@Bean到底区别在哪?
在应用开发的过程中,如果想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了。

但是可以通过xml 或者在 @Configuration配置类中通过@Bean进行配置

@Component来表示一个通用注释,用于说明一个类是一个spring容器管理的类(再通俗易懂一点就是将要实例化的类丢到Spring容器中去)。

@Component的范围比较广,所有类都可以进行注解;

而@Configuration注解一般注解在类里面有@Value注解的成员变量或@Bean注解的方法,@Bean主要和@Configuration配合使用的。,类似于之前的.xml文件的bean标签

  • 7、动态的获取用户登录的名字
  1. 首先创建一个session,通过session进行保存usename
  2. 在需要获取的前端界面使用[[${session.loginUser}]]来获得用户,通过session进行获取
  • 8、@RequestParam注解,代表着前端页面传递过来的name的值,@RequestParam("name") username 和前端的提交的值保持一致 @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
  • 9、添加拦截器
  1. 自定义拦截器需要实现HandlerInterceptor接口,对应的是SpringMVC里面自带的
  2. 登录成功设置session,session会获得对应的用户,如果不存在,则提示让它先登录,使用
Object loginUser = request.getSession().getAttribute("loginUser");
//不会让你进
if(loginUser==null){
    //设置请求失败的信息
    request.setAttribute("msg","请先登录");
    //请求转发  转发的是对应的url的路径 request.getRequestDispatcher("/index").forward(request,response);
    return false;
}
else {
    return true;
}
  1. 在配置的类中添加拦截器 这个是添加,如果是添加一个组件的话需要加一个bean,这个是WebMvcConfigur可以实现的
  • 10、使用th模板提取公共页面的部分
th:fragement 
th:fragment="topbar"  //比如定义为公共的部分,当前的页面为index
在一下页面要使用的时候,只需要
th:insert="~{index::topbar}"就可以实现前端模块的复用,注意是两个::

补充:
使用th模板设置按钮的选择展示(使用三元表达式),传递参数给组件

  1. 在调用sidebar的时候传递一个html,接收参数,如果点击的是当前的页面则让它进行高亮,否则返回 <div th:replace="~{common/common::sidebar(active='main.html')}"></div>