第一個Servlet的程式
1在idea中建立項目
建立一個JavaEnterprise類型的項目
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL3VleOhXU65kMRpHW3BjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2UjMwUzMwYTM2EjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2,第一個程式的功能
1,我們編寫一個登入頁面,填寫使用者名密碼
2,我們的Servlet接受到傳遞上來的使用者名和密碼,然後做判斷
3,把判斷的結果在另外一個jsp頁面展示
3,建立登入頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>使用者登入</title>
</head>
<body>
<form method="post" action="<%=application.getContextPath()%>/login">
<p>使用者名:<input name="username" type="text"/></p>
<p>密碼:<input name="password" type="password"/></p>
<p><button type="submit">登入</button></p>
</form>
</body>
</html>
4,建立對應的LoginServlet:
package com.vgxit.helloworld.servlet;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 登入對應的Servlet,GenericServlet就是實作了标準的Servlet接口的實作類
*/
public class LoginServlet extends GenericServlet {
/**
* 我們具體實作自己業務邏輯的方法
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.setContentType("text/html;charset=utf-8");
try (PrintWriter pw = servletResponse.getWriter()) {
pw.println("<h1>Hello world</h1>");
}
}
}
5,配置LoginServlet的通路路徑:
我們現在直接在頁面上通路:http://localhost:8080/001helloworld/login頁面直接報錯了,404。這個是因為,我們還沒有配置剛剛編寫的LoginServlet的通路路徑。那麼如何配置呢?就是在web.xml裡面進行配置
有些同學可能會溫老師,為什麼在Servlet規範中,我們要對Servlet的url進行配置呢?如果我們直接以Servlet的名字來區分不是很好嗎?比如我們要反問LoginServlet,那麼我們直接在頁面上通路http://localhost:8080/001helloworld/login就好了啊。但是老師要告訴一下大家,如果以後我們希望讓所有以action結尾的通路路徑都來通路LoginServlet怎麼辦?這個時候我們直接用名字來區分就很麻煩了,如果我們用配置是比較簡單的。
<!--給Servlet取一個名字-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.vgxit.helloworld.servlet.LoginServlet</servlet-class>
</servlet>
<!--給對應名字的Servlet加上通路路徑-->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
6,編寫登入判斷的具體邏輯:
package com.vgxit.helloworld.servlet;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 登入對應的Servlet,GenericServlet就是實作了标準的Servlet接口的實作類
*/
public class LoginServlet extends GenericServlet {
/**
* 我們具體實作自己業務邏輯的方法
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//擷取表單送出上來的使用者名和密碼
String username = servletRequest.getParameter("username");
String password = servletRequest.getParameter("password");
String msg = null;
//判斷賬号和密碼是否正确
if ("liyitong".equals(username) && "[email protected]".equals(password)) {
msg = "Hello " + username + " 賬号和密碼正确";
} else {
msg = "Hello " + username + " 賬号或密碼錯誤";
}
servletRequest.setAttribute("msg", msg);
//把請求轉發給另外一個頁面
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/msg.jsp");
dispatcher.forward(servletRequest, servletResponse);
}
}
7,具體的消息展示頁面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>資訊提示</title>
</head>
<body>
<h1><%=request.getAttribute("msg")%></h1>
</body>
</html>
講解和總結
這當中
1.首先是要先建立一個jsp的送出界面,那麼就必須對使用者名和密碼進行輸入
2.為了完成對于輸入的使用者名和密碼的一個判斷,也就是如果成功的話界面應該是這樣的一個形成
3.于是就需要在servlet當中進行一定的設定,并且設定完成之後需要為其跳轉一個新的頁面,這也是相當重要的
4.重要的幾個語句