天天看點

Servlet學習記錄(二)建立一個簡單的Servlet程式

第一個Servlet的程式

1在idea中建立項目

建立一個JavaEnterprise類型的項目

Servlet學習記錄(二)建立一個簡單的Servlet程式

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.為了完成對于輸入的使用者名和密碼的一個判斷,也就是如果成功的話界面應該是這樣的一個形成

Servlet學習記錄(二)建立一個簡單的Servlet程式

3.于是就需要在servlet當中進行一定的設定,并且設定完成之後需要為其跳轉一個新的頁面,這也是相當重要的

Servlet學習記錄(二)建立一個簡單的Servlet程式

4.重要的幾個語句

Servlet學習記錄(二)建立一個簡單的Servlet程式