
创作日期:2021-12-25
JavaWeb 是指所有通过 Java 语言编写可以通过浏览器访问的程序的总称,基于请求和响应来开发的
请求(Request)是指客户端给服务器发送数据,响应(Response)是指服务器给客户端回传数据
请求和响应是成对出现的,有请求就有响应

6.2.1 Web 资源的分类
- web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种
- 静态资源:html,css,js,txt,视频,图片
- 动态资源:jsp 页面,Servlet 程序
- Apache 服务器:Apache 服务器是开源基金组织Apache提供的一种 Web 服务器,主要是解析 PHP 文件,是一款功能强大的免费软件,支持多个操作系统,如 Windows、Linux、MacOS 等
- Tomcat 服务器:Tomcat 服务器也是开源基金组织 Apache 提供的一种支持JSP组件的Web 服务器,它支持 Windows、Linux、Mac OS 等多个操作系统,安装简便,使用也较为方便
- 其他服务器:如 JBoss、Weblogic、WebSphere 等

将需要用的 Tomcat 版本对应的 zip 压缩包解压到需要安装 的目录
- bin 专门用来存放 Tomcat 服务器的可执行程序
- conf 专门用来存放 Tomact 服务器的配置文件
- lib 专门用来存放 Tomcat 服务器的 jar 包
- logs 专门用来存放 Tomcat 服务器运行时输出的日志信息
- temp 专门用来存放 Tomcat 运行时产生的临时数据
- webapps 专门用来存放部署的 web 工程
- work 是 Tomcat 工作时的目录,用来存放 Tomcat 运行时 jsp 翻译为 Servlet 的源码,和 Session 钝化的目录

找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件,双击就可启动 Tomact 服务器
测试是否启动成功:
- 打开网页,在地址栏中输入:http://localhost:8080
- 打开网页,在地址栏中输入:http:/127.0.0.1:8080
- 打开网页,在地址栏中输入: http:/真实ip:8080
能够跳转到以下页面证明 Tomact 服务器 启动成功
方式:
- 点击 tomcat 服务器窗口的关闭按钮
- 找到 Tomcat 目录下的 bin 目录下的 shutdown.bat 文件,双击关闭 Tomact 服务器
- 方法一:
- 把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下
- 在网址 http://localhost:8080 后输入需要访问的 web 工程网页的路径即可打开
- 如:http://localhost:8080/Book_store/index.html
- 方法二:
- 当在浏览器的地址栏中输入的访问地址没有工程名时,默认访问的是 ROOT 工程下的 index 页面,如:http://127.0.0.1:8080
- 当在浏览器的地址栏中输入的访问地址有工程名,没有资源名时,默认访问的是工程下的 index.html 页面,如:http://127.0.0.1:8080/Book_store/
在 IDEA 中点击 设置(Setting)进入此页面:
- 找到 Bulid,Execution,Deployment 选项下的 Application Servers
- 点击 + 号 找到 Tomcat Server 点击添加
- 进入 Tomcat 服务器地址设置,进行选择电脑所安装的 Tomcat 地址目录 点击确定



- 新建一个模块,设置一下内容后,点击下一步


- 输入项目模块名称,点击完成即可


