Servlet入门

本文展示了如何在Java Web项目中使用Tomcat服务器处理Servlet请求。通过添加web模块,创建一个简单的HTML表单,用户可以提交商品的名称、价格、库存和备注。在AddServlet中,从HttpServletRequest中获取这些参数并进行打印。当遇到404或405错误时,通常是因为URL不正确或请求方法与Servlet方法不匹配。此外,还讨论了配置问题,如jar包未添加到部署包中和URL设置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

导入Tomcat依赖

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

添加web模块

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

Servlet-获取参数

add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="add" method="post">
        名称:<input type="text" name="fname"><br/>
        价格:<input type="text" name="price"><br/>
        库存:<input type="text" name="fcount"><br/>
        备注:<input type="text" name="remark"><br/>
        <input type="submit" value="添加">
    </form>
</body>
</html>

AddServlet.java

package com.atguigu.servlets;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author pengyang
 * @date 2022-05-08 19:39
 */

public class AddServlet extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求参数
        String fname = request.getParameter("fname");
        String priceStr = request.getParameter("price");
        Integer price = Integer.parseInt(priceStr);     //获取到的是字符串,转换成Integer类
        String fcountStr = request.getParameter("fcount");
        Integer fcount = Integer.parseInt(fcountStr);
        String remark = request.getParameter("remark");

        System.out.println("fname = " + fname);
        System.out.println("price = " + price);
        System.out.println("fcount = " + fcount);
        System.out.println("remark = " + remark);
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AddServlet</servlet-name>
        <servlet-class>com.atguigu.servlets.AddServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
    <!--
    1.用户发请求, action=add
    2.项目中, web.xml中找到url-pattern = /add ->第12行
    3.找第11行的servlet-name = Addservlet
    4.找和servlet-mapping中servlet-name一致的servlet ,找到第7行
    5.找第8行的servlet-class -> com.atguigu.servlets.AddServlet
    6.用户发u的是post请求(method=post),因此 tomcat会执行Addservlet中的doPost方法
    -->
</web-app>

常见问题

1.新建项目一新建模块
2.在模块中添加web
3.创建artifact -部署包
4. lib - artifact先有artifact,后来才添加的mysql.jar。此时,这个jar包并没有添加到部署包中那么在projectSettings中有一个Problems中会有提示的,我们点击fix选择add to. . .另外,我们也可以直接把lib文件夹直接新建在WEB-INF下。
这样不好的地方是这个lib只能是当前这个moudle独享。如果有第二个moudle我们需要再次重复的新建lib。
5.在部署的时候,修改application Context。然后再回到server选项卡,检查URL的值。URL的值指的是tomcat启动完成后自动打开你指定的浏览器,然后默认访问的网址。
启动后,报错404.404意味着找不到指定的资源。
如果我们的网址是: http://localhost:8080/pro01/ ,那么表明我们访问的是index.html.
我们可以通过标签进行设置欢迎页(在tomcat的web.xml中设置,或者在自己项目的
6. 405问题。当前请求的方法不支持。比如,我们表单method=post,那么Servlet必须对应doPost。否则报405错误。
7.空指针或者是NumberFormatException 。因为有价格和库存。如果价格取不到,结果你想对null进行Integer.parseInt()就会报错。错误的原因大部分是因为 name="price"此处写错了,结果在Servlet端还是使用request.getParameter(“price”)去获取。
8. url-pattern中以 / 开头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值