0

大家好,我有一个 LoginServlet,它具有登录用户的功能,但是我有一个 jsp 页面,其中包含我要使用的样式。我不确定如何在 login.jsp 中使用 LoginServlet 中的功能

这是我的 LoginServlet 的全部代码,我知道我已经编写代码来显示一个页面,但我需要使用这个 jsp 页面来显示。这是我得到的一个单项作业,它是我们使用 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
  1. 在 html 表单标签中添加操作。
  2. 操作是 LoginServlet URL。
于 2012-10-01T04:13:11.767 回答
0

使用标准方法更容易做到这一点:

  1. jsp一个带有表单的页面,以接收来自用户的输入。
  2. 有一个servlet来处理数据。
  3. 如果出现问题,设置错误消息并将用户重定向到登录页面。否则将他重定向到目的地。
  4. 不要忘记将表单的操作设置为 servlet 的地址。
于 2012-10-01T04:45:39.337 回答
0

可以这样调用servlet: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>  

登录.jsp

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

</form>

Servlet:登录检查,您也可以将错误消息发送到登录页面并显示消息,例如,

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

在 login.jsp 中,您可以检索参数 request.getParameter("login") 并显示正确的消息

于 2012-10-01T08:04:48.583 回答