我们先写一个处理输入数据的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.在进行表单提交时一定要处理好路径问题。