簡體   English   中英

當我登錄時,jsp表單不操作servlet

[英]when i was login , jsp form doesn't action servlet

我正在嘗試使用Java Servlet和JSP創建Web應用程序。 當我以管理員身份登錄並嘗試從僅管理員可以看到的jsp表單執行servlet時,我遇到了一個問題。

我的登錄表格:

<script type="text/javascript" src="./js/login_validation.js"></script>
<form name="loginform" onsubmit="return validationlogin();"method="post"action="Login">
<table><tr>
<td><input type="text" name="username"/></td>
<td><input type="password" name="password"/></td>
<td><input type="submit" name="login" value="login" /></td>
</tr></table></form>

我的登錄Java Servlet:

public class Login extends HttpServlet {
Connection connection;
PreparedStatement ps;
ResultSet rs;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException{
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost/psd";
        String uid = "root";
        String psw = "root";
        String sql = "SELECT name,password,role FROM users where username='"+username+"'";

        try {
            Class.forName(driver);
            connection=DriverManager.getConnection(url,uid,psw);
            ps = connection.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                String name= rs.getString(1);
                String pass= rs.getString(2);
                String role= rs.getString(3);
                if(password.equals(pass)){
                    HttpSession user = request.getSession(true);
                    user.setAttribute("user", name);
                    HttpSession login = request.getSession(true);
                    login.setAttribute("login", "true");
                    if(role.equals("a")){
                        HttpSession r = request.getSession(true);
                        r.setAttribute("role", "admin");
                    }
                    else if(role.equals("p")){
                        HttpSession r = request.getSession(true);
                        r.setAttribute("role", "pro");
                    }
                    else{
                        HttpSession r = request.getSession(true);
                        r.setAttribute("role", "student");
                    }
                }
            }
            connection.close();
            response.sendRedirect("index.jsp");
        }
        catch(SQLException sx){
        } 
        catch (ClassNotFoundException ex) {
            Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

現在,當我以管理員身份登錄時,我想創建一個新用戶。

我的創建用戶表單:

<script type="text/javascript" src="./js/register_validation.js"></script>
<form name="createuser" onsubmit="return validationregister();"
method="post" action="Admincreateuser">
<table>
<tr><td>name</td><td>:</td><td width="210px"><input type="text" name="name"/></td></tr>
<tr><td>surname</td><td>:</td><td><input type="text" name="surname"/></td></tr>
<tr><td>username</td><td>:</td><td width="210px"><input type="text" name="username"/>
</td></tr>
<tr><td>e-mail</td><td>:</td><td width="210px"><input type="email" name="email"/>
    </td></tr>
<tr><td>password</td><td>:</td><td width="210px"><input type="password" name="pass1"/>
    </td></tr>
<tr><td>repeat password</td><td>:</td><td width="210px"><input type="password" 
    name="pass2"/></td></tr>
<tr><td>role</td><td>:</td><td width="210px">
    <select name="role">
    <option value="s">student</option>
    <option value="p">professor</option>
    <option value="a">administrator</option>
    </select>
</td></tr>
<tr><td><td></td></td><td align="left">
    <input type="reset" value="clean" onclick="cleanregister();"/>
    <input type="submit" name="createuser" value="create user"/>
</td><td></td></tr>
</table>
</form>

我的創建用戶Java Servlet:

public class Admincreateuser extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String name=request.getParameter("name");
        String surname=request.getParameter("surname");
        String email=request.getParameter("email");
        String username=request.getParameter("username");
        String password=request.getParameter("pass1");
        String role=request.getParameter("role");
        if(name==null || surname==null || email==null || username==null || 
            password==null){
            response.sendRedirect("index.jsp?cuser");
        }
        else{
            Connection connection;
            PreparedStatement ps;

            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost/psd";
            String uid = "root";
            String psw = "root";
            String sql = "INSERT INTO users 
            (name,surname,email,username,password,role) VALUES ('"+name+"', 
            '"+surname+"', '"+email+"', '"+username+"', '"+password+"','"+role+"');";
            try {
                Class.forName(driver);
                connection=DriverManager.getConnection(url,uid,psw);
                ps = connection.prepareStatement(sql);
                ps.executeUpdate();
                connection.close();
            }
            catch(SQLException sx){
            } 
            catch (ClassNotFoundException ex) {
            }
        }
    }
}

