Javaweb学习笔记(一)

发布时间 2023-08-24 02:01:36作者: 何平安

封面玩AI生成的图片,好看拿来当栏图了~

web前端的学习推荐地方:w3school 在线教程

分享个记笔记的好工具加破解:Typora:typora下载和破解(仅供学习) – hackettt – 博客园 (cnblogs.com)

—-JavaScript—-

最基础的输出语句:alert(“xxx”);

控制台输出:console.log(xxx);

定义变量:var a=xxx; –数据类型:number:数字,string,boolean不多说,null:对象为空,undefined:声明的变量未初始化时。获取数据类型可以用xxx.typeOf的方法-JS有点像python不用定义数据类型。

定义一个函数(相当于Java中的方法):function xxx(a,b){}//变量不用定义数据类型

调用函数:var result=xxx(x,y);并输出:alert(xxx);

另一种方法定义函数:var 方法名=function(参数…){}

JS基础对象:

数组:Array(数组的元素可以为空)。获取数组长度:.length。一些方法:forEach():遍历数组中的每个有值的元素(普通for循环空的也要遍历),并调用一次传入的函数。push():将新元素添加到数组末尾,并返回新的长度。splice():从数组中删除元素。

ES6箭头函数(相当于Java中的Lambda):

arr2.forEach(e => {

        console.log(e);

    });

字符串对象:String。创建方法:var xxx=new String(“…”)或直接var xxx=”…”。获取长度:.length。一些方法:charAt:str.charAt(2);获取str下标为2的字符;;;获取指定字符在字符串中的位置:str.indexof(“xxx”);;;去掉字符串中的左右的空格:trim

—Maven—

maven官网:Maven – Welcome to Apache Maven

阿里云maven配置下载:JDK11的建议用3.6.1:Index of /dist/maven/maven-3/3.6.1/binaries (apache.org),选择apache-maven-3.6.1-bin.zip。JDK17的建议用3.8.1:Index of /dist/maven/maven-3/3.8.1/binaries (apache.org),也是选择apache-maven-3.8.1-bin.zip

安装与配置方法(参考文章:MAVEN的安装与配置教程(超详细版)_maven安装及配置教程_Coder_19zfl的博客-CSDN博客):

解压成文件夹打开conf文件夹,用IDEA等运行setting.xml文件,再在55行代码处添加下面的代码:<localRepository>Path</localRepository>。其中path为你存放maven的respone(响应)的文件夹,建议就在apache-maven文件夹里面新建个文件夹。

然后配置阿里云私服地址,详细方法:Maven仓库配置阿里云私服地址_nexus-aliyun地址_你好像很好吃a的博客-CSDN博客

(Maven3.6.1的需要添加,3.8.1的需要修改):打开setting.xml,找到<mirrors></mirrors>标签
在标签中增加如下代码:

<mirror>
	<id> alimaven</id>
	<mirrorOf>central</mirrorOf>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

最后在添加一个环境变量,方法就是先新建一个MAVEN_HOME(maven文件地址)的系统变量,地址就是apache-maven-3.6.1解压maven的文件夹路径,然后再在Path系统变量中新建名叫%MAVEN_HOME%\bin就行了。

打开windows终端输入:

mvn -v    // 查看maven版本号

导入Maven工程:文件–>项目结构–>模块–>”+“号–>新建模块。

Maven的三个坐标:groupId(组织ID),artifactId(工程ID),version(版本)

Maven依赖管理:

配置:在pom.xml中编写<denpendencies>标签,再编写<denpendency>回车就自动生成了。输入Maven的三坐标就可以依赖Maven库了,Maven仓库大全:Maven Repository: Search/Browse/Explore (mvnrepository.com)

传递:Maven-project2依赖了Maven-project1的资源,Maven-project1又依赖了MavenStudy的资源

范围(scope):<scope>xxx</scope>

scope值 主程序main 测试程序test 打包package 范例
compile(默认) Y Y Y log4j
test Y junit
provided Y Y servlet-api
runtime Y Y jdbc驱动

生命周期:一般包括clean清除运行的target文件–>compile恢复生成target文件–>test测试–>package打包–>install安装

—Web后端开发入门—

—SpringBoot—

spring官网:Spring | Home Spring含金量:现在的每个JAVA项目99%都有!!!

