基本概念:
首先web就是网页的意思,
静态web:html,css
技术栈:Servlet/JSP ASP PHP 在java中,动态web资源开发的技术统称为javaweb
JavaWeb应用程序
web应用程序:可以提供浏览器的程序
这个统一的web资源会被放在同一个文件夹下,web应用程序–>tomcat:服务器

客户端与服务器之间的服务原理:

静态web存在缺点,页面无法动态更新,所有用户看到的都是同一个页面
能够让页面动起来的技术:JavaScript

动态web服务器:
ASP:微软的,国内最早流行的
PHP:php开发速度很快,功能强大,跨平台,代码简单
无法承载大访问量的情况
JSP/SERVLET:
B/S架构:浏览器和服务器
C/S架构:客户端和服务器
sun公司主推B/S架构
服务器就是用来处理用户的一些请求和响应
什么是HTTP:
HTTP(超文本传输协议):是一个简单的请求响应协议 它通常运行在TCP上,
文本:html 字符串
超文本:图片,音乐,视频,定位,地图
默认端口80 ,https默认端口443 (安全的)
http两个时代:
http1.0:
HTTP/1.0
http/1.0客户端可以与web服务器连接后,只能获得一个web资源,断开连接
http2.0:
http/1.1:客户端可以与web服务器连接后,可以获得多个web资源
请求头:

响应体:

响应状态码:
MAVEN项目架构管理工具
Servlet:

把实现了Servlet接口的程序叫做Servlet



Servlet接口有几个方法:

同时它也提供了一些常量::

编写一个Servlet程序:

编写Servlet映射:


创建一个maven项目:
首相选择创建项目,选择maven模块

然后命名:比如我们就叫Test001

初始项目我们选择quick-start
这样我们就就创建好了一个初始的maven项目

我们可以删除ser目录,因为初始maven项目Test001以后一般做父工程
我们在父工程引入的引来子工程都可以用,子工程不必再次引入
我们在父工程引入jsp和servlet依赖:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
接下来我们创建子工程Test002
选择创建新的moudle

Archertype我们选择pache.maven.archetypes:maven-archetype-webapp
创建java目录:

创建包com.it.servlet
创建类HelloServlet,继承HttpServlet
重写get和post请求:

编写简单的内容:

更新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"
metadata-complete="true">
</web-app>
引入注册Servlet和编写请求路径:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.it.servlet.HellowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
配置tomcat

D:\VScode\cqwaimai\apache-tomcat-8.5.50\apache-tomcat-8.5.50

war包路径一定填好:

请求路径:

Servlec与tomcat的关系图:

在web.xml中可以写select和select的Mapping问题:




getServletContext:

getServletContext可以在Servlet之间共享数据:

package com.it.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HellowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("你好");
String username="付勇闯";
ServletContext servletContext = this.getServletContext();
servletContext.setAttribute("username",username);//将一个数据保存到servletContext,名字为username,
//值为 username 也就是 “付永闯”
PrintWriter writer = resp.getWriter();//响应流
writer.print("Hello Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
package com.it.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String username = (String) servletContext.getAttribute("username");
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
System.out.println("输出了姓名"+username);
resp.getWriter().print("姓名"+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
那么我们在第一个Servlet中设置的username的值就可以在第二个Servlet中拿到,前提必须先访问第一个Servlet,这样才能把username的值设置为我们想要的值,否责我们在第二个Servlet中拿到的值就位null;
dispatcher:转发
deprecated:已过时的
获取初始化参数:
一:在xml文件中定义初始化参数


第二步:
获取初始化参数:

请求转发:
通俗的讲就是,请求路径A的请求转发给请求路径B了
在xml正常配置

然后在在转发类中调用getRequestDispatcher接口

即可实现转发
读取资源文件:
Properties

创建一个Propertirs文件:

创建一个文件流来读取文件:

读取成功:

Servlet里面有连个参数HttpServletResponse,HttpServletRequest
对于Response:负责向浏览器发送数据的方法:

getOutputstream()用来发送流的方法,比如文件,图片,或者音频
getwriter()一般用来传输文字类的
常见应用:
