有没有办法直接从JSP页面中的按钮调用servlet?但这不是POST表单提交按钮。它只是一个按钮,它应该调用doGet()
方法来获取一些值并转发到另一个JSP。
这是servlet:
public class PopulateProjectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public PopulateProjectServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List<Project> projects = PopulateProject.getProjects();
request.setAttribute("projects", projects);
request.getRequestDispatcher("/UserHome/Projects.jsp").forward(request, response);
}
这是带有按钮的JSP页面:
</head>
<body>
<input type="button" value="Update" onclick="<%MyServletName.Update(request, response);%>"></input> **<--- I FOUND SOMETHING LIKE THAT BUT DIDNT WORK**
<a href="/EmployeeLeaveForm/UserHome/Projects.jsp"> <button type=submit action="com.eteration.leavesystem.service.PopulateProjectServlet">Projeler</button></a>
<a href="/EmployeeLeaveForm/SharedByAll/Leave.jsp"> <button type=submit>Izin al</button></a>
<a href="/EmployeeLeaveForm/SharedByAll/LeaveCancelUpdate.jsp"> <button type=submit>Guncelle/Iptal et</button></a>
<a href="/EmployeeLeaveForm/SharedByAll/History.jsp"> <button type=submit>Gecmis</button></a>
<a href="/nextpage.jsp"> <button type=submit>cikis</button></a>
</body>
</html>
如何使按钮首先进入servlet,而servlet又转发到JSP页面?
答案 0 :(得分:0)
如果您已经使用Servlet 3.0,请首先使用URL模式放置@WebServlet
注释,让servlet监听指定的URL:
@WebServlet("/populateProjectServlet")
public class PopulateProjectServlet extends HttpServlet {}
现在,servlet侦听URL /populateProjectServlet
。
然后,替换该HTML无效的<a><button>
<a href="/EmployeeLeaveForm/UserHome/Projects.jsp"><button type=submit action="com.eteration.leavesystem.service.PopulateProjectServlet">Projeler</button></a>
由HTML有效的<form><button>
,其中<form action>
指向servlet的URL(请注意,<form>
方法已默认为GET!):
<form action="${pageContext.request.contextPath}/populateProjectServlet"><button type="submit">Projeler</button></form>
必要时使用CSS display:inline
以内联方式显示表单。
另一种方法是使用一个链接,其href
指向servlet的URL并引入一些CSS来设置它看起来像一个按钮:
<a href="${pageContext.request.contextPath}/populateProjectServlet" class="button">Projeler</a>
无关,我强烈建议将该JSP放在/WEB-INF
文件夹中,以使最终用户无法直接打开JSP页面而无需先调用servlet。
答案 1 :(得分:-2)
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
List<Project> projects = PopulateProject.getProjects();
request.setAttribute("projects", projects);
request.getRequestDispatcher("/UserHome/Projects.jsp").forward(request, response);
}
抱歉我的英语不好。我正在学习