Developer_Huang
2017-08-14 10:17:12
這是jsp頁面代碼
??<body>
????<h1>第一個myeclipse?servlet程序</h1>
????
????<!--用get方式(表單沒有指定method,或者正常的URL,請求都是get方式),請求一個servlet???-->
????<a?href="servlet/HelloServlet">get方式請求HelloServlet?</a>
????
????<%--post請求,寫一個表單,指定method=post?--%>
????<form?action="servlet/HelloServlet"?method="post">
????<input?type="submit"?value="post請求servlet"?/>
????</form>
??</body>
??
??以下是servlet代碼
??package?servlet;
import?java.io.IOException;
import?java.io.PrintWriter;
import?javax.servlet.Servlet;
import?javax.servlet.ServletConfig;
import?javax.servlet.ServletException;
import?javax.servlet.annotation.WebServlet;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
/**
?*?Servlet?implementation?class?HelloServlet
?*/
@WebServlet("/servlet/HelloServlet")
public?class?HelloServlet?extends?HttpServlet?{
private?static?final?long?serialVersionUID?=?1L;
/**
?*?@see?HttpServlet#HttpServlet()
?*/
public?HelloServlet()?{
super();
//?TODO?Auto-generated?constructor?stub
}
/**
?*?@see?Servlet#init(ServletConfig)
?*/
public?void?init(ServletConfig?config)?throws?ServletException?{
//?TODO?Auto-generated?method?stub
}
/**
?*?@see?Servlet#destroy()
?*/
public?void?destroy()?{
//?TODO?Auto-generated?method?stub
}
/**
?*?@see?HttpServlet#service(HttpServletRequest?request,?HttpServletResponse
?*??????response)
?*/
protected?void?service(HttpServletRequest?request,
HttpServletResponse?response)?throws?ServletException,?IOException?{
//?TODO?Auto-generated?method?stub
}
/**
?*?@see?HttpServlet#doGet(HttpServletRequest?request,?HttpServletResponse
?*??????response)
?*/
protected?void?doGet(HttpServletRequest?request,
HttpServletResponse?response)?throws?ServletException,?IOException?{
//?TODO?Auto-generated?method?stub
System.out.println("doGet處理get請求?");//?這是后臺顯示的
PrintWriter?pw?=?response.getWriter();
response.setContentType("text/html;charset=utf-8");
pw.println("<strong>helloServelt</strong>");
}
@Override
protected?void?doPost(HttpServletRequest?request,
HttpServletResponse?response)?throws?ServletException,?IOException?{
//?TODO?Auto-generated?method?stub
System.out.println("dopost處理post請求?");//?這是后臺顯示的
PrintWriter?pw?=?response.getWriter();
response.setContentType("text/html;charset=utf-8");
pw.println("<strong>helloServelt</strong>");
}
}網上看到說是servlet 3.0的新特性,不使用xml注解,也是可以的,但是我的卻是空白頁面?這是為何?
2 回答
已采納

時間啊
TA貢獻17條經驗 獲得超21個贊
你重寫了service()方法。
在 HttpServlet 中已存在 service()方法.缺省的服務功能是調用與 HTTP 請求的方法相應的 do 功能。
例如,如果 HTTP 請求方法為 GET,則缺省情況下就調用 doGet()。
service方法是接口中的方法,servlet容器把所有請求發送到該方法,該方法默認行為是轉發http請求到doXXX方法中,如果你重載了該方法,默認操作被覆蓋,不再進行轉發操作!?
service()是在javax.servlet.Servlet接口中定義的, 在 javax.servlet.GenericServlet中實現了這個接口, 而 doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實現的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子類.
Servlet 應該為 Servlet 支持的 HTTP 方法覆蓋 do 功能.因為HttpServlet.service() 方法會檢查請求方法是否調用了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。

添加回答
舉報
0/150
提交
取消