随堂笔记
随堂笔记
1.vue脚手架综合案例(重点阅读前端代码)
1.环境搭建
【1】后端环境
1.执行sql语句
CREATE DATABASE dbvue2;
USE dbvue2;
-- 创建学生表
CREATE TABLE student(
number VARCHAR(10) UNIQUE, -- 学号
NAME VARCHAR(10), -- 姓名
birthday DATE, -- 生日
address VARCHAR(200) -- 地址
);
INSERT INTO student VALUES ('hm001','张三','1995-05-05','北京市昌平区');
INSERT INTO student VALUES ('hm002','李四','1996-06-06','北京市海淀区');
INSERT INTO student VALUES ('hm003','王五','1997-07-07','北京市朝阳区');
INSERT INTO student VALUES ('hm004','赵六','1998-08-08','北京市丰台区');
INSERT INTO student VALUES ('hm005','周七','1999-09-09','北京市顺义区');
INSERT INTO student VALUES ('hm006','孙悟空','2000-01-01','花果山水帘洞');
INSERT INTO student VALUES ('hm007','猪八戒','2001-02-02','高老庄翠兰家');
INSERT INTO student VALUES ('hm008','沙和尚','2002-03-03','流沙河河底');
INSERT INTO student VALUES ('hm009','唐玄奘','2003-04-04','东土大唐');
2.修改连接数据库的参数
修改之后保存
3.启动后端项目
【2】前端环境
将上述前端项目放到vscode的工作空间即可然后解压
1.安装依赖 cnpm i
2.启动项目 npm run dev
2.今日目标
1.安装后端服务器软件tomcat
2.创建web项目
3.能够通过浏览器访问后端服务器资源(动态资源)
3.tomcat
1.tomcat目录结构
2.启动和关闭以及访问tomcat
1.启动
2.访问
在浏览器地址栏上输入如下:
3.关闭tomcat
3.解决启动tomcat失败的问题
【1】端口号冲突
打开任务管理器
【2】jdk环境变量
检查java_home是否有问题
【3】删除环境变量中TOMCAT_HOME
4.使用tomcat发布web项目(课下完成)
【1】在tomcat的安装目录webapps下发布web资源
1.在webapps下创建一个文件夹作为项目名
2.在该文件夹下创建一个静态资源html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
itcast
</body>
</html>
3.到bin目录启动tomcat ===>双击startup.bat文件
4.在浏览器中访问
【2】在idea中创建web项目(课下多创建几次)
3.删除一些内容
pom.xml留下的内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima.sh.heima153</groupId>
<artifactId>day15_web02</artifactId>
<version>1.0-SNAPSHOT</version>
<name>day15_web02</name>
<!--TODO:web工程的打包方式。普通java工程打包方式是jar,也是默认的。不能删除-->
<packaging>war</packaging>
<properties>
<!--TODO:jdk编译版本-->
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
<!--TODO:不要删除-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
</plugins>
</build>
</project>
【3】使用在idea中创建的web项目发布资源
5.Servlet概述(掌握)
之前我们都是使用浏览器访问的是静态资源即html.web资源除了静态资源还有动态资源,即数据可以实现变化,并且前端浏览器通过动态资源可以实现数据的交互。那么如果想实现客户端访问服务器的动态资源,需要我们在后端中定义类直接或者间接实现Servlet接口。
Servlet作用:
1,接收客户端的请求
2.处理业务逻辑
3.将响应数据给浏览器
6.Servlet入门案例(完成)
1.导入依赖
<!--TODO:不要删除-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
2.代码实现
package com.itheima.sh.a_servlet_01;
import javax.servlet.*;
import java.io.IOException;
//3.在创建的web项目中自定义类实现Servlet接口
public class HelloWorldServlet implements Servlet {
//4.在自定义类中实现Servlet接口中的所有的抽象方法 ctrl+i
@Override
public void init(ServletConfig config) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//5.在实现Servlet接口的service方法体中书写代码处理业务逻辑
System.out.println("servlet入门案例");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--6.配置访问的servlet路径-->
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.itheima.sh.a_servlet_01.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--<welcome-file-list>-->
<!-- <welcome-file>demo02.html</welcome-file>-->
<!--</welcome-file-list>-->
</web-app>
7.Servlet生命周期(掌握)
package com.itheima.sh.b_servlet_02;
import javax.servlet.*;
import java.io.IOException;
/*
TODO:Servlet的生命周期
1.谁创建Servlet对象 ?
tocmat使用反射技术创建对象
2.何时创建Servlet对象 ?
第一次访问Servlet类的时候创建Servlet对象,调用无参构造方法创建对象,使用对象立刻调用init方法进行初始化,init
方法只会执行一次。然后调用service方法处理业务逻辑。
3.创建对象之后每次再次访问Servlet类的时候只会执行service方法
4.关闭tomcat服务器的时候,关闭之前使用Servlet类的对调用destroy方法销毁资源
*/
public class LifeDemo01Servlet implements Servlet {
public LifeDemo01Servlet() {
System.out.println("无参构造方法执行了");
}
//初始化方法
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init.....");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service.....");
}
@Override
public String getServletInfo() {
return null;
}
//销毁方法
@Override
public void destroy() {
System.out.println("destroy.....");
}
}
<!--配置Servlet-->
<servlet>
<servlet-name>LifeDemo01Servlet</servlet-name>
<servlet-class>com.itheima.sh.b_servlet_02.LifeDemo01Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LifeDemo01Servlet</servlet-name>
<url-pattern>/life01</url-pattern>
</servlet-mapping>
8.服务器启动,立刻加载Servlet对象 (理解)
web.xml
<!--配置Servlet-->
<servlet>
<servlet-name>LifeDemo01Servlet</servlet-name>
<servlet-class>com.itheima.sh.b_servlet_02.LifeDemo01Servlet</servlet-class>
<!-- 服务器启动创建Servlet类的对象,默认值是-1表示第一次访问创建对象,如果文本值大于等于0,表示tomcat启动创建对象
如果多个servlet都配置了该标签,那么文本值越小创建Servlet的优先级越高
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LifeDemo01Servlet</servlet-name>
<url-pattern>/life01</url-pattern>
</servlet-mapping>
9.实现Servlet方式(三种)
1.自定义类实现Servlet接口
2.自定义类继承抽象类GenericServlet
package com.itheima.sh.b_servlet_02;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class Demo02Servlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("实现servlet方式二:自定义类继承抽象类GenericServlet");
}
}
<servlet>
<servlet-name>Demo02Servlet</servlet-name>
<servlet-class>com.itheima.sh.b_servlet_02.Demo02Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo02Servlet</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
3.自定义类继承抽象类HttpServlet 重点
package com.itheima.sh.b_servlet_02;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Demo03Servlet extends HttpServlet {
//GET请求执行的方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet实现方式三:自定义类继承抽象类HttpServlet。。。get");
}
//POST请求执行的方法
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet实现方式三:自定义类继承抽象类HttpServlet。。。post");
}
}
<servlet>
<servlet-name>Demo03Servlet</servlet-name>
<servlet-class>com.itheima.sh.b_servlet_02.Demo03Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo03Servlet</servlet-name>
<url-pattern>/demo03</url-pattern>
</servlet-mapping>
10.实现Servlet方式三_自定义类继承HttpServlet类的原理
11.编写servlet常见问题(掌握,尝试自己解决)
1.服务器异常 500错误
解决方案:查看服务器代码。
2.404 not found 找不到服务器资源
原因:就是你的操作问题。
是你访问的资源在服务器中不存在。
解决:
1.修改访问地址
2.在服务器创建资源
3.405
原因:调用类父类HttpServlet中doGet doPost方法
4.启动服务器报错
注意:只要启动服务器报错基本都是你的路径有问题。
路径没有书写 /
<url-pattern>demo04</url-pattern>
12.Servlet基本的映射路径 掌握
package com.itheima.sh.c_servlet_03;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class PathDemo01Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("PathDemo01Servlet......");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
13.Servlet映射路径配置规范
1.完全路径匹配
就是在标签文本中配置什么,那么浏览器地址栏就访问什么:
2.目录匹配:
/xx/*
在浏览器地址栏上输入的路径只要以xx开始都会访问对应的Servlet
<servlet>
<servlet-name>PathDemo02Servlet</servlet-name>
<servlet-class>com.itheima.sh.c_servlet_03.PathDemo02Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PathDemo02Servlet</servlet-name>
<!--浏览器地址栏访问的路径以user开始就会访问PathDemo02Servlet类-->
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
3.后缀名匹配
*.xx
那么在浏览器地址栏上只要以xx结尾的路径都会访问对应的额Servlet类
注意:不能加/
<servlet>
<servlet-name>PathDemo03Servlet</servlet-name>
<servlet-class>com.itheima.sh.c_servlet_03.PathDemo03Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PathDemo03Servlet</servlet-name>
<!--浏览器地址栏访问的路径以liuyan结尾就会访问PathDemo03Servlet类-->
<url-pattern>*.liuyan</url-pattern>
</servlet-mapping>
4.缺省路径(了解,不要配)
/
说明:如果上述三种路径都没有被访问就会执行缺省路径。
<servlet>
<servlet-name>PathDemo04Servlet</servlet-name>
<servlet-class>com.itheima.sh.c_servlet_03.PathDemo04Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PathDemo04Servlet</servlet-name>
<!--浏览器地址栏访问的路径不满足前三种那么就会访问缺省路径-->
<url-pattern>/</url-pattern>
</servlet-mapping>
小结:
上述四种servlet路径是有优先级的:
优先级从高到低:
完全路径匹配 > 目录匹配 > 后缀名匹配 > 缺省匹配
今日总结和作业
能够说出Tomcat的作用
发布静态(html css js)和动态资源(Servlet)
能够在Tomcat中部署web项目
1)在webapps下面部署
2)在idea中部署
能够使用IDEA创建Maven Web项目
能够说出什么是Servlet
服务器端的小程序。属于接口。只要浏览器访问服务器中动态资源,那么必须类直接或者间接实现Servlet接口
作用:
1.接收请求
2.处理业务逻辑
3.响应数据给浏览器
能够说出Servlet生命周期方法
第一次访问Servlet类tomcat创建对象,调用init初始化方法,init只会执行一次。每次访问Servlet都会执行service方法。关闭tomcat,使用对象调用销毁方法destroy
能够使用继承HttpServlet的方式编写Servlet
public class 类名 extends HttpServlet{
重写doGet doPost方法
}
能够使用XML配置Servlet
<servlet>
<servlet-name>别名</servlet-name>
<servlet-class>Servlet类的全路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>别名</servlet-name>
<url-pattern>路径</url-pattern>
</servlet-mapping>