Servlet详解---Servlet与表单

本文详细阐述了如何使用Servlet处理输入数据,并通过配置映射实现路径管理。同时,介绍了表单的创建与提交方式,强调了处理不同HTTP请求类型的重要性。通过实例演示了将表单提交方式从GET更改为POST时遇到的错误及解决方案。

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

我们先写一个处理输入数据的Servlet如下所示:

【InputServlet.java的内容如下:】

package com.skewrain.demo2;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class InputServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

              throws ServletException, IOException{

        String info = req.getParameter("info");   //假设参数名称为info

        PrintWriter out = resp.getWriter();

        out.println("<html>");

        out.println("<head><title>skewerain</title></head>");

        out.println("<body>");

        out.println("<h1>" + info + "</h1>");

        out.println("</body>");

        out.println("</html>");

        out.close();

    }

}

当一个Servlet编写完成之后下面就需要在skewrain/web-inf/web.xml文件之中进行servlet的映射配置。

<servlet>

    <servlet-name>input</servlet-name>

    <servlet-class>com.skewrain.demo2.InputServlet</servlet-class>

</servlet>

<servlet-mapping>

     <servlet-name>input</servlet-name>

     <url-pattern>/InputServlet</url-pattern>

</servlet-mapping>

现在的路径是将其定义成了根目录下的InputServlet。

下面定义表单:

【input.htm的内容如下:】

<html>

<head><title>www.baidu.com</title></head>

<body>

<form action="InputServlet" method="get">

    请输入内容:<input type="text" name="info">

    <input type="submit" value="提交">

</form>

</body>

</html>

在浏览器中执行的效果如下所示:


由于配置的时候是将其配置在了根目录下,所以现在必须向上一级目录之后才可以找到所需要的Servlet。

我们修改input.xml的代码如下:

<form action="../InputServlet" method="get">

再次执行此程序:


“提交”之后的结果如下:


为了不使用以上的“../”的方式,我们可以修改web.xml的内容如下:

<servlet-mapping>

     <servlet-name>input</servlet-name>

     <url-pattern>/inputservlet/InputServlet</url-pattern>

</servlet-mapping>

【注意:修改配置文件之后,一定要重新启动服务器。】


开发中一定要尽量地避免“../”的问题,尽可能不要去多写。


如果将表单提交方式从“get”改为“post”,则会出现如下错误:


凡是“4XX”的错误都是客户端错误。


因为现在的Servlet只覆写了doGet()方法,所以可以处理get请求。

包括表单的提交以及地址的重写都是属于get请求。但是,现在却不能处理post提交,因为没有doPost()方法。


【如果将InputServlet.java修改为:】

package com.skewrain.demo2;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class InputServlet extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse resp)

              throws ServletException, IOException{

        String info = req.getParameter("info");   //假设参数名称为info

        PrintWriter out = resp.getWriter();

        out.println("<html>");

        out.println("<head><title>skewerain</title></head>");

        out.println("<body>");

        out.println("<h1>" + info + "</h1>");

        out.println("</body>");

        out.println("</html>");

        out.close();

    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp)

              throws ServletException, IOException{

        this.doGet(req,resp);

    }

}

再次编译,再次执行的结果如下:


在进行程序处理的时候一定要注意HTTP的提交方式,用的最多的就是两个:doGet()、doPost()。


小结:

1.表单接收时,根据请求方式的不同分为get处理和post处理。

2.在进行表单提交时一定要处理好路径问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值