目录介绍:
- src 目录:存放 java 源代码文件
- webapp 目录:存放 web 工程的资源文件,如 html 页面,css 文件,js 文件等等
- WEB - INF 目录:受服务器保护的目录,浏览器无法直接访问
- lib 目录:用来存放第三方的 jar 包
- web.xml 文件:整个 web 动态工程的配置文件,描述文件,可以配置很多 web 工程的组件
- Servlet 是 JavaEE 规范之一(接口之一)
- JavaWeb 三大组件之一,分别是:Servlet 程序,Filter 过滤器,Listener 监视器
- 运行在服务器上的一个 java 程序,可以接收客户端发过来的请求,并响应数据给客户端
- 编写一个类去实现 Servlet 接口
- 实现 service 方法,处理请求,并响应数据
- 在 web.xml 中去配置 servlet 程序的访问地址
- <%-- index.jsp --%>
- <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
- DOCTYPE html>
- <html>
- <head>
- <title>JSP - Hello Worldtitle>
- head>
- <body>
- <h1><%= "Hello World!" %>h1>
- body>
- html>
- /* HelloServlet.java */
- package com.example.Tomcat_web;
-
- import javax.servlet.*;
- import javax.servlet.annotation.WebServlet;
- import java.io.IOException;
-
- @WebServlet(name = "helloServlet", value = "/hello-servlet")
- public class HelloServlet implements Servlet {
-
- @Override
- public void init(ServletConfig servletConfig) throws ServletException {
-
- }
-
- @Override
- public ServletConfig getServletConfig() {
- return null;
- }
- /*
- * service 方法专门用来处理请求和响应
- * */
- @Override
- public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
- System.out.println("HelloServlet 被访问了!");
- }
-
- @Override
- public String getServletInfo() {
- return null;
- }
-
- @Override
- public void destroy() {
-
- }
- }
- <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">
-
- <servlet>
-
- <servlet-name>HelloServletservlet-name>
-
- <servlet-class>com.example.Tomcat_web.HelloServletservlet-class>
- servlet>
-
-
- <servlet-mapping>
-
- <servlet-name>HelloServletservlet-name>
-
- <url-pattern>/hellourl-pattern>
- servlet-mapping>
-
- web-app>
- 执行 Servlet 构造器方法:在创建 Servlet 程序时会调用
- 执行 init 初始化方法:在创建 Servlet 程序时会调用
- 执行 service 方法:每次访问都会调用
- 执行 destroy 销毁方法:在工程项目停止时会调用
- /* HelloServlet.java */
- package com.example.Tomcat_web;
-
- import javax.servlet.*;
- import javax.servlet.annotation.WebServlet;
- import java.io.IOException;
-
- @WebServlet(name = "helloServlet", value = "/hello-servlet")
- public class HelloServlet implements Servlet {
-
- public HelloServlet() {
- System.out.println("01-执行 Servlet 构造器方法");
- }
-
- @Override
- public void init(ServletConfig servletConfig) throws ServletException {
- System.out.println("02-执行 init 初始化方法");
- }
-
- @Override
- public ServletConfig getServletConfig() {
- return null;
- }
- /*
- * service 方法专门用来处理请求和响应
- * */
- @Override
- public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
- System.out.println("HelloServlet 被访问了!");
- }
-
- @Override
- public String getServletInfo() {
- return null;
- }
-
- @Override
- public void destroy() {
- System.out.println("03-执行 destroy 销毁方法");
- }
- }
模拟一个页面,嵌套两种请求方式
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>HelloServlettitle>
- head>
- <body>
- <form action="http://localhost:8080/Tomcat_web_war_exploded/hello" method="get">
- <input type="submit" >
- form>
- <form action="http://localhost:8080/Tomcat_web_war_exploded/hello" method="post">
- <input type="submit">
- form>
- body>
- html>
在 service() 方法中使用 getMthod() 方法获取请求方式,然后进行不同请求方式进行分发处理 ,编写 doGet() 方法与 doPost() 方法来执行两种不同请求方式的响应结果
- /*
- * service 方法专门用来处理请求和响应
- * */
- @Override
- public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
- System.out.println("HelloServlet 被访问了!");
- //类型转换 获取 getMethod() 方法
- HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
- //获取请求的方式
- String method = httpServletRequest.getMethod();
-
- //Get 与 Post 请求的分发处理
- if ("GET".equals(method)) {
- doGet();
- } else if ("POST".equals(method)) {
- doPost();
- }
- }
-
- /*
- * 做 get 请求的操作
- * */
- public void doGet() {
- System.out.println("HelloServlet-get 被访问了!");
- }
-
- /*
- * 做 post 请求的操作
- * */
- public void doPost() {
- System.out.println("HelloServlet-post 被访问了!");
- }
-
- }
一般在实际开发项目中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序
- 编写一个类去继承 HttpServlet 类
- 根据业务需要重写 doGet() 或 doPost() 方法
- 在 web.xml 中配置 Servlet 程序的访问地址
- /* HelloServlet.java */
- package com.example.Tomcat_web;
-
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- @WebServlet(name = "helloServlet", value = "/hello-servlet")
- public class HelloServlet extends HttpServlet {
-
- //doGet() 方法在 get 请求时调用
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("HttpServlet 的 doGet() 方法");
- }
-
- //doPost() 方法在 post 请求时调用
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("HttpServlet 的 doPost() 方法");
- }
- }
java 包 ——> 新建(new)——> Servlet 程序

设置名称与所在类

Servlet 程序的配置信息类
- 可以获取 Servlet 程序的别名 servlet-name 的值
- 获取初始化参数 init-param
- 获取 ServletContext 对象
- <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">
-
- <servlet>
-
- <servlet-name>HelloServletservlet-name>
-
- <servlet-class>com.example.Tomcat_web.HelloServletservlet-class>
-
- <init-param>
-
- <param-name>usernameparam-name>
-
- <param-value>xfdqparam-value>
- init-param>
- servlet>
-
-
- <servlet-mapping>
-
- <servlet-name>HelloServletservlet-name>
-
- <url-pattern>/hellourl-pattern>
- servlet-mapping>
- web-app>
- package com.example.Tomcat_web;
-
- import javax.servlet.*;
- import javax.servlet.http.*;
- import javax.servlet.annotation.*;
- import java.io.IOException;
-
- @WebServlet(name = "HelloServlet", value = "/HelloServlet")
- public class HelloServlet extends HttpServlet {
-
- // init 初始化方法
- @Override
- public void init(ServletConfig config) throws ServletException {
- // 1.可以获取 Servlet 程序的别名 servlet-name 的值
- System.out.println("HelloServlet程序的别名是:"+config.getServletName());
- // 2.获取初始化参数 init-param
- System.out.println("程序使用者是:"+config.getInitParameter("username"));
- // 3.获取 ServletContext 对象
- ServletContext servletContext = config.getServletContext();
- System.out.println(servletContext);
- }
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- System.out.println("get 请求");
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- System.out.println("post 请求");
- }
- }
上一节:
下一节: