建立Servlet的步驟html
1.XXX extends HttpServlet java
2.Override doGet doPost web
3.copy to WEB-INF/classes瀏覽器
4.web.xml服務器
1) <servlet><servlet-name><servlet-class></servlet>app
2) <servlet-mapping><url-pattern> / ide
5.restart serverpost
一。在JavaWeb開發中,用戶自定義Servlet類,繼承用於專門用於web開發的HttpServlet類。通常Service()方法不須要重寫(當須要對服務器進行初始化操做時可重寫)。通常用來處理客戶端請求的方法是doGet()和doPost()。 this
遇到的問題:url
type: Status report
message: HTTP method GET is not supported by this URL
description: The specified HTTP method is not allowed for the requested resource (HTTP
method GET is not supported by this URL).
緣由:繼承自HttpServlet的Servlet沒有重寫對於請求和響應的處理方法:doGet或doPost等方法;默認調
用父類的doGet或doPost等方法。當你已經重寫上述方法時,若是程序中有super.doPost(req, resp)仍然報上述錯誤,緣由是父類HttpServlet的doGet或doPost等方法覆蓋了你重寫的doGet或doPost等方法。父類HttpServlet的doGet或doPost等方法的默認實現是返回狀態代碼爲405的HTTP錯誤。
解決方法:子類重寫doGet或doPost等方法,不要調用父類HttpServlet的doGet或doPost等方法,即去掉super.doGet(request, response)和super.doPost(request, response).
二。1.瀏覽器端html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>a example for form_servlet</title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <body> <h2>A Sample Form using get/post</h2> <form name="showparameters" method="get" action="servlet/form_servlet"> Number:<input type="text" name="itemnumber"/><br/> Quantity:<input type="text" name="quantity"/><br/> Each Price:<input type="text" name="price"/><br/><hr> Name:<input type="text" name="name"/><br/> Addr:<br/><textarea name="addr" rows="3" cols="30"></textarea><br/> Card:<br/> <input type="Radio" name="card" value="viss">viss<br/> <input type="Radio" name="card" value="AAA">AAA<br/> <input type="Radio" name="card" value="BBB">BBB<br/> Card Number:<input type="text" name="cardnumber"/><br/> Repeat Card Number:<input type="text" name="cardnumber"/> <input type="submit"/> </form> </body> </html>
2.Servlet
import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import java.util.Map.Entry; import java.util.Iterator; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class form_servlet extends HttpServlet{ private PrintWriter pw; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //resp.getWriter().println("<a href='http://www.baidu.com'>goaaa</a>"); resp.setContentType("text/html;charset=gb2312"); pw = resp.getWriter();//得到輸出流 String title = "Reading all request parameters"; pw.println("<html><head><title>讀取全部參數</title></head>" +"<body bgcolor='#fdf5e6'>\n" +"<h1 align='center'>"+title+"</h1>\n" +"<table border='1' align='center'>\n" +"<th>Parameter Name<th>Parameter Value(s)"); //得到請求參數 Map<String, String[]> map = req.getParameterMap(); Iterator<Entry<String, String[]>> entries = map.entrySet().iterator(); while(entries.hasNext()){ Map.Entry entry = (java.util.Map.Entry) entries.next(); String key = (String) entry.getKey(); pw.println("<tr><td>"+key+"</td>"); String[] values = (String[])entry.getValue(); if(values.length==1){ pw.println("<td align='center'>"+values[0]+"</td>\n</tr>"); }else{ pw.println("<td><ul>\n"); for (int i = 0; i < values.length; i++) { String value = values[i]; pw.println("<li>"+value+"</li>"); } pw.println("</ul>\n"); pw.println("</td>\n</tr>\n"); } } pw.println("</table>\n</body></html>\n"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); } }
3.web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <servlet> <servlet-name>form_servlet</servlet-name> <servlet-class>form_servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>form_servlet</servlet-name> <url-pattern>/servlet/form_servlet</url-pattern> </servlet-mapping> </web-app>
注意的問題:1.注意action的url爲相對路徑(表示相對當前文件所在的路徑)servlet/form_servlet
<form name="showparameters" method="get" action="servlet/form_servlet">
2.web.xml配置文件的中url-pattern定義可訪問的web路徑,寫法:必須以「/」開頭
<url-pattern>/servlet/form_servlet</url-pattern>
3.<servlet-mapping>和<servlet>能夠使多對一的關係,這樣能夠爲一個servlet定義多個可訪問的web路徑。