Java-servlet(五)手把手教你利用Servlet配置HTML请求与相应

Java-servlet(五)手把手教你利用Servlet配置HTML请求与相应

Java-servlet(五)手把手教你利用Servlet配置HTML请求与相应


前言

  • Servlet 配置是实现 Web 交互的关键桥梁,通过配置可将客户端请求精准映射到 Java 代码处理逻辑。
  • 在前一篇环境搭建的基础上,我们将进一步探索如何通过 Servlet 处理HTML 表单请求与动态响应生成。
  • 本文将通过代码示例演示如何配置 GET/POST 请求的处理逻辑,并解决常见的中文乱码与路径配置问题。
我的Java-servlet文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12907265.html?spm=1001.2014.3001.5482

一.加载新的模板

  • 在上一节中,我们配置好了Java-servlet的运行环境,然后得到以下结果
  • 环境配置博客地址
https://blog.ZEEKLOG.net/2402_83322742/article/details/145998804
在这里插入图片描述
  • 没看过配置环境的强烈建议看一下如何配置Java-servlet环境
  • 在类里面输入以下代码

然后创建新的包名com.niit和新的类LoginServlet,变成了以下这样

在这里插入图片描述

接着删除新创建的文件里java底下的所有包

在这里插入图片描述

之后我们单击SE3文件重新加载一个模板

在这里插入图片描述


