基于IDEA2023.3.5版Tomcat11.0.0版
一、请按照以下要求创建Servlet01类。
要求如下:
(1)在Web项目中定义一个HelloWorldServlet类,其中定义了 init()、destroy()方法。
(2)在service()、init()、destroy()三个方法中分别添加输出语句。
(3)使用@WebServlet注解配置Servlet02的映射信息,并在tomcat服务器中部署该Web项目。
(4)启动Tomcat服务器,使用浏览器访问Servlet01映射的url地址,观察控制台输出内容。
(5)确保中文文本正常显示。
HelloWorldServlet类
package org.example.demo2;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.*;import jakarta.servlet.http.HttpServlet;@WebServlet(name = "HelloWorldServlet",urlPatterns = "/HelloWorldServlet")public class HelloWorldServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { System.out.println("init method is called"); } public void service(ServletRequest request, ServletResponse response)throws ServletException{ System.out.println("Hello World"); } public void destroy(){ System.out.println("destroy method is called"); }}
Servlet01类
package org.example.demo2;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;@WebServlet(name = "Servlet01", urlPatterns = "/Servlet01")public class Servlet01 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { PrintWriter out =response.getWriter(); out.print("Hello Servlet"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ PrintWriter out =response.getWriter(); response.setContentType("text/html;charset=utf-8"); out.print("Hello Servlet<br/>"); out.print("中文"); }}
运行结果:
二、请按照以下要求设计一个Servlet02类。
要求如下:
(1)在Web项目中创建Servlet02类,继承HttpServlet类,重写其doGet()和doPost()方法,并在这两个方法中分别编写输出不同内容的代码。
(2)在项目的web目录下创建一个登陆页面login.html,采用post方式提交给Servlet02处理。
(3)使用@WebServlet注解配置Servlet02的映射信息。
(4)部署项目并启动Tomcat服务器,使用浏览器采用Get方式访问Servlet02映射的url地址,观察页面显示内容。
(5)重新使用浏览器成功访问login.html页面后,提交表单,再次观察页面显示内容。
(6)确保中文文本正常显示。
Servlet02类
package org.example.demo2;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(name = "Servlet02",urlPatterns = "/Servlet02")public class Servlet02 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ String name = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("用户名:" + name); System.out.println("密 码:" + password); //获取参数名为“hobby”的值 String[] hobby = request.getParameterValues("hobby"); System.out.print("爱好:"); for (int i = 0; i < hobby.length; i++) { System.out.print(hobby[i] + ","); } } public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ doGet(request,response); }}
运行结果:
三、请按照以下要求设计一个向页面输出中文的类ChineseServlet。要求如下:
(1)创建一个ChineseServlet类,使其继承HttpServlet类并重写该类的doGet()方法。
(2)在doGet()方法中,使用HttpServletResponse对象的setContentType()方法将浏览器编码改为utf-8。
(3)使用HttpServletResponse对象获取输出流,向浏览器输出“JavaWeb程序设计任务教程”的中文字样。
ChineseServlet类
package org.example.demo2;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;@WebServlet(name = "ChineseServlet", urlPatterns = "/ChineseServlet")public class ChineseServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html;charset=utf-8"); String data = "JavaWeb程序设计任务教程"; PrintWriter out = response.getWriter(); out.println(data); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ doGet(request,response); }}
运行结果:
四、编写一个Servlet,实现统计网站被访问次数的功能。
要求如下
(1)新建一个类ShowTimesServlet继承HttpServlet,重写doGet和doPost方法。
(2)在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次servlet,使访问次数times加1。
(3)获取ServletContext,通过它的功能记住上一次访问后的次数。
ShowTimesServlet类
package org.example.demo2;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.ServletContext;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(name = "ShowTimesServlet", urlPatterns = "/ShowTimesServlet")public class ShowTimesServlet extends HttpServlet {// private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取 ServletContext ServletContext context = getServletContext(); // 获取当前的访问次数 Integer times = (Integer) context.getAttribute("visitTimes"); if (times == null) { times = 0; // 如果是第一次访问,则初始化次数为0 } // 访问次数加1 times++; // 将更新后的访问次数保存到 ServletContext 中 context.setAttribute("visitTimes", times); // 输出访问次数到页面 response.setContentType("text/html"); response.getWriter().println("<h1>网站被访问次数:" + times + "</h1>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 在 doPost 方法中调用 doGet 方法 doGet(request, response); }}
运行结果: