【发布时间】: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