在这里插入图片描述
packagecom.niit;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;publicclassLoginServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{//解决乱码 resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8");//获取请求参数String username = req.getParameter("username");String password = req.getParameter("password");//返回到页面显示 resp.getWriter().write("欢迎"+username+"你的密码是:"+password);}@OverrideprotectedvoiddoPost(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{doGet(req, resp);}}

二、LoginServlet 代码解释

下面我们来解释一下上面的代码

doGet方法

@OverrideprotectedvoiddoGet(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{//解决乱码 resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8");//获取请求参数String username = req.getParameter("username");String password = req.getParameter("password");//返回到页面显示 resp.getWriter().write("欢迎"+username+"你的密码是:"+password);}
  • @Override:表示该方法是重写父类HttpServlet中的doGet方法,用于处理HTTP的GET请求。
  • resp.setContentType("text/html");:设置响应的内容类型为HTML,告诉客户端服务器返回的是HTML格式的数据。
  • resp.setCharacterEncoding("UTF-8");:设置响应的字符编码为UTF-8,避免中文等字符出现乱码。
  • req.getParameter("username");req.getParameter("password");:从HTTP请求中获取名为usernamepassword的参数值,并将其存储在对应的字符串变量中。
  • resp.getWriter().write("欢迎"+username+"你的密码是:"+password);:通过响应的输出流将欢迎信息和用户输入的用户名、密码发送给客户端。

doPost方法

@OverrideprotectedvoiddoPost(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{doGet(req, resp);}
  • @Override:表示该方法是重写父类HttpServlet中的doPost方法,用于处理HTTP的POST请求。
  • doGet(req, resp);:调用doGet方法来处理POST请求,这意味着无论客户端发送的是GET请求还是POST请求,最终都会由doGet方法来处理。

三、Web 项目配置

  • 单击应用点击然后确定

在回到这个界面,找到工件按钮,找到添加

在这里插入图片描述


找到Web应用程序,点击原模块

配置好代码后,在ch4下找到打开模板设置

在这里插入图片描述


点击ch4文件找到上面的+号。然后找到web项目,单击添加

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

找到ch4文件,点击确定

在这里插入图片描述


然后单击ch4的WEB文件,单击页面上的文件夹按钮,创建一个lib文件

在这里插入图片描述


单击lib文件,点击上面的+号,找到库文件,ctrl+a全选,然后点击确定

在这里插入图片描述
在这里插入图片描述

之后在ch4下的web.xml里面添加以下代码

在这里插入图片描述

然后点击应用,点击确定,这样就配置好Web文件

在这里插入图片描述
<servlet><servlet-name>login</servlet-name><servlet-class>com.niit.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>

四、web.xml 代码解析

下面来解析一下上面的代码
这段代码是在 web.xml 配置文件中对 Servlet 进行配置的内容,web.xml 是 Java Web 应用中用于部署描述的核心文件,

<servlet> 标签

<servlet><servlet-name>login</servlet-name><servlet-class>com.niit.LoginServlet</servlet-class></servlet>
  • <servlet> 标签:这是一个容器标签,用于定义一个 Servlet 组件。每个 <servlet> 标签对应一个具体的 Servlet 类。
  • <servlet-name> 标签
    • 该标签用于为 Servlet 定义一个唯一的名称,这个名称在整个 web.xml 文件中必须是唯一的。在这个例子中,Servlet 的名称被定义为 login
    • 这个名称主要用于在 web.xml 文件的其他部分引用该 Servlet,比如在 <servlet-mapping> 标签中。
  • <servlet-class> 标签
    • 该标签指定了 Servlet 类的完整类名,包括包名。在这个例子中,Servlet 类是 com.niit.LoginServlet
    • 当服务器启动时,会根据这个类名去加载对应的 Servlet 类。

<servlet-mapping> 标签

<servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>
  • <servlet-mapping> 标签:这是一个容器标签,用于将一个 Servlet 映射到一个或多个 URL 模式。通过这个映射,当客户端发送请求到指定的 URL 时,服务器会知道应该由哪个 Servlet 来处理该请求。
  • <servlet-name> 标签
    • 这里的 <servlet-name> 标签的值必须与前面 <servlet> 标签中定义的 <servlet-name> 标签的值一致,也就是 login
    • 它的作用是指定要映射的 Servlet 是哪个。
  • <url-pattern> 标签
    • 该标签指定了一个 URL 模式,在这个例子中是 /login
    • 当客户端发送的请求 URL 匹配这个模式时,服务器会将该请求转发给对应的 Servlet 进行处理。例如,当客户端访问 http://localhost:8080/yourApp/login 时(yourApp 是你的 Web 应用的上下文路径),服务器会将请求交给 com.niit.LoginServlet 来处理。

五、创建 HTML 文件

  • 在HTML文件里加入一下代码

之后找到ch4的web文件夹,右键新建一个HTML文件,名字为login1.HTML

在这里插入图片描述


在这里插入图片描述
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><h1>HTTP 请求方式说明</h1><pstyle="color: blueviolet;font-size: 20px;"><strong>GET 请求</strong>:GET 请求通常用于从服务器获取数据,它会将请求参数附加在 URL 后面。以下是几种发起 GET 请求的方法: <br> 方法一:在 HTML 的 `form` 表单中,将 `method` 属性设置为 `get`,当用户提交表单时,就会发起 GET 请求。这种方式会把表单中的数据编码后添加到 URL 的查询字符串中。 <br> 方法二:直接在浏览器地址栏输入包含请求参数的 URL 并回车,浏览器会自动发起 GET 请求。例如,在地址栏输入 `http://example.com/api?param1=value1&param2=value2`。 <br> 方法三:超链接(`<a>` 标签)默认就是发起 GET 请求。当用户点击超链接时,浏览器会向链接的目标地址发起 GET 请求。 </p><pstyle="color: blue;font-size: 20px;"><strong>POST 请求</strong>:POST 请求通常用于向服务器提交数据,它会将请求参数放在请求体中,而不是 URL 后面。以下是发起 POST 请求的方法: <br> 方法一:在 HTML 的 `form` 表单中,将 `method` 属性设置为 `post`,当用户提交表单时,就会发起 POST 请求。这种方式适合提交大量数据或包含敏感信息的数据,因为参数不会显示在 URL 中。 </p><h2>使用超链接发起 GET 请求示例</h2><p>点击下面的链接,将发起一个 GET 请求到登录页面:</p><ahref="http://localhost:8080/login?username=testuser&password=testpass">点击这里登录</a><h2>使用表单发起 GET 请求示例</h2><formaction="/login"method="get"><labelfor="username">用户名:</label><inputtype="text"id="username"name="username"placeholder="请输入用户名"><br><br><labelfor="password">密码:</label><inputtype="password"id="password"name="password"placeholder="请输入密码"><br><br><inputtype="submit"value="登录"></form><h2>使用表单发起 POST 请求示例</h2><formaction="/login"method="post"><labelfor="post-username">用户名:</label><inputtype="text"id="post-username"name="username"placeholder="请输入用户名"><br><br><labelfor="post-password">密码:</label><inputtype="password"id="post-password"name="password"placeholder="请输入密码"><br><br><inputtype="submit"value="登录"></form></body></html>

六、项目启动与问题解决

  • 然后单击最上面的编辑配置
在这里插入图片描述
  • 在部署里点击+号,找到工件
在这里插入图片描述


在这里插入图片描述


点击我们配置好的ch4文件,然后点击引用点击确定,然后启动项目

在这里插入图片描述


在这里插入图片描述


在最上面输入我们刚刚的配置好的login1.HTML文件会进行跳转

在这里插入图片描述

会出现一个bug

在这里插入图片描述


这是为什么呢?

在这里插入图片描述


此时我们需要回到编辑配置里面

然后随便用下面的输入密码和账号进行跳转

在这里插入图片描述
在这里插入图片描述

找到部署里面的应用程序上下文,删除里面的所有内容,只留下一个/就可以了

在这里插入图片描述
在这里插入图片描述

然后重启服务

在这里插入图片描述

继续上面的操作,随便选一个登录,这样变配置好了HTML请求与相应

在这里插入图片描述

配置成功!!!


以上就是这篇博客的全部内容,下一篇我们将继续探索 Java-servlet 的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343
非常感谢您的阅读,喜欢的话记得三连哦
在这里插入图片描述

Read more

Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用

Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用

Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用 Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用,大家好,我是 xcLeigh。现在国产化数据库越来越普及,金仓数据库(KingbaseES)作为一款超实用的企业级关系型数据库,在政府、金融、能源这些关键领域用得特别多。今天我就带大家从零开始,一步步学会用Python操作金仓数据库,从环境准备、连接数据库,到CRUD核心操作、事务处理,再到常见问题排查,内容全是干货,代码拿过去就能用,就算是新手也能很快上手! 前言     中电科金仓(北京)科技股份有限公司(以下简称“电科金仓”)成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是中国电子科技集团(CETC)成员企业。电科金仓以“提供卓越的数据库产品助力企业级应用高质量发展”为使命,致力于“成为世界卓越的数据库产品与服务提供商”。     电科金仓自成立起始终坚持自主创新,专注数据库领域二十余载,具备出色的数据库产品研发及服务能力,核心产品金仓数据库管理系统KingbaseES(简称“KES”

By Ne0inhk
rsl_rl——人形运控部署框架汇总:从经典RL框架rsl_rl到宇树开源的unitree_rl_gym(含unitree_sdk2_python)

rsl_rl——人形运控部署框架汇总:从经典RL框架rsl_rl到宇树开源的unitree_rl_gym(含unitree_sdk2_python)

前言 现在人形运控基本都避不开RL了,而对于人形运控本身的部署则是一个完整的工程,而作为经典RL框架rsl_rl,则在本博客里的多篇文章反复被提及,比如 1. 比如Humanplus一文中提到 对于humanplus的整个代码框架,总计包含以下五个部分 Humanoid Shadowing Transformer (HST),此所谓low-level,属于机器人小脑 这个部分的代码是基于仿真的强化学习实现,使用了legged_gym和rsl_rl .. ———— 顺带,该文『详见此文《斯坦福人形HumanPlus的代码解读与复现关键:从HST(含rsl_rl)到HIT、HardWare》』,曾分析过rsl_rl中对PPO的实现 既然本文专门解读rsl_rl,故可以把那部分中对rsl_rl的介绍 也综合到本文之中了 2. 比如NaVILA一文中提到 第二部分 NaVILA/legged-loco中isaaclab_exts/模块的解析:侧重H1人形机器人配置 整体代码库主要分为以下几个部分: isaa

By Ne0inhk
基于CNN深度学习的卷积神经网络图像识别小程序版9部合集-python-pytorch

基于CNN深度学习的卷积神经网络图像识别小程序版9部合集-python-pytorch

基于CNN卷积神经网络图像识别小程序合集-视频介绍下自取 内容包括: 基于python深度学习的水果或其他物体识别小程序 003基于python深度学习的水果或其他物体识别小程序_哔哩哔哩_bilibili 代码使用的是python环境pytorch深度学习框架,代码的环境安装和使用可以参考博客: 深度学习小程序版环境安装-ZEEKLOG博客 代码整体介绍,一般含01.py文件是将图片数据集划分训练和验证(或测试集),然后运行02.py文件即可将划分好的数据集进行训练,训练好的模型保存本地ckpt格式。 最后运行03flask.py生成http接口地址,可与本地的微信开发者工具打开的小程序进行交互,先运行03flask.py,再在小程序上点击按钮选择要识别的图片,图片通过http传给运行的深度学习代码,调用ckpt模型识别结果,再通过http返回给小程序页面显示结果。 中草药识别小程序 009中草药识别小程序_哔哩哔哩_bilibili 代码使用的是python环境pytorch深度学习框架,代码的环境安装和使用可以参考博客: 深度学习小程序版环境安装-ZEEK

By Ne0inhk

Python处理中文文件必看(解决utf-8解码错误的4种实战方法)

第一章:Python处理中文文件必看(解决utf-8解码错误的4种实战方法) 在使用Python处理包含中文字符的文本文件时,经常会遇到 UnicodeDecodeError: 'utf-8' codec can't decode byte 这类错误。这通常是因为文件的实际编码格式与程序默认尝试解析的编码不一致所致。为确保程序稳定读取中文内容,掌握多种应对策略至关重要。 明确指定文件编码 打开文件时显式声明编码方式是最直接的解决方案。多数中文文件可能采用 UTF-8、GBK 或 GB2312 编码。 # 正确指定编码读取中文文件 try: with open('data.txt', 'r', encoding='utf-8') as f: content = f.read() print(content) except

By Ne0inhk