一,新建项目
我们新建的maven项目其实里面是空的。所以我们需要给他变成一个servlet项目。
二,添加web模块
新建一个空项目之后,我们给他增加一个Web模块。
三,引入servlet
在编辑器的pom.xml直接写,编辑器会帮助我们自动下载.
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> </dependencies>
四,编写自己的MyServlet类
基本上就是以自己的需求来重写http请求和响应:
init(): 这个方法在Servlet初始化时被调用 doGet(): 这个方法用于处理HTTP GET请求 doPost(): 这个方法用于处理HTTP POST请求 doPut(): 这个方法用于处理HTTP PUT请求 service(): 这个方法根据HTTP请求的方法类型,调用对应的doXXX()方法。 destroy(): 这个方法在Servlet被销毁前被调用
如下:
package com.masiyi.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/MyServlet") public class MyServlet extends HttpServlet {
public MyServlet() {
super(); } @Override public void init() throws ServletException {
super.init(); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8"); req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); String username = req.getParameter("username"); String pwd = req.getParameter("pwd"); System.out.println("用户名:" + username + ":密码:" + pwd); PrintWriter writer = resp.getWriter(); writer.print("用户名:" + username); writer.print("密码:" + pwd); writer.close(); super.doPost(req, resp); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.service(req, resp); } @Override public void destroy() {
super.destroy(); } }
五,配置自定义servlet类的访问路径
主要是在web.xml中定义:
<servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.masiyi.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping>
这段XML配置代码用于将Servlet类com.masiyi.servlet.MyServlet映射到URL模式/myServlet上。
标签用于配置一个Servlet,其中:
指定了Servlet的名称为myServlet。 指定了Servlet类的完整路径为com.masiyi.servlet.MyServlet。
@WebServlet("/MyServlet")
六,编写页面
在web根目录创建index.jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>向Servlet发送请求</title> </head> <body> <%--注意: action的值 是 :web.xml 文件中的 url-pattern 的值。 --%> <form action="/MyServlet" method="post"> 用户名: <input type="text" name="username"> <br> 密码: <input type="password" name="pwd"> <br> <input type="submit" value="提交"> </form> </body> </html>
七,运行项目
使用上篇文章讲的使用idea的tomcath插件部署项目
八,运行后的结果
也就是说,当我们运行部署项目后,浏览器访问localhost:8080,就是访问的index.jsp文件,浏览器解析这个文件,渲染出了这个页面.
而当我们点击提交时,浏览器的url变成localhost:8080/MyServlet,发起了一个新的post请求.
又因为@WebServlet("/MyServlet")
这个注解,将该路径映射到MyServlet这个类上,于是开始执行这个类.
又因为它是servlet的实例,支持htt请求和响应的处理,所以能够返回新的数据给浏览器.
也就是说:Servlet是Java中用于处理Web请求的一种技术,它封装了HTTP请求和响应的处理逻辑。通过继承Servlet类并重写其中的方法,我们可以创建自定义的Servlet类,用来拦截和处理HTTP请求,从而完成业务代码逻辑。
具体来说,当客户端发送HTTP请求时,Servlet容器会根据Servlet的映射关系找到对应的Servlet类,并调用其相应的方法(如doGet、doPost等)来处理请求。在自定义的Servlet类中,我们可以编写业务逻辑代码,包括数据处理、页面渲染、数据库操作等,以实现特定的功能。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/goyykf/10892.html