0

こんにちは、ユーザーにログインする機能を備えた LoginServlet がありますが、使用するスタイリングを備えた jsp ページがあります。login.jsp で LoginServlet の機能を使用する方法がわかりません

LoginServlet のコード全体を次に示します。ページを表示するようにコーディングしたことは承知していますが、この jsp ページを使用して表示する必要があります。これは私が与えられた uni 割り当てであり、表示に JSP を使用するという要件の一部です。

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    private void sendLoginForm(HttpServletResponse response, 
              boolean withErrorMessage) 
              throws ServletException, IOException {

              response.setContentType("text/html"); 
              PrintWriter out = response.getWriter(); 
              out.println("<HTML>"); 
              out.println("<HEAD>"); 
              out.println("<TITLE>Login</TITLE>"); 
              out.println("</HEAD>"); 
              out.println("<BODY>"); 
              out.println("<CENTER>"); 

              if (withErrorMessage) 
                out.println("Login failed. Please try again.<BR>"); 

              out.println("<BR>"); 
              out.println("<BR><H2>Login Page</H2>"); 
              out.println("<BR>"); 
              out.println("<BR>Please enter your user name and password."); 
              out.println("<BR>"); 
              out.println("<BR><FORM METHOD=POST>"); 
              out.println("<TABLE>"); 
              out.println("<TR>"); 
              out.println("<TD>User Name:</TD>"); 
              out.println("<TD><INPUT TYPE=TEXT NAME=uniid></TD>"); 
              out.println("</TR>"); 
              out.println("<TR>"); 
              out.println("<TD>Password:</TD>"); 
              out.println("<TD><INPUT TYPE=PASSWORD NAME=password></TD>"); 
              out.println("</TR>"); 
              out.println("<TR>"); 
              out.println("<TD ALIGN=RIGHT COLSPAN=2>"); 
              out.println("<INPUT TYPE=SUBMIT VALUE=Login></TD>"); 
              out.println("</TR>"); 
              out.println("</TABLE>"); 
              out.println("</FORM>"); 
              out.println("</CENTER>"); 
              out.println("</BODY>"); 
              out.println("</HTML>"); 
            } 


    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        sendLoginForm(response, false); 

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    public void doPost(HttpServletRequest request, 
              HttpServletResponse response) 
              throws ServletException, IOException {  
                String uniid = request.getParameter("uniid"); 
                String password = request.getParameter("password"); 
                if (login(uniid, password)) {
                  /*RequestDispatcher rd = 
                    request.getRequestDispatcher("AnotherServlet"); 
                  rd.forward(request, response); */
                    response.sendRedirect("home_student.jsp"); 

                } 
                else {
                  sendLoginForm(response, true); 
                } 

    }

     boolean login(String uniid, String password) {
            try {
              Class.forName("com.mysql.jdbc.Driver");
              Connection con = 
                DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root",""); 
              System.out.println("got connection"); 

              Statement s = con.createStatement(); 
              String sql = "SELECT uniid FROM user" + 
                " WHERE uniid='" + uniid + "'" + 
                " AND password='" + password + "'"; 
              ResultSet rs = s.executeQuery(sql); 
              if (rs.next()) {
                return true; 
              } 
                rs.close(); 
                s.close(); 
                con.close(); 
            } 
            catch (ClassNotFoundException e) {
              System.out.println(e.toString()); 
            } 
            catch (SQLException e) {
              System.out.println(e.toString()); 
            } 
            catch (Exception e) {
              System.out.println(e.toString()); 
            } 
            return false; 
          }


        }

ここに私のjspページがあります

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Mars University Lab System</title>
    <link rel="stylesheet" href="style.css" type="text/css" media="screen">
</head>

<body>
<jsp:include page="header.jsp"/>


<tr>
<td>
</td>
</tr>

<tr>
<td>
<div id = "centrecontent">

<table border="0" cellpadding="2">
<tr>
    <td width="500px" align="center">
    <br>
    <font size="5">Welcome to <i>The Department of <br>Rocket Science</i> Lab System<br></font>
    <br>
    For <b>Students</b> you can enrol in labs<br> and manage the labs you're enrolled in.<br><br>

    For <b>Tutors</b> you can view the labs<br> you're teaching and record attendence.<br><br>

    For <b>Lecturers</b> you can create and<br> manage lab classes, register Tutors and<br> assign those Tutors to labs.<br><br>

    </td>
    <td width="500px">
<table border="0" align="center">
        <tr>
        <td align="center">

        <table border="0"  align="center">
            <tr> <br><br><b>Existing Member? <br>Sign In Here!</b><br>
                <td align="right">
                    <form name ="login" METHOD=POST ACTION="SaveSession.jsp">
                        Username: <input type="text" name="username"/><br />
                        Password: <input type="password" name="pword"/><br />
                        <input type=SUBMIT value="Login" name="Submit" />

                </td>
            </tr>
        </table>

                <br><br><br><br>
    <form name="search_cat_bar" method="get" action="">
    <input type="hidden" name="dff_view" value="grid">
       Search:<input type="text" name="dff_keyword" size="30" maxlength="50"> <br>in 
       <select name="dff_cat1num" size="1">
         <option value="-1">All Subjects
         <option value="-2">--------------
         <option value="101">CSE2ICE
         <option value="193">CSE3PRA
         <option value="193">CSE3PRB
         <option value="193">CSE3WAE
       </select>
       <input type="submit" value="Find">
       </form>

        </td>
</tr>
</table>


</td>
</tr>
</table>

<table>
<tr>
</tr>
</table>

</div>




<jsp:include page="footer.jsp"/>


</body>

</html>

login.jsp ページで、ログイン機能のために LoginServlet を呼び出すようにしたいと考えています。

4

3 に答える 3

0

次の方法でサーブレットを呼び出すことができます:web.xml

<servlet>
        <servlet-name>UserLogin</servlet-name>
        <servlet-class>com.servlet.LoginServlet</servlet-class>//full class path
</servlet>

<servlet-mapping>
        <servlet-name>UserLogin</servlet-name>
        <url-pattern>/servlet/login</url-pattern>
    </servlet-mapping>  

login.jsp

<form name="login" action="<%=request.getContextPath()%>/servlet/login" method="post">

</form>

サーブレット:ログインチェック。エラーメッセージだけをログインページに送信して、次のようなメッセージを表示することもできます。

res.sendRedirect(req.getContextPath()+"/webpages/login.jsp?login=failed");

また、login.jspでは、パラメーターrequest.getParameter( "login")を取得して、適切なメッセージを表示できます。

于 2012-10-01T08:04:48.583 に答える
0
  1. html form タグにアクションを追加します。
  2. action は LoginServlet URL です。
于 2012-10-01T04:13:11.767 に答える
0

これを行う標準的な方法を使用する方が簡単です。

  1. jspユーザーからの入力を受け取るためのフォームを含むページを用意します。
  2. データservletを処理する必要があります。
  3. 問題がある場合は、エラー メッセージを設定し、ユーザーをログイン ページにリダイレクトします。それ以外の場合は、彼を目的地にリダイレクトします。
  4. フォームのアクションをサーブレットのアドレスに設定することを忘れないでください。
于 2012-10-01T04:45:39.337 に答える