diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..359bb5307e8535ab7d59faf27a7377033291821e
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..132404bc29da2535f7f7dde84180d85abc60d5a4
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/web-framework.iml b/.idea/web-framework.iml
new file mode 100644
index 0000000000000000000000000000000000000000..d6ebd4805981b8400db3e3291c74a743fef9a824
--- /dev/null
+++ b/.idea/web-framework.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..974e8e99e5494f655e292d293c9718fca9d1be1a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+
+ org.example
+ web-framework
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+ pom
+
+ hello_servlet
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/DisplayHeader.java b/src/main/java/DisplayHeader.java
new file mode 100644
index 0000000000000000000000000000000000000000..536cf8ee0e9f9391d4eb916ab0e4c5e2fb1860fe
--- /dev/null
+++ b/src/main/java/DisplayHeader.java
@@ -0,0 +1,52 @@
+//导入必需的 java 库
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@WebServlet("/DisplayHeader")
+
+//扩展 HttpServlet 类
+public class DisplayHeader extends HttpServlet {
+
+ // 处理 GET 方法请求的方法
+ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ // 设置响应内容类型为HTML文本,并使用UTF-8字符编码。
+ response.setContentType("text/html;charset=UTF-8");
+
+ PrintWriter out = response.getWriter();//获取PrintWriter对象,用于向客户端输出响应内容
+ String title = "HTTP Header 请求实例"; // 定义标题和文档类型
+ String docType =
+ " \n";
+ out.println(docType + // 输出HTML页面的头部部分,包括标题和背景颜色设置。
+ "\n" + // 创建一个表格,用于展示HTTP请求的头部信息。
+ "
" + title + "\n"+
+ "\n" +
+ "" + title + "
\n" +
+ "\n" +
+ "\n" +
+ "Header 名称 | Header 值 | \n"+
+ "
\n");
+
+ Enumeration headerNames = request.getHeaderNames();
+
+ while(headerNames.hasMoreElements()) { // 遍历请求头部的名称,并输出每个头部的名称和对应的值。
+ String paramName = (String)headerNames.nextElement();
+ out.print("" + paramName + " | \n");
+ String paramValue = request.getHeader(paramName);
+ out.println(" " + paramValue + " |
\n");
+ }
+ out.println("
\n");
+ }
+ // 处理 POST 方法请求的方法
+ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/HelloServlet.java b/src/main/java/HelloServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd067025d24ddab1e421cfcea759ff215fed0cb1
--- /dev/null
+++ b/src/main/java/HelloServlet.java
@@ -0,0 +1,50 @@
+import javax.print.DocFlavor;
+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("/hello") //路径
+public class HelloServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ /*常用方法*/
+ // 获取请求时的完整路径(从http开始,到“?”前面结束)
+ String url = request.getRequestURI() + "";
+ System.out.println("获取请求时的完整路径:" + url);
+ // 获取请求时的部分路径(从项目的站点名开始,到“?”结束)
+ String uri = request.getRequestURI();
+ System.out.println("获取请求时的部分路径:" + uri);
+ // 获取请求时的参数字符串(从“?”后面开始,到最后结束)
+ String queryString = request.getQueryString();
+ System.out.println("获取请求时的参数字符串:" + queryString);
+ // 获取请求方式(GET和POST)
+ String method = request.getMethod();
+ System.out.println("获取请求方式:" + method);
+ // 获取当前协议版本(HTTP/1.1)
+ String protocol = request.getProtocol();
+ System.out.println("获取当前协议版本:" + protocol);
+ // 获取项目的站点名(项目对外访问路径)
+ String webapp = request.getContextPath();
+ System.out.println("获取项目的站点名:" + webapp);
+
+
+ /* 获取请求的参数 */
+ // 获取指定名称的参数值,返回字符串
+ String uname = request.getParameter("uname");
+ String upwd = request.getParameter("upwd");
+ System.out.println("uname:" + uname +",upwd:" + upwd);
+ // 获取指定名称的参数的所有参数值,返回字符串数组
+ String[] hobbys = request.getParameterValues("hobby");
+ // 判断数组是否为空
+ if (hobbys != null && hobbys.length > 0){
+ for(String hobby : hobbys){
+ System.out.println("爱好:" + hobby);
+ }
+ }
+ }
+}
+
+
diff --git a/src/main/java/org/example/Servlet03.java b/src/main/java/org/example/Servlet03.java
new file mode 100644
index 0000000000000000000000000000000000000000..38a93293c55b24bafeeccbe8e2db17ce6183d2ab
--- /dev/null
+++ b/src/main/java/org/example/Servlet03.java
@@ -0,0 +1,31 @@
+package org.example;
+
+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;
+
+/**
+ * 请求转发跳转
+ * request.getRequestDispotcher(url).foward(request,response)
+ * 可以让服务器跳转到客户端
+ * 服务端行为
+ */
+@WebServlet("/s03") //路径
+public class Servlet03 extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ // 接收客户端请求的参数
+ String uname = request.getParameter("uname");
+ System.out.println("servlet03 name:" + uname);
+
+ // 请求转发跳转到servlet04
+ //request.getRequestDispatcher("s04").forward(request,response);
+
+ // 请求转发跳转到html页面
+ request.getRequestDispatcher("login.html").forward(request, response);
+ }
+}
+
diff --git a/src/main/java/org/example/Servlet04.java b/src/main/java/org/example/Servlet04.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d37ca5a63f36ef25e00dd7e7e8ea490844c071e
--- /dev/null
+++ b/src/main/java/org/example/Servlet04.java
@@ -0,0 +1,25 @@
+package org.example;
+
+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;
+
+/**
+ * 请求转发跳转
+ * request.getRequestDispotcher(url).foward(request,response)
+ * 可以让服务器跳转到客户端
+ * 服务端行为
+ */
+@WebServlet("/s04") //路径
+public class Servlet04 extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ // 接收客户端请求的参数
+ String uname = request.getParameter("uname");
+ System.out.println("servlet04 name:" + uname);
+ }
+}
+
diff --git a/src/main/java/org/example/Servlet05.java b/src/main/java/org/example/Servlet05.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0158931e00b2c3ae2fd0d0015bdf4feb3eaa971
--- /dev/null
+++ b/src/main/java/org/example/Servlet05.java
@@ -0,0 +1,30 @@
+package org.example;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.IOException;
+
+@WebServlet(name = "RequestForwardServlet", value = "/forward")
+public class Servlet05 extends HttpServlet {
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ // 设置响应体内容类型
+ response.setContentType("text/html; charset=utf-8");
+ // 设置请求对象属性
+ request.setAttribute("message","转发成功!");
+ // 获取请求派发器对象(参数是请求转发的Servlet的url)
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/result");
+ // 请求转发给url为‘/result’的Servlet
+ dispatcher.forward(request,response);
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doPost(request,response);
+ }
+}
+
+
diff --git a/src/main/java/org/example/Servlet06.java b/src/main/java/org/example/Servlet06.java
new file mode 100644
index 0000000000000000000000000000000000000000..c4333278feb896736480491d315fa463c386ba45
--- /dev/null
+++ b/src/main/java/org/example/Servlet06.java
@@ -0,0 +1,34 @@
+package org.example;
+
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+@WebServlet(name = "ResultServlet", value = "/result")
+public class Servlet06 extends HttpServlet {
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ // 设置响应体内容类型
+ response.setContentType("text/html; charset=utf-8");
+ // 获取字符输出流
+ PrintWriter out = response.getWriter();
+ // 获取请求转发保存在request对象里的数据
+ String message = (String) request.getAttribute("message");
+ // 输出获取的信息
+ if (message!= null){
+ out.println("转发来的消息:"+message);
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doPost(request,response);
+ }
+}
+
+
diff --git a/src/main/webapp/login.html b/src/main/webapp/login.html
new file mode 100644
index 0000000000000000000000000000000000000000..fcdcd919adfbfda1205c329b89b0b804288fa433
--- /dev/null
+++ b/src/main/webapp/login.html
@@ -0,0 +1,10 @@
+
+
+
+
+ Title
+
+
+ 你好
+
+
\ No newline at end of file
diff --git a/src/main/webapp/web-INF/web.xml b/src/main/webapp/web-INF/web.xml
new file mode 100644
index 0000000000000000000000000000000000000000..069fa4728fd596e7af3b65b70af7cddacb815d84
--- /dev/null
+++ b/src/main/webapp/web-INF/web.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ DisplayHeader
+
+ src.main.java.DisplayHeader
+
+
+ DisplayHeader
+
+ /hello_servlet/DisplayHeader
+
+
\ No newline at end of file
diff --git a/src/test/java/demo1.java b/src/test/java/demo1.java
new file mode 100644
index 0000000000000000000000000000000000000000..88330be37ddd3b03734c064ce11b4d6c1c38c222
--- /dev/null
+++ b/src/test/java/demo1.java
@@ -0,0 +1,2 @@
+public class demo1 {
+}
diff --git a/src/test/java/testA.java b/src/test/java/testA.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a34324a39abc1e811851fc09e488a0e2f7907d5
--- /dev/null
+++ b/src/test/java/testA.java
@@ -0,0 +1,34 @@
+//import org.example.Main;
+import org.example.Servlet03;
+import org.junit.Test;
+
+import org.junit.Assert;
+
+
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+
+
+public class testA {
+
+ @Test
+ public void testM() {
+// Main mm = new Main();
+// mm.doCal();
+ }
+
+}
+//public class CalculatorTest {
+// @Test
+// public void testAdd() {
+// Calculator calculator = new Calculator();
+// int result = calculator.add(3, 4);
+// Assert.assertEquals(7, result);
+// }
+//}
+