【问题标题】:redirecting form jsp in Web-inf to servlet in javaResources through href in通过href将Web-inf中的表单jsp重定向到javaResources中的servlet
【发布时间】:2014-01-22 22:28:26
【问题描述】:

这是我的 Login.jsp 页面

<form name="login" action="ValidateServlet" method="post">  
<input type="hidden" name="pagename" value="login"/>   
<table>  

<tr>  
<td><b>USERNAME:</b><input type="text" name="txtUsername"/> </td>  
</tr>  

<tr>  
<td><b>PASSWORD:</b><input type="password" name="txtPassword"/></td>  
</tr>  

<tr>  
<td><input type="SUBMIT" value="SIGN IN"/></td>  
</tr>  

<tr>  
<td><a href= "/PasswordServlet">Forgot Password</a></td>  
</tr>  
<tr>  
<td><a href= "/SignUp"> Create New user </a></td>  
</tr>  
</table>  
</form>` 

这是我的 SignupServlet

protected void doPost(HttpServletRequest request, HttpServletResponse response throws          
 ServletException, IOException {  
 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/WebPages/Signup.jsp");  
 rd.forward(request, response);  
}  

}

这是我的 web.xml

<servlet>  
    <servlet-name>SignupServlet</servlet-name>  
    <servlet-class>com.affiliate.servlet.SignupServlet</servlet-class>  
</servlet>  

<servlet-mapping>  
    <servlet-name>SignupServlet</servlet-name>  
    <url-pattern>/SignUp</url-pattern>  
</servlet-mapping>  

Login.jspWebcontent/WEB-INF/WebPages/Login.jspJavaResources/src/com.affiliate.servlet/SignupServlet 中的 SignupServlet 但我的登录没有重定向到 SignupServlet。我对我的 href 和 form 操作有疑问。请在这方面帮助我。

【问题讨论】:

  • 可能只是一个错字,但您始终将 jsp 称为 Login.jsp 但 servlet 引用 Signup.jsp - 请重新检查所有相关组件的名称。此外,当您将 servlet 映射到 /SignUp 时,为什么要使用 &lt;form name="login" action="ValidateServlet" method="post"&gt;
  • 删除 web-inf protected void doPost(HttpServletRequest request, HttpServletResponse response throws ServletException, IOException { RequestDispatcher rd = request.getRequestDispatcher("/WebPages/Signup.jsp"); rd.forward(request, response); }

标签: java jsp servlets


【解决方案1】:

改变

<a href= "/SignUp"> Create New user </a>
          ↑

<a href= "SignUp"> Create New user </a>  

anchor tag 中没有可用的post 方法。需要修改SignupServlet中的代码

protected void doGet(HttpServletRequest request, HttpServletResponse response throws          
  ServletException, IOException 
{  
   RequestDispatcher rd = request.getRequestDispatcher("Signup.jsp");  
   rd.forward(request, response);  
}  

如果您想使用a 标签进行post 请求,请参考POST from an tag

【讨论】:

  • 这是我在更改我的代码时遇到的错误,因为你说类型状态报告消息 /Affiliate/WebPages/Signup.jsp 描述请求的资源不可用。
  • @user3222718 :这意味着它现在正在重定向,只是找不到 Signup.jsp 文件。查看我更新的帖子。
【解决方案2】:
replace

<a href= "/PasswordServlet">Forgot Password</a> 
<a href= "/SignUp"> Create New user </a>

<a href= "PasswordServlet">Forgot Password</a> 
<a href= "SignUp"> Create New user </a>

Remove "/" before Servlet URL Pattern

【讨论】:

  • 这是我 12 分钟前发布的内容。
【解决方案3】:

更改此代码

 protected void doPost(HttpServletRequest request, HttpServletResponse response throws          
 ServletException, IOException {  
 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/WebPages/Signup.jsp");  
 rd.forward(request, response);  
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response throws          
 ServletException, IOException {  
getServletContext().getRequestDispatcher("WEB-INF/WebPages/Signup.jsp").forward(request, response);
}  

【讨论】:

  • @fvu 我的登录页面是一个表单,在提供用户名和密码时将重定向到 validateServlet 进行进一步处理。同样在登录表单中,我有两个href,一个是如果用户忘记了他/她的密码,将点击forgotPassword,这会将他引导到某个servlet。并且在按下创建新用户时,它将重定向到 SignupServlet,并且 SignupServlet 有一个调度程序来重定向到 Signup.jsp。 Login.jsp 和 Signup.jsp 都在 WEB-INF/WebPages 目录中,但出于安全目的,我有一个 servlet 将其从 login.jsp 重定向到 Signup.jsp
  • 谢谢你,我把protected void doPost(HttpServletRequest request, HttpServletResponse response throws ServletException, IOException { getServletContext().getRequestDispatcher("/WebPages/Signup.jsp").forward(request, response); } 改为protected void doPost(HttpServletRequest request, HttpServletResponse response throws ServletException, IOException { getServletContext().getRequestDispatcher("WEB-INF/WebPages/Signup.jsp").forward(request, response); }
  • 看起来我是最接近的,除了 web-inf
  • 哦,对不起,我没有在评论中知道如何在这个论坛中编写代码,我是新手,对不起,非常感谢你,感谢@Aniket 告诉我关于 href 中的 doGet() 方法它有效...
  • 你需要关闭这个问题,因为它已经回答了......通过给正确的打勾
【解决方案4】:

在您的 login.jsp 中以下列方式调用 SignUp servlet

<td><a href= "SignUp"> Create New user </a></td> 

并在您的 doGet 方法中注册 servlet

RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/webpages/Signup.jsp");  
         rd.forward(request, response); 

因为当您从链接或 href 调用 servlet 时,doGet 方法会运行。希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多