JavaWeb学习3(Servlet技术2-表单数据处理)
1、Servlet的⼯作流程
客户端(浏览器)提交对Servlet调⽤的Get或Post请求。
服务端接到请求后,如果对Servlet是第⼀次调⽤,则实例化这个Servlet。
服务器调⽤该Servlet对象的service()⽅法。
服务器产⽣动态的回复内容,并将内容发送给service()⽅法。
2、Servlet表单数据
客户端通过浏览器发送给Web服务器的请求⼀共有7种,即POST、GET、PUT、DELETE、OPTIONS、HEAD和TRACE。实际web编程中,⽤到⽐较多的分别为 GET ⽅法和 POST ⽅法。
(1)GET ⽅法
GET ⽅法是默认的从浏览器向 Web 服务器传递信息的⽅法,它会产⽣⼀个很长的字符串,出现在浏览器的地址栏中。GET ⽅法有⼤⼩限制:请求字符串中最多只能有 1024 个字符。
Servlet 使⽤ doGet() ⽅法处理这种类型的请求。
(2)POST⽅法
POST ⽅法打包信息的⽅式与 GET ⽅法基本相同,但是 POST ⽅法不是把信息作为 URL 中 ? 字符后的⽂本字符串进⾏发送,⽽是把这些信息作为⼀个单独的消息。消息以标准输出的形式传到后台程序
Servlet 使⽤ doPost() ⽅法处理这种类型的请求。
“POST”请求是通过HTML中表单“Form”进⾏发送的,表单中宝矿⼒不同形式的输⼊,如Input text、Input password、Input radio、Input checkbox等。
3、doGet、doPost和service⽅法
在servlet开发中,以doGet()和doPost()分别处理get和post⽅法。⾸先判断请求时是get还是post,如果是get就调⽤doGet(), 如果是post 就调⽤doPost()。
(1) Service是类GenericServlet中的⽅法,每次客户向服务器发出请求时,服务器就会调⽤这个⽅法。程序员如果想对客户的请求进⾏响应的话就必须覆盖这个⽅法,并在这个⽅法中加⼊⾃⼰的代码来实现对客户的响应。
Servlet 类中有 service() ⽅法,则优先调⽤ Service ⽅法。然后才会调⽤⾃⼰覆写的doPost()或是doGet()⽅法。
(2)doGet()表⽰,当客户端是使⽤get⽅式请求该servlet时,那么就会触发执⾏doGet()⽅法中的代码。
(3)doPost()表⽰,当客户端是使⽤post⽅式请求该servlet时,那么就会触发执⾏doPost()⽅法中的代码。
4、HTML表单基础知识
Form标记基本语法:
<form method="post | get" action="/servlet/addMessage">
<!--添加form标记-->
</form>
说明:method⽤于设置将表单的数据传递给Web服务端的⽅法,post或get;action指明处理这个表单的Servlet程序所在的URL地址,默认以form所在⽂件的URL为设置值。
5、表单应⽤案例
建⽴账号、密码登录页⾯
(1)eclipse下新建⼀个Dynamic Web Project项⽬如下
建⽴三个⽂件:
login.html 登录界⾯
MyServlet.java 编写servlet
(2)编写login.html 登录界⾯
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="myServlet">
<table width="313" border="0">
<tr>
<td width="85">⽤户名:</td>
<td width="218"><input name="username" type="text" id="username" size="18" maxlength="10"></td>
</tr>
<tr>
<td width="85">密码:</td>
<td width="218"><input name="password" type="password" id="password" size="18" maxlength="10"></td>
</tr>
<tr>
<td><input type="submit" name="submit" id="submit" value="提交"></td>
<td><input type="reset" name="reset" id="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
注意<form> 的action为l⽂件⾥配置的servlet-name的名字,引⽤时前⾯不要加“/”,该位置设置不正确会出现404错误。(3) MyServlet.java编写
该类⾥⾯重新doPost⽅法
package com.herry.bean;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.tor.Response;
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//设置响应内容
resp.setContentType("text/html;charset=utf-8");
PrintWriter Writer();
out.println("<HTML>");
out.println("<HEAD><TITLE>表单测试</TITLE></HEAD>");
out.println("<BODY>");
req.setCharacterEncoding("utf-8");
out.println("input username:"+Parameter("username")+"<br>");
out.println("input password:"+Parameter("password")+"<br>");
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
(4)配置 l ⽂件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/j <!-- 配置servlet -->
<!-- 配置servlel类路径 -->
<servlet>
<servlet-name>myServlet</servlet-name> <!-- servlet名字⾃定义 -->
<servlet-class>com.herry.bean.MyServlet</servlet-class> <!-- servlet类的路径-->
学习java的学习方法</servlet>
<!-- 配置servlel访问⽅式 -->
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
</web-app>
(5)项⽬ 中WebContent的所有⽂件部署到Tomcat下,开启Tomcat;浏览器中输⼊
action的配置还要其他⽅法见以下链接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论