Web应用开发 - 实训三 B Servlet基础

Web应用开发 - 实训三 B Servlet基础

前言:

eclipse 是不可能用的,并不是说它界面丑,也不是说它难用,而是它实在不适合我,idea 还能用一用,界面还挺符合我审美的,一些操作也比较合适。

注意:本篇文章使用的是工具是 IDEA,搭配 tomcat 10.1 使用

零、前期准备

准备工具

下载地址:https://tomcat.apache.org/download-10.cgi

创建项目

直接新建项目,选择 Jakara EE,模板为"Web 应用程序",接下来就直接下一步,创建。

导入 jar 包

  1. 找到 tomcat 的安装目录
    (默认是:C:\Program Files\Apache Software Foundation\Tomcat 10.1)
  2. 回到 idea 中点击左上角的"文件" -> "项目结构"
  3. 点击左侧的 "库" -> 点击 "+" -> 选择 java
  4. 在弹出来的窗口中找到刚刚找到的 tomcat 安装目录,并找到 lib 文件夹下的 "servlet-api.jar ",然后确认就好了

配置运行设置

  1. 点击上方的"当前文件",选择 "编辑配置"
  2. 点击左上角的 "+",找到 "Tomcat 服务器"本地
  3. 点击 "部署",选择 "工件",并点击 "Servlet_war_exploded"

  4. 将下面的 "/Servlet_war_exploded" 改为 "/chapter03"

    基本工作就到此结束,开始进入正题!!!

一、实训第一部分

第一张图

在图中目录创建 "HelloWorldServlet.java" ,代码如下:

java 复制代码
package com.example.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;

import java.io.*;

@WebServlet(name = "HelloWorldServlet", value = "/cn/itcast/firstapp/servlet/HelloWorldServlet")
public class HelloWorldServlet extends GenericServlet {
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        // 得到输出流 PrinterWriter 对象,Servlet 使用输出流来产生响应
        PrintWriter out = response.getWriter();
        // 使用输出流对象向客户端发送字符数据
        out.println("Hello World");
    }
}

点击右上角的三角形就可以运行项目了

在浏览器中打开 http://localhost:8080/chapter03/cn/itcast/firstapp/servlet/HelloWorldServlet

效果图如下所示

第二张图

将 "HelloWorldServlet.java" 中的代码修改成下面:

java 复制代码
package com.example.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;

@WebServlet(name = "HelloWorldServlet", value = "/HelloWorldServlet")
public class HelloWorldServlet extends GenericServlet {
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init methed 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");
    }
}

重新运行程序

在浏览器中打开 http://localhost:8080/chapter03/HelloWorldServlet

可以看到终端,这边是我们需要的截图(只需要截终端的那部分)

第三张图

分别在图中的两个路径中创建 "RequestMethodServlet.java" 和 "form.html"

RequestMethodServlet.java 文件中的代码如下:

java 复制代码
package com.example.servlet;

import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.*;

@WebServlet(name = "RequestMethodServlet", value = "/RequestMethodServlet")
public class RequestMethodServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws IOException {
        PrintWriter out = response.getWriter();
        out.write("this is doGet method");
    }

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response) throws IOException {
        PrintWriter out = response.getWriter();
        out.write("this is doPost method");
    }
}

form.html 文件中的代码如下:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/chapter03/RequestMethodServlet" method="post">
    姓名<input type="text" name="name"/><br/>
    密码<input type="text" name="psw"/><br/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

在浏览器中打开 http://localhost:8080/chapter03/form.html 截图,点击"提交"后截图

二、实训第二部分

第一张图

在如图文件夹中创建 "TestServlet02.java"


TestServlet02.java 文件代码如下

java 复制代码
package com.example.servlet;


import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebInitParam;
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 = "TestServlet02", value = "/TestServlet02",
        initParams = {@WebInitParam(name = "encoding", value = "UTF-8")})
public class TestServlet02 extends HttpServlet {
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        // 获得 ServletConfig 对象
        ServletConfig config = this.getServletConfig();
        // 获得参数名为 encoding 对应的参数值
        String param = config.getInitParameter("encoding");
        out.println("encoding=" + param);
    }

    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

在浏览器中打开 http://localhost:8080/chapter03/TestServlet02 并截图

第二张图

在如图路径中新建文件 "TestServlet03.java"

TestServlet03.java 文件代码如下:

java 复制代码
package com.example.servlet;

import jakarta.servlet.ServletContext;
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;
import java.util.Enumeration;

@WebServlet("/TestServlet03")
public class TestServlet03 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter();
        // 得到 ServletContext 对象
        ServletContext context = this.getServletContext();
        // 得到包含所有初始化参数名的Enumeration 对象
        Enumeration<String> paramNames = context.getInitParameterNames();
        out.println("all the paramName and paramValue are following: ");
        // 遍历所有的初始化参数名,得到相应的参数值并打印
        while (paramNames.hasMoreElements()) {
            String name = paramNames.nextElement();
            String value = context.getInitParameter(name);
            out.println(name + ": " + value);
            out.println("<br />");
        }
    }

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

在如图文件 "web.xml" 中添加如图部分代码

java 复制代码
    <context-param>
        <param-name>companyName</param-name>
        <param-value>itcast</param-value>
    </context-param>
    <context-param>
        <param-name>address</param-name>
        <param-value>beijing</param-value>
    </context-param>

在浏览器中打开 http://localhost:8080/chapter03/TestServlet03 并截图

恭喜, 实训三到此结束!!!

相关推荐
崔庆才丨静觅4 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60614 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅6 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊6 小时前
jwt介绍
前端
爱敲代码的小鱼6 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax