【问题标题】:Request dispatcher forward method not working in do post method on servletRequestdispatcher forward 方法在 servlet 中的 dopost 方法中不起作用
【发布时间】:2017-10-15 05:17:34
【问题描述】:

在 Servlet 的 doGet() 方法中创建时,请求调度程序中的 forward 方法可以正常工作。但在 dopost 方法中使用时不起作用。同样在 Jsp 文件中,我将该方法声明为 doPost。以下是我在 servlet 中的代码。

@WebServlet(name = "SignUpServlet")
public class SignUpServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    ApplicationContext ctx = new ClassPathXmlApplicationContext("lk/ruh/uniAssist/spring/SpringXMLConfig.xml");
    SignUPService signUpservice = (SignUPService) ctx.getBean("signUpservice");


    String username = request.getParameter("username");
    String studentName = request.getParameter("studentName");
    String regNo = request.getParameter("regNo");
    String pwd = request.getParameter("pwd");
    String department = request.getParameter("department");
    String semester = request.getParameter("semester");

    System.out.println(username);
    System.out.println(studentName);
    System.out.println(regNo);
    System.out.println(pwd);
    System.out.println(department);
    System.out.println(semester);

    RequestDispatcher requestDispatcher = request.getRequestDispatcher("signup.jsp");

    requestDispatcher.include(request, response);




}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {




}

}

这就是 dopost 方法中的方式。当它采用上述格式时,什么也不会发生。但是当我在 doGet 方法中声明 RequestDispatcher 方法时,它工作正常。这背后的原因是什么。

<div class="login-bottom">
    <h2>Register</h2>
    <form name="signUpForm" id="signup" method="post" action="/signUp">
    <div class="col-md-6">
        <div class="login-mail">
            <input type="text" name="username" placeholder="Username" required="">
            <i class="fa fa-user"></i>
        </div>
        <div class="login-mail">
            <input type="text" name="studentName" placeholder="Name with initials" required="">
            <i class="fa fa-male"></i>
        </div>
        <div class="login-mail">
            <input type="text" name="regNo" placeholder="RegNo (ex:2528)" required="">
            <i class="fa fa-pencil"></i>
        </div>
        <div class="login-mail">
            <input type="password" name="pwd" placeholder="Password" required="">
            <i class="fa fa-lock"></i>
        </div>
        <div class="login-mail" placeholder="Department">
            Department
            <select name="department" id="depSelector" class="form-control1">
                <option>Civil and Environment Eng.</option>
                <option>Electrical and Information Eng.</option>
                <option>Mechanical and Manufacturing Eng.</option>
            </select>
        </div>
        <div class="login-mail" placeholder="Department">
            Semester
            <select name="semester" id="semSelector" class="form-control1">
                <option value="1">1 Semester</option>
                <option value="2">2 Semester</option>
                <option value="3">3 Semester</option>
                <option value="4">4 Semester</option>
                <option value="5">5 Semester</option>
                <option value="6">6 Semester</option>
                <option value="7">7 Semester</option>
                <option value="8">8 Semester</option>
            </select>
        </div>
    </div>
    <div class="col-md-6 login-do" align="center">
        <img src="images/icon.png" style="height: 200px; width: 200px;">
        <label class="hvr-shutter-in-horizontal login-sub">
            <input type="submit" value="Submit">
        </label>
        <p>Already register</p>
        <a href="signin.jsp" class="hvr-shutter-in-horizontal">Login</a>
    </div>
    <div class="clearfix"></div>
    </form>
</div>

这里是相关的jsp代码。

我的整个网络 Xml 代码

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">

<!--servlet declaration-->
<servlet>

    <servlet-name>TimeTableServlet</servlet-name>
    <servlet-class>lk.ruh.uniAssist.servlet.TimeTableServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>coursesServlet</servlet-name>
    <servlet-class>lk.ruh.uniAssist.servlet.coursesServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>SignInServlet</servlet-name>
    <servlet-class>lk.ruh.uniAssist.servlet.SignInServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>SignUpServlet</servlet-name>
    <servlet-class>lk.ruh.uniAssist.servlet.SignUpServlet</servlet-class>
</servlet>


<!--Servlet Mapping-->

<servlet-mapping>
    <servlet-name>TimeTableServlet</servlet-name>
    <url-pattern>/timeTable</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>coursesServlet</servlet-name>
    <url-pattern>/courses</url-pattern>
</servlet-mapping>


<servlet-mapping>
    <servlet-name>SignInServlet</servlet-name>
    <url-pattern>/signIn</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>SignUpServlet</servlet-name>
    <url-pattern>/signUp</url-pattern>
</servlet-mapping>

PS:在 URL 中使用 signup.jsp 时效果很好。但不适用于映射的 URL /signUp。这就是我要解决的问题

【问题讨论】:

  • 看起来您缺少很多相关代码。
  • 我很惊讶这个问题已经有 3 个答案了。
  • 您需要发布您的 web.xml 和更多的 servlet 类(包括方法签名)。没有这两个关键信息,任何人都无法给你一个实际的答案。
  • @shinjw 我已经添加了所有文件。那么,当上述请求调度程序方法在 doPost 方法中声明时,任何人都可以告诉我为什么我不能使用 URL /signUp 访问网页的原因。但是,当我在 doGet 中编写请求调度程序命令时,它可以正常工作。我需要知道两种方法之间的区别。提前致谢
  • 我找到了解决方案。这背后的原因是因为默认情况下 JSP 调用 Http Get 方法。

标签: java jsp servlets forward requestdispatcher


【解决方案1】:

确保在表单标签 method=post 和你的 servlet 类中覆盖你的方法 doPost(HttpServletRequest req, HttpServletResponse resp)。

默认表单标签方法是get,你的servlet类需要重写方法doGet(HttpServletRequest req, HttpServletResponse resp)。

如果您不匹配,您将得到 R.E- HTTP 方法 GET 不受此 URL 支持(即 HTTP 状态 405 错误) P.S-完成文件。

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2014-06-02
    • 2013-05-26
    • 2014-09-27
    • 1970-01-01
    • 2011-08-18
    • 2014-04-14
    • 2012-02-27
    • 2011-02-01
    相关资源
    最近更新 更多