首先在MyEclipse里创建一个Web Project, 命名为HelloWeb。然后在HelloWeb项目下添加一个hello.jsp页面和一个HelloServlet类。目录结构见下图(application.xml和build.xml是后来手动添加的文件):
编写hello.jsp如下:
- <%@ page import="java.text.*,java.util.*"%>
- <HTML>
- <BODY>
- <%
- Date d = new Date();
- String hoy = DateFormat.getDateInstance().format(d);
- %>
- Hello world! Now the date is:
- <EM> <%= hoy %> </EM>
- </BODY>
- </HTML>
配置application.xml如下,其中web-uri tag的值需要和project deploy后的war包名字保持一致。
- <?xml version="1.0" encoding="UTF-8"?>
- <application>
- <display-name>Hello demo</display-name>
- <module>
- <web>
- <web-uri>HelloWeb.war</web-uri>
- <context-root>/HelloWeb</context-root>
- </web>
- </module>
- </application>
如果现在deploy project,就可以通过http://localhost:8080/HelloWeb/hello.jsp来访问hello.jsp页面了。稍后再做详细解释。
编写HelloServlet.Java如下:
- package com.servlet;
-
- import java.io.IOException;
- import java.io.PrintWriter;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- public class HelloServlet extends HttpServlet {
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- PrintWriter out = response.getWriter();
- out.println("Hello World");
- }
-
- }
配置web.xml文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-
- <servlet>
- <servlet-name>Hello</servlet-name>
- <servlet-class>com.servlet.HelloServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>Hello</servlet-name>
- <url-pattern>/servlet/hello</url-pattern>
- </servlet-mapping>
-
- </web-app>
在MyEclipse Preferences里配置Jboss服务器见下图。只需选择JBoss home的目录和JBoss Server name。
部署project可以通过点击“Deploy MyEclipse J2ee Project to Server”按钮打开project deployment对话框来完成。在下图中的对话框里点击Add按钮,选择上面配置好的JBoss服务器,再点击OK按钮即可完成部署工作。
在%JBOSS_HOME%\bin下执行run.bat(如何有必要,需添加相应启动参数),或者在MyEclispe的工具栏上点击“Run\Stop\Restart MyEclipse Server"按钮即可启动JBoss服务器。
在浏览器里通过http://localhost:8080/HelloWeb/hello.jsp即可访问JSP页面,见下图:
在浏览器里通过http://localhost:8080/HelloWeb/servlet/hello即可访问相应的servlet,见下图:
对于HelloWeb Project我们可以删除apllication.xml文件,用同样的URL来访问JSP页面和servlet。对于默认的web.xml一般会有welcome-file-list标签,如何将welcome-file的值设置成hello.jsp,那么我们可以直接用http://localhost:8080/HelloWeb来访问hello.jsp页面(原来的URL仍然有效)。URL里的HelloWeb就是deploy到JBOSS_DEPLOY目录下WAR包的名字。
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-
- <welcome-file-list>
- <welcome-file>hello.jsp</welcome-file>
- </welcome-file-list>
-
- <servlet>
- <servlet-name>Hello</servlet-name>
- <servlet-class>com.servlet.HelloServlet</servlet-class>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>Hello</servlet-name>
- <url-pattern>/servlet/hello</url-pattern>
- </servlet-mapping>
-
- </web-app>
有关URL的context-root的设置可以参考http://blog.csdn.NET/henry_yqh/article/details/8435412
对于HelloWeb Project的编译部署,我们还可以借助ant来完成。在HelloWeb根目录下新建一个build.xml文件,如下:
- <project name="HelloWeb" default="all" basedir=".">
-
- <property environment="env"/>
- <property name="home.dir" location="${env.JBOSS_HOME}"/>
-
- <property name="source.dir" value="${basedir}/src"/>
- <property name="app.name" value="HelloWeb"/>
- <property name="app.root" value="${basedir}/WebRoot"/>
- <property name="app.server.root" value="${home.dir}/server/vtba"/>
-
- <property name="temp.dir" value="${basedir}/temp"/>
-
- <path id="classpath">
- <pathelement location="${env.CLASSPATH}"/>
- <pathelement location="${home.dir}/server/vtba/lib/servlet-api.jar"/>
- </path>
-
- <target name="all" depends="deploy"/>
-
- <target name="compile" depends="clean">
- <mkdir dir="${app.root}/WEB-INF/classes"/>
- <javac debug="on" srcdir="${source.dir}" destdir="${app.root}/WEB-INF/classes" classpathref="classpath"/>
- </target>
-
- <target name="clean">
- <delete failonerror="false" includeemptydirs="true">
- <fileset dir="${app.root}/WEB-INF/classes"/>
- <fileset file="${app.name}.jar"/>
- </delete>
- </target>
-
- <target name="makeBundle" depends="compile">
- <jar destfile="${app.name}.war" manifest="${app.root}/META-INF/MANIFEST.MF">
- <fileset dir="${app.root}"/>
- </jar>
- </target>
-
- <target name="deploy" depends="makeBundle">
- <copy file="${app.name}.war"
- tofile="${app.server.root}/deploy/${app.name}.war" overwrite="true"/>
- </target>
-
- </project>