更改目标JSP页面和servlet

时间:2013-03-26 04:13:03

标签: java jsp servlets

我是JSP和Servlet的新手,所以请耐心等待一段时间! 我对JSP和Servlet之间的通信有一个问题。

我正在尝试创建一个LogIn页面。

这是我的LogIN索引JSP页面

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
    <head><title>  index.jsp</title></head>
    <body bgcolor="orange">
    <h2> <font color=white> JSP index.jsp at</font>
            <%= request.getContextPath () %>
            <font color=white>
            </font></h2><hr>


            <form action="LibrarySysServlet" method ="POST">
            <font color=navy><h3>Login</h3>
                <table>
                <tr>
                    <td> MemberId </td>
                    <td align="left"><input type="text" name="memId" length="30"/></td>
                </tr>
                <tr>
                    <td> Password </td>
                    <td align="left"><input type="text" name="password" length="30"/></td>
                </tr>
                </table>
                <br>
                <p><input type="submit" value="Submit"/></p>

                </font>
            </form>

            <br>
    </body>
</html>

我真的很困惑在登录时为索引页面的表单操作放置什么,因为目标根据logIn是否正确而更改。

对于我的Servlet方面,我试图在索引页面中扫描并通过函数传递它以检查logIn是否正确并根据不同的答案重定向它。

然而,在运行时,它不会重定向,但它只会继续执行表单操作中指定的任何内容。

代码的简短片段(因为它太长而没有粘贴整个东西):

    RequestDispatcher dispatcher;
                ServletContext servletContext = getServletContext(); //links to index.JSP

                String page = request.getPathInfo();
                page = page.substring(1);


                if ("index".equals(page)) {
                    if (logIn(request)) {
                      dispatcher= servletContext.getRequestDispatcher("/result.jsp");
                     } else {
                     dispatcher= servletContext.getRequestDispatcher("/Menu.jsp");
                     }
                 }

帮助真的很困惑!我做错了什么?

3 个答案:

答案 0 :(得分:0)

  RequestDispatcher dispatcher;
                ServletContext servletContext = getServletContext(); //links to index.JSP

               //check here your username and password and put into a variable true or false



                    if (variable== true) {
                      dispatcher= servletContext.getRequestDispatcher("/result.jsp");
                     } else {
                     dispatcher= servletContext.getRequestDispatcher("/Menu.jsp");
                     }
             }

答案 1 :(得分:0)

最好使用response.sendRedirect(“{url}”)而不是调度程序。

同时测试你的logIn方法,看看它是否按你的意愿工作

答案 2 :(得分:0)

您可以利用容器并使用基于FORM的身份验证。在web.xml中:

   <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
         <form-login-page>login.html</form-login-page>
         <form-error-page>login_error.html</form-error-page>
      </form-login-config>
   </login-config>

然后在login.html:

   Please log in:
   <form method="POST" action="j_security_check">
      <input type="text" name="j_username">
      <input type="password" name="j_password">
      <input type="submit" value="Login">
   </form>

您必须使用j_security_check,j_username和j_password才能生效。