tomcat和Servlet开发小案例

上篇文章中,我已经正确安装了tomcat和利用servlet写了个基础的hello world程序,明白了这两个东西到底是啥玩意.
接下来,需要写个登录的小案例来进一步熟悉下基于servlet开发的流程.

一,新建项目

在这里插入图片描述
我们新建的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。

通过这样的配置,当用户请求的URL匹配/myServlet时,容器将会调用com.masiyi.servlet.MyServlet来处理该请求。
或者一个更简便的方式是在MyServle这个类前面使用注解:

@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类中,我们可以编写业务逻辑代码,包括数据处理、页面渲染、数据库操作等,以实现特定的功能。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值