你需要一個servlet(< - 點擊鏈接,它不包括僅用於裝飾)。
爲了這一點,前提是你要指定一個Servlet 3.0容器(Tomcat的7,Glassfish的3等),那麼就創建這個類:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
new MyClass().print();
}
}
和修復你的JSP的<body>
如下(提供該JSP文件被放置在Web內容的根,而不是在一個子文件夾):
<form action="hello" method="post">
<input type="submit" name="myButton" value="button" />
</form>
就是這樣。
該servlet通過@WebServlet
註冊以聽取相對於上下文根的/hello
的URL。指示HTML表單準確提交該URL,相對於JSP頁面本身的URL。 method="post"
將調用servlet的doPost()
方法,其中您可以自由地寫下所需的Java代碼。
如果你想要更細粒度的控制取決於按下的按鈕,然後給這個按鈕一個獨特的名字。
<form action="hello" method="post">
<input type="submit" name="myButton1" value="button1" />
<input type="submit" name="myButton2" value="button2" />
<input type="submit" name="myButton3" value="button3" />
</form>
那麼你可以檢查按下按鈕在servlet的doPost()
方法如下:
if (request.getParameter("myButton1") != null) {
// button1 is pressed.
}
else if (request.getParameter("myButton2") != null) {
// button2 is pressed.
}
else if (request.getParameter("myButton3") != null) {
// button3 is pressed.
}
一個完全不同的另一種方法是去在現有的MVC框架,抽象所有這些樣板走在高度,如JSF,Spring MVC,Struts2等使用JSF,它看起來像這樣(你只需要用它的後繼Facelets來代替原有的JSP; Facelets的樣子是如何在一個理性的JSF教程中解釋的,再次點擊前一段中的「JSF」鏈接詳細信息):
<h:form>
<h:commandButton value="button1" action="#{bean.button1}" />
<h:commandButton value="button2" action="#{bean.button2}" />
<h:commandButton value="button3" action="#{bean.button3}" />
</h:form>
只有這個類不難看,如果/別人的:
@ManagedBean
@RequestScoped
public class Bean {
public void button1() {
System.out.println("button1 invoked");
}
public void button2() {
System.out.println("button2 invoked");
}
public void button3() {
System.out.println("button3 invoked");
}
}
它看起來像你學習Java的Web應用程序。從[JSP](http://stackoverflow.com/tags/jsp/info)和[Servlets](http://stackoverflow.com/tags/servlets/info)SO維基開始將是一件好事。 –
你在哪裏創建一個bean? –
該bean應該是MyClass myclass = new MyClass(),myclass.print()。但我認爲是相同的,只是調用新的MyClass.print() – user1851366