在IDEA创建一个SPring Initializr项目,URL先用原始的start.spring.io,JDK建议用17,类型选Maven(版本我用的3.6.1),组织啥的有就写你的,点下一步选择 Web中的Spring web,SpringBoot版本3.0.0以上的JDK11用不了。创建成功!

在浏览器中调用RequestMapping名输出Hello World!:在src/main/java/组织名包/创建一个软件包再创建一个Java类:

再在里面编写下面的代码:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class c1 {
@RequestMapping("/hello")
public String hello(){
System.out.println("Hello!");
return "Hello~";
}
}

再运行自动生成的SpringBootStudynewApplication类,在浏览器输入地址:localhost:8080/hello。大功告成!

SpringBoot内嵌Tomcat服务器哦~

DispatcherServlet:前端控制器

postman下载加汉化教程:postman下载与汉化(附直接下载链接)_postman汉化包下载_小雪雪7777的博客-CSDN博客

postman的使用:新建一个工作区,再在URL输入你的localhost地址,再send就可以直接返回值。

—请求参数—

简单参数:

创建一个JAVA类编写下面代码(创建位置就不多说了):

@RestController
public class RequestController {
@RequestMapping("/simpleParam")
public String simpleParm(HttpServletRequest request){
String name= request.getParameter("name");
String ageStr= request.getParameter("age");
int age=Integer.parseInt(ageStr);
System.out.println(name+":"+age);
return "OK";
}
}

再在postman的URL中输入https://localhost:8080/simpleParam?name=hepingan&age=19。发送就可以在IDEA控制台看到hepingan:19,这是远古方式,下面时SpringBoot的方式:

@RequestMapping("simpleParam2")
public String simpleParam2(String name,Integer age){
System.out.println(name+":"+age);
return "OK";
}
实体参数

//实体参数

*@RequestMapping("Pojo") public String Pojo(User user){ System.*out*.println(user); return "Ok"; }

User类:

public class User

private String name;

private String age;

private Address address;

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public String getAge() { return age; }

public void setAge(String age) { this.age = age; }

public Address getAddress() { return address; }

public void setAddress(Address address) { this.address = address; }

@Override public String toString() { return "User{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", address=" + address + '}'; } }

Address类:

public class Address { private String province; private String city;

public String getProvince() { return province; }

public void setProvince(String province) { this.province = province; }

public String getCity() { return city; }

public void setCity(String city) { this.city = city; }

@Override public String toString() { return "Address{" + "province='" + province + '\'' + ", city='" + city + '\'' + '}'; } }

数组集合参数

就是用数组或集合的形式来存储嘛~

eg:http://localhost:8080/arrayParam?hobby=sing&hobby=dance&hobby=java;http://localhost:8080/listParam?hobby=sing&hobby=dance&hobby=java;

//数组参数
@RequestMapping("arrayParam")
public String arraylistParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "Ok";
}
//集合参数
@RequestMapping("listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "Ok";
}

日期参数和JSON参数

日期要按格式写(yyyy-MM-dd HH:mm:ss),不然postman会报400;json参数就是输入的数据需要按照对应的数据格式填写

//date日期参数
@RequestMapping("dataParam")
public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
System.out.println(updateTime);
return "Ok";
}
//json参数
@RequestMapping("jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "Ok";
}

路径参数

使用@PathVariable注解,方式如下,URL_eg:http://localhost:8080/path/10/hepingan

@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id,@PathVariable String name){
System.out.println(id+","+name);
return "OK";
}

—分层解藕

三层架构

前端请求–>Controller层接收请求,响应数据–>Service层逻辑处理–>Dao层数据访问。

添加IDC的注解:在类外面:@Component,在类里面: @Autowired,作用就是为了不重复修改对象啥的,暂时没啥大用后面再学…

IDC/DI入门

IOC(inversion of control),对象的创建控制权由程序自身移到外部(容器),这种思想成为控制反转;DI(dependency injection),容器为应用程序提供运行时,所依赖的资源,称为依赖注入;Bean对象:IOC容器中创建和管理的对象。

先在Service层和Dao层上输入@Component注解,表示将当前类交给IOC容器,成为IOC容器中的bean;为Controller和Service注入运行时依赖的对象,需要在对象上添加 @AutoWired注解;