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" + + "\n"+ + "\n"); + + Enumeration headerNames = request.getHeaderNames(); + + while(headerNames.hasMoreElements()) { // 遍历请求头部的名称,并输出每个头部的名称和对应的值。 + String paramName = (String)headerNames.nextElement(); + out.print("\n"); + String paramValue = request.getHeader(paramName); + out.println("\n"); + } + out.println("
Header 名称Header 值
" + paramName + " " + paramValue + "
\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); +// } +//} +