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.增删改查