2015-03-31 1 views
0

В школе мы узнаем о сервлетах, и хотя я понимаю идею, стоящую за ними, я не уверен, как их использовать на практике. Для части работы мы должны создать веб-страницу в netbeans, которая содержит кнопку, и при нажатии она должна вызывать сервлет, чтобы отобразить сообщение «Hello, World!».Яркие сервлеты - Создайте мир привет на кнопке

У меня есть веб-страницу, '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>"); 
    } 
} 

Как я могу вызвать сервлет, когда пользователь нажимает на кнопку?

+0

Вы используете XHTML и не JSP? Метод 'doGet()' вызывается, когда делается запрос HTTP GET. Чтобы отобразить сообщение, когда нажата кнопка (для которой требуется кнопка отправки - '' или вам нужно использовать AJAX), вам необходимо переопределить ' doPost() 'в соответствующем Servlet. Основные примеры запуска можно найти в теге Servlet [Wiki] (http://stackoverflow.com/tags/servlets/info). – Tiny

+0

@Tiny мы не используем JSP только XHTML. Я изменил тип кнопок для отправки, но при нажатии ничего не происходит. Мне нужно как-то «связать» сервлет с кнопкой? Оба файла находятся в одном проекте netbeans. xhtml находится в разделе «Мой проект»> «Веб-страницы»> «GetHelloMessage.xhtml», и сервлет находится в «Мой проект»> «Исходные пакеты»> пакет по умолчанию> HelloWorldServlet.java – hjalpmig

ответ

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

вам нужно использовать тег внутри кнопки тега, чтобы отправить данные в сервлет, как это:

<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 (urlPatterns = {"/helloworldservlet.do"}).

сделайте так, как я сказал и скажите, если это сработает.

+0

Будет ли это не просто добавлять гиперссылку на кнопку так, чтобы при ее нажатии она откроется веб-страница «helloworldservlet.do»? – hjalpmig

+0

Да, вы также можете использовать тег формы, потому что вы используете метод doGet в сервлет. Но я думаю, что этот способ должен работать, потому что вы не отправляете параметры из вашего .xhtml-файла. –

+0

Не забудьте выбрать мой ответ, если он будет работать. –

0

Существует несколько способов вызвать сервлет, но вы можете пойти с a или form тегом.

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

или

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