将使用注释把我们创建的 JMS 资源直接注入到 servlet中,用于指定变量名和它映射到的名称。接着,我们将添加用于发送 JMS 消息的代码,以及用于添加消息的 HTML 窗体的代码。
右击 web 模块项目,然后选择 New > Servlet 。
键入 PostMessage 作为类名。
输入 web 作为包名,然后单击 Finish 按钮。
单击 Finish 按钮后,类 PostMessage.java 就会在源代码编辑器中打开。在源代码编辑器中,完成以下步骤:
使用注释把 ConnectionFactory 和 Queue 资源注入,方法是添加如下字段声明(以黑体表示):public class PostMessage extends HttpServlet {
@Resource(mappedName="jms/NewMessageFactory")
private ConnectionFactory connectionFactory;
@Resource(mappedName="jms/NewMessage")
private Queue queue;
现在,我们添加用于发送 JMS 消息的代码,方法是在 processRequest 方法中添加以下用黑体表示的代码:response.setContentType("text/html;charset=UTF-8");
// Add the following code to send the JMS message
String title=request.getParameter("title");
String body=request.getParameter("body");
if ((title!=null) && (body!=null)) {
try {
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
ObjectMessage message = session.createObjectMessage();
// here we create NewsEntity, that will be sent in JMS message
NewsEntity e = new NewsEntity();
e.setTitle(title);
e.setBody(body);
message.setObject(e);
messageProducer.send(message);
messageProducer.close();
connection.close();
response.sendRedirect("ListNews");
} catch (JMSException ex) {
ex.printStackTrace();
}
}
PrintWriter out = response.getWriter();
现在,对于用于打印 HTML 和添加消息 web 窗体的代码,我们去掉其注释。在 processRequest 方法中添加如下以黑体表示的代码行:
out.println("Servlet PostMessage at " + request.getContextPath() + "</h1>");
// Add the following code to add the form to the web page
out.println("<form>");
out.println("Title: <input type=''text'' name=''title''><br/>");
out.println("Message: <textarea name=''body''></textarea><br/>");
out.println("<input type=''submit''><br/>");
out.println("</form>");
out.println("</body>");
按下 Alt-Shift-F 可以为类生成所有必需的导入语句。 注意:为 Connection、 ConnectionFactory、 Session 和 Queue 选择要导入的库时, 确保已经导入了 java.jms 库。
保存对文件所做的修改。
Java EE应用程序入门(6)
时间:2011-07-06 netbeans.org
运行项目
现在,我们可以运行刚才创建的项目。运行项目时,我们想让浏览器打开带有 ListNews servlet 的页面。为此,我们需要在 Enterprise Application 的 Properties 对话框中指定 URL。此 URL 相对于我们应用程序的上下文路径。输入相对 URL 之后,我们就可以从 Projects 窗口中编译 |