[英]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.