我的注銷Java Servlet:

public class Logout extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //request.getSession(false).setAttribute("login", null);
        //request.getSession(false).setAttribute("role", null);
        request.getSession(false).invalidate();
        response.sendRedirect("index.jsp");
   }
}

我的web.xml:

<servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>log.Login</servlet-class>
</servlet>
<servlet>
    <servlet-name>Logout</servlet-name>
    <servlet-class>log.Logout</servlet-class>
</servlet>
<servlet>
    <servlet-name>Admincreateuser</servlet-name>
    <servlet-class>admin.Admincreateuser</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Logout</servlet-name>
    <url-pattern>/Logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Admincreateuser</servlet-name>
    <url-pattern>/Admincreateuser</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

這是我的問題。 我以管理員身份登錄,進入createuser表單,填寫空格,然后單擊提交... Admincreateuser servlet無法啟動,該站點將我重定向到主頁,然后注銷。

還有一件事,我刪除了創建用戶表單,只放了一個提交按鈕,它沒有任何操作和方法。 當我單擊它時,相同的結果將我注銷並返回主頁。

當我在url index.jsp?cuser上寫並且我沒有登錄時,填寫表格並提交我的servlet工程,然后我可以創建一個用戶。 但是當我出於某種原因登錄時,servlet不起作用

如果這有助於我的index.jsp:

<%@page contentType="text/html;charset=UTF-8"%>
    <jsp:include page="includes/head.jsp"/>
<%
    if(session.getAttribute("login")==null){
%>
    <jsp:include page="includes/loginform.jsp"/>
<%
    }
    else{
%>    
    <jsp:include page="includes/logoutform.jsp"/>
<%
    }
%>
    <jsp:include page="includes/head2.jsp"/>
<%
    if(session.getAttribute("role")=="admin"){
%>
        <jsp:include page="includes/navbaradmin.jsp"/>
<%
    }
    else if(session.getAttribute("role")=="pro"){
%>
        <jsp:include page="includes/navbarpro.jsp"/>
<%
    }
    else if(session.getAttribute("role")=="student"){
%>
        <jsp:include page="includes/navbarstudent.jsp"/>
<%
    }
    else {
%>
         <jsp:include page="includes/navbar.jsp"/>
<%
    }
%>
<%
    if(request.getParameter("register")!=null)
    {
        if(session.getAttribute("login")==null){
%>
            <jsp:include page="includes/register.jsp"/>
<%      }
        else{
%>
            <jsp:include page="includes/home.jsp"/>
<%
        }
    }
    else if(request.getParameter("welcome")!=null){
        if(session.getAttribute("login")==null){
%>
            <jsp:include page="includes/welcome.jsp"/>
<%      }
        else{
%>
            <jsp:include page="includes/home.jsp"/>
<%      }
    }
    else if(request.getParameter("cuser")!=null){
        if(session.getAttribute("role")=="admin"){
%>
            <jsp:include page="includes/cuser.jsp"/>
<%      }
        else{
%>
            <jsp:include page="includes/home.jsp"/>
<%      }
    }else{
%>
        <jsp:include page="includes/home.jsp"/>
<%
    }
%>
<jsp:include page="includes/footer.jsp"/>

對很多代碼感到抱歉

我是jsp和servlet的新手,感謝您的幫助。 謝謝

我想您的目錄列表有誤,

嘗試一下

<form name="createuser" onsubmit="return validationregister();"
method="post" action="./Admincreateuser">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM