2015-03-31 13 views
0

对于我们正在学习关于servlet的学校,虽然我了解他们背后的想法,我不确定如何在实践中使用它们。对于一部分工作,我们必须在包含一个按钮的netbeans中创建一个网页,当它按下时,它必须调用一个servlet来显示'Hello,World!'消息。的Java Servlet的 - 让世界你好出现在按下按钮

我有我的网页, 'GetHelloMessage.xhtml'

<body> 
     <div>Click button to show message.</div> 
     <p></p> 
     <button type="button">Get Message</button> 
</body> 

和 'HelloWorldServlet.java'

@WebServlet(urlPatterns = {"/HelloWorldServlet"}) 
public class HelloWorldServlet extends HttpServlet 
{ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException 
    { 
     response.setContentType("text/html"); 

     PrintWriter out = response.getWriter(); 
     out.println("<h1>Hello, World!</h1>"); 
    } 
} 

我怎样才能调用Servlet当用户按下按钮?

+0

您是否使用XHTML,而不是JSP?当发出HTTP GET请求时,调用'doGet()'方法。为了显示一个消息,当点击一个按钮(这又需要一个提交按钮 - '或者你需要使用AJAX)时,你需要覆盖'在关联的Servlet中的doPost()方法。您可以在Servlet标签[Wiki](http://stackoverflow.com/tags/servlets/info)中找到基本的启动示例。 – Tiny 2015-03-31 23:19:45

+0

@Tiny我们没有使用任何JSP仅XHTML。我改变了我的按钮类型提交,但点击时没有任何反应。我是否需要将servlet链接到按钮?这两个文件都在同一个netbeans项目中。在XHTML位于我的项目> Web页> GetHelloMessage.xhtml内和servlet位于我的项目>源包>缺省包> HelloWorldServlet.java – hjalpmig 2015-03-31 23:30:15

回答

1

得到它的工作,我不得不编辑GlassFish的-web.xml中(位于我的项目> WEB-INF),并添加如下代码:

<servlet> 
     <servlet-name>HelloWorldServlet</servlet-name> 
     <servlet-class>HelloWorldServlet</servlet-class> 
</servlet> 

而且在GetHelloMessage.xhtml:

<form action="HelloWorldServlet" method="GET"> 
    <button type="submit">Get Message</button> 
</form> 
0

您需要使用您的标记按钮标记内,以将数据发送到你的servlet,就像这样:

<body> 
    <div>Click button to show message.</div> 
    <p></p> 
    <button type="button"><a href="helloworldservlet.do">Go to Servlet</a> 
    </button> 
</body> 

请注意,我现在用的。做域名和小写字母,您可以使用@ WebServlet(“/ helloworldservlet.do”)@WebServlet的intead(urlPatterns = {“/helloworldservlet.do”})。

做就像我说的,告诉我,如果它的工作原理。

+0

威尔说,这样,当它被按下它不是一个简单的超级链接添加到按钮将打开网页'helloworldservlet.do'? – hjalpmig 2015-03-31 23:44:46

+0

是的,你也可以使用表单标签,因为你正在使用Servlet中的doGet方法。但我认为这种方式应该工作,因为你不从你的.xhtml文件发送参数。 – 2015-03-31 23:47:09

+0

不要忘记选择我的答案,如果它的作品。 – 2015-03-31 23:57:07

0

有几种方法可以调用servlet,但只需要使用aform标签即可。

<a href='HelloWorldServlet'>Get Message</a> 

<form action='HelloWorldServlet'> 
    <button>HelloWorldServlet</button> 
</form>