week 6.15-6.21

-

Study-update

-Mon

ssm练习

-Tue

Ajax

-Wes

springboot,annotation

-Thu

反射

-Fri

yaml语法,jsr

-

-

-Sun

springbootWeb,拦截器

6.16 Tuesday

下载jquery-3.5.1.js
配置静态资源过滤

<mvc:default-servlet-handler/>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/6/15
  Time: 11:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script src="${pageContext.request.contextPath}/static/js/jquery-3.5.1.js"></script>

    <script>
      function a() {
        $.post({
          url:"${pageContext.request.contextPath}/a1",
          data: {"username":$("#username").val()},
          success:function (data) {
              alert(data);
          }

        })
      }
    </script>
  </head>
  <body>
<%--    onblur失去焦点--%>
    <input type="text" id="username" onblur="a()">
  </body>
</html>
package com.maaoooo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author lzr
 * @date 2020/6/15 11:31:21
 * @description
 */
@Controller
public class AjaxController {

    @RequestMapping("/t1")
    public String test(){
        return "hello";
    }

    @RequestMapping("/a1")
    public void a1(String username, HttpServletResponse response) throws IOException {
        System.out.println(username);
        if("xiaoliu".equals(username)){
            response.getWriter().print("xiaoliu");
        }else{
            response.getWriter().print("msg:"+username);
        }
    }
}

学习:
JavaEE :熟悉。OOP思想
mysql:持久化
html+js+jQuery+框架:不熟悉
javaweb:能三层架构开发网站,较为原始
ssm框架:简化开发流程 但是配置较为复杂
war:在tomcat运行
springboot:再次简化,微服务架构 jar:内嵌tomcat
服务越来越多:springcloud

6.17 Wednesday

springboot初始化插件无法下载
用阿里源替换

<pluginRepositories>  
    <pluginRepository>  
            <id>alimaven spring plugin</id>  
            <name>alimaven spring plugin</name>  
            <url>https://maven.aliyun.com/repository/spring-plugin</url>  
    </pluginRepository>  
</pluginRepositories>

annotation
每 1 个 Annotation" 都与 “1 个 RetentionPolicy” 关联,并且与 “1~n 个 ElementType” 关联。

@Documented //表示它可以出现在java文档中
@Target(ElementType.TYPE) //指定属性 type表示可以修饰类
@Retention(RetentionPolicy.RUNTIME) //策略属性
public @interface MyAnnotation1 { //使用 @interface 定义注解时,意味着它实现了 java.lang.annotation.Annotation 接口,即该注解就是一个Annotation。
定义 Annotation 时,@interface 是必须的。
}

常用的注解

@Deprecated  -- @Deprecated 所标注内容,不再被建议使用。
@Override    -- @Override 只能标注方法,表示该方法覆盖父类中的方法。
@Documented  -- @Documented 所标注内容,可以出现在javadoc中。
@Inherited   -- @Inherited只能被用来标注“Annotation类型”,它所标注的Annotation具有继承性。
@Retention   -- @Retention只能被用来标注“Annotation类型”,而且它被用来指定Annotation的RetentionPolicy属性。
@Target      -- @Target只能被用来标注“Annotation类型”,而且它被用来指定Annotation的ElementType属性。
@SuppressWarnings -- @SuppressWarnings 所标注内容产生的警告,编译器会对这些警告保持静默。

6.18 Thursday

反射是框架设计的灵魂

反射:将类的各个组成部分封装为其他对象。
好处:
可以在程序运行时,操作对象。
可以解耦

获取class
1.源代码阶段:Class.forName() 可以把字节码加载进内存,返回一个class对象
2.class类对象阶段:通过类名获取 类名.class()
3.runtime阶段 对象.getClass()
java的运行方式
1。.java文件 编译成.class
2.把字节码通过类加载器加载进内存,成为class类对象。
3.通过类对象创建真正的java对象。

6.19 Friday

yaml注入值

package com.maaoooo.springbootdemo.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author lzr
 * @date 2020 06 19 21:52
 * @description
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "user")
public class User {
    private String name;
    private int age;
    private boolean isNice;
    private Map<String,Object> map;
    private List<Object> list;
    private Date brith;
    private Dog dog;

}
user:
  name: xiaoliu
  age: 25
  isNice: true
  map: {k1: v1,k2: v2}
  list:
    -book
    -chair
    -pool
  brith: 1995/8/3
  dog:
    name: dogz
    age: 2

@ConfigurationProperties
将配置文件中配置的每一个属性的值,映射到这个组件中
参数prefix=“person”将配置文件中的person属性一一绑定

6.21 Sunday

拦截器

package com.maaoooo.config;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author lzr
 * @date 2020 06 21 12:25
 * @description
 */
public class MyInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //return true 放行
        System.out.println("前");
        return true;
    }
    //日志
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("后");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("清理");
    }
}

applicationConfig.xml

<!--    配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
<!--            拦截所有请求-->
            <mvc:mapping path="/**"/>
            <bean class="com.maaoooo.config.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

SpringBootWev
1.静态资源导入
2.首页
3.thymeleaf
4.装配springmvc
5.增删改查