Servlet程式設計介面、獲取表單提交的資訊
GenericServlet是所有Servlet的鼻祖
用於HTTP的Servlet程式設計都通過繼承
javax.servlet.http.HttpServlet實現
請求處理方法:(分別對應http協議的七種請求)
1.doGet:響應Get請求,常用
2.doPost:響應Post請求,常用
3.doPut:準備往伺服器上放東西
4.doDelete:準備刪除伺服器上的東西
5.doHead:請求http協議的頭資訊
6.doOptions:對web server進行配置
7.doTrace:進行跟蹤,做除錯用
例項的個數
非分佈的情況下,通常一個Servlet在伺服器中有一個例項
/************************************************分隔符***********************************************************/
Servlet獲取表單提交的內容
部署到Tomcat伺服器上的檔案:
工程名:ServletStudy
表單檔案:login.jsp
Servlet檔案:LoginServlet.java
配置檔案:web.xml
下面對是這幾個檔案的程式碼:
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="/ServletStudy/LoginServlet"> userName: <input name="userName" type="text"/><br/> password: <input name="password" type="password"/><br/> <input type="submit"value="submit"/> <input type="reset"value="reset"/> </form> </body> </html>
LoginServlet.java
package com; 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; @SuppressWarnings("serial") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("userName"); String password = req.getParameter("password"); resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("<html><head><title>Login Result</title></head"); out.println("<body> username:"+username+"<br>"); out.println("password:"+password+"<br></body></html>"); out.flush(); } }
web.xml
在二級標籤中新增以下程式碼:
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
說明:
1.<form>標籤中的action 值為 web.xml中的<url-pattern></url-pattern>中的值。再加上Servlet類名,如這裡的是
/ServletStudy/LoginServlet
提交的方式預設為get方式,本例中即是以get方式提交的,這裡沒有對中文問題進行處理。但建議一般使用post方式提交表單。
2. String username = req.getParameter("userName");
這裡的引數值“userName”要與<input name="userName" type="text"/>中的name屬性值相同
下面是使用doPost提交方式,關鍵部分程式碼為:
protected void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException, IOException
{
req.setCharacterEncoding("utf-8");
String username = req.getParameter("userName");
String password = req.getParameter("password");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8"); //設定返回給客戶端的文字格式,可解決文字編碼格式不統一的問題
PrintWriter out = resp.getWriter();
out.println("<html><head><title>Login Result</title></head");
out.println("<body> username:"+username+"<br>");
out.println("password:"+password+"<br></body></html>");
out.flush();
}
若使用doPost方式響應客戶,則要將<form>表單中的method的值改為post