servlet必須要寫Doget或Dopost方法嗎?
能不能通過導入頭文件或者是其他方法都不寫這兩種方法還是可以傳遞信息?(JSP與servlet相關問題?。?/p>
package lee;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.PrintWriter;
import java.io.IOException;
import java.sql.*;
/*@WebServlet(name="login"
?? ?, urlPatterns={"/login"})*/
public class LoginServlet extends HttpServlet
{
?? ?public void service(HttpServletRequest request,
?? ??? ?HttpServletResponse response)
?? ??? ?throws ServletException,java.io.IOException
?? ?{
?? ??? ?request.setCharacterEncoding("utf-8");
?? ??? ?response.setContentType("text/html;charSet=utf-8");
?? ??? ?String errMsg = "";
?? ??? ?RequestDispatcher rd;
?? ??? ?String username = request.getParameter("username");
?? ??? ?String pass = request.getParameter("pass");
?? ??? ?try
?? ??? ?{
?? ??? ??? ??? ?if (admin.equals(pass))
?? ??? ??? ??? ?{
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?HttpSession session = request.getSession(true);
?? ??? ??? ??? ???
?? ??? ??? ??? ??? ?session.setAttribute("name" , username);
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?rd = request.getRequestDispatcher("/welcome.jsp");
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?rd.forward(request,response);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?errMsg += "你的用戶名密碼不符合,請重新輸入";
?? ??? ??? ??? ?}
?? ??? ?}
?? ??? ?catch (Exception e)
?? ??? ?{
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?if (errMsg != null && !errMsg.equals(""))
?? ??? ?{
?? ??? ??? ?rd = request.getRequestDispatcher("/login.jsp");
?? ??? ??? ?request.setAttribute("err" , errMsg);
?? ??? ??? ?rd.forward(request,response);
?? ??? ?}
?? ?}
}
2017-09-12
因為你的LoginServlet .java文件的doGet()和doPost()會自動識別 你jsp頁面上,<a href=".............................">或者表單<form method="post/get"> ?所提交的方式. ? ?<a href="......"> 默認以doGet方式獲取 ?<form ?一般以post方式提交》?