采用Jetty搭建简单的WebApplicationServer
来源:互联网 发布:禁止淘宝网页跳转到app 编辑:程序博客网 时间:2024/05/19 08:36
一、基本设置
希望采用Web的方式,远程对服务的配置进行管理,考虑到Jetty作为Web容器是纯JAVA写的,并且能够很好的与JAVA应用程序集成在一起使用,于是就采用它了。下面是对搭建Jetty应用的记录过程。
当前的Jetty版本为:jetty-6.1.14,在Eclipse新建一个工程名为Test,并新建包:test.jetty,然后从下载的Jetty包中的如此路径:jetty-6.1.14/examples/embedded/src/main/java/org/mortbay/jetty/example拷贝JAVA类OneWebApp.java到test.jetty包中,在Eclipse中打开并修改其包名为test.jetty,代码不用作任何修改,因为这已经是一个现成的WebServer了,源码如下:
package test.jetty;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
public class OneWebApp
{
public static void main(String[] args)
throws Exception
{
String jetty_default=new java.io.File("./start.jar").exists()?".":"../..";
String jetty_home = System.getProperty("jetty.home",jetty_default);
Server server = new Server();
Connector connector=new SelectChannelConnector();
connector.setPort(Integer.getInteger("jetty.port",8080).intValue());
server.setConnectors(new Connector[]{connector});
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(jetty_home+"/webapps/test");
webapp.setDefaultsDescriptor(jetty_home+"/etc/webdefault.xml");
server.setHandler(webapp);
server.start();
server.join();
}
}
在工程Test所在路径下面新建目录lib,并将Jetty服务需要的最小JAR包拷贝到该目录,JAR包有:ant-1.6.5.jar、commons-logging-1.0.4.jar、core-3.1.1.jar、jetty-6.1.14.jar、jetty-util-6.1.14.jar、jsp-2.1.jar、jsp-api-2.1.jar、servlet-api-2.5-6.1.14.jar,并加入到ECLIPSE的CLASSPATH中。
这个时候,在Test目录下再新建etc、webapps两个目录,将解压打开的Jetty目录下etc目录下的webdefault.xml拷贝到新建的etc目录、将Jetty目录下webapps目录的test目录也拷贝到新建的webapps目录下。然后直接在Eclipse中,点右键在该类文件上,选择“Run as-->Java Application”,此时服务就已经启动起来了,打开浏览器,输入:http://localhost:8080,就可以看到如下页面了:
到此为止,一个简单的应用服务就搭建起来了,没有写一句代码,因为这些Jetty已经为我们考虑到了。
二、高级应用
1、编写Servlet
以上的设置只是满足了我们可以将一个静态页面拷贝到webapps的test目录下,并可以通过浏览器打开,但是还不能够处理我们在页面的输入框中输入一些东西,将其写入文件或者是数据等运算操作。
这个时候,我们要在当前应用的基础之上配置自己的Servlet,用以处理特定的业务,编写如下简单Servlet:
package test.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Fenglb
* @version 1.0
* 创建时间:2009-8-19 下午02:06:47
* 类说明:Servlet
*/
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("calling MyServlet");
Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String name = (String)e.nextElement();
String value=request.getParameter(name);
System.out.println("name="+name+":value="+value);
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
为了让该Servlet能够工作,我们需要将其配置在具体应用的/WEB-INF/web.xml文件中,如这里应该配置在“Test工程所在目录/webapps/test/WEB-INF/web.xml”文件中,在其中加入如下代码:
<!--配置一个Servlet类,并取名为httpprocesserservlet-->
<servlet>
<servlet-name>httpprocesserservlet</servlet-name>
<servlet-class>
test.servlet.MyServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!--配置请求处理映射,就是前台通过什么样的路径请求通过这处理,这里就配置为前台页面中往后台提交时,
form的action为"httpprocesserservlet"时,通过测试的Servlet处理-->
<servlet-mapping>
<servlet-name>httpprocesserservlet</servlet-name>
<url-pattern>/httpprocesserservlet</url-pattern>
</servlet-mapping>
新建一个HTML页面,名称随意,内容如下,不过form的action一定要为"httpprocesserservlet":
<%@ page contentType="text/html; charset=gbk" %>
<HTML>
<HEAD>
<TITLE>MyServlet Test</TITLE>
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache,no-store">
</HEAD>
<BODY>
<form action="/httpprocesserservlet" method="post" name="form1">
<table>
<tr>
<td><input type="text" name="mytext" size="20">
</td>
<td>
<input type="submit" name="mysub" value="提交">
</td>
</tr>
</table>
</form>
</BODY>
</HTML>
我就将该页面放于test应用的根目录下,并命名为"myservlet.html",在浏览器中打入:http://localhost:8080/myservlet.html,就可以看到该页面如下:
随意在框中输入内容,就可以在后台看到有输出,这表示配置正确了。
2、编写过滤器
但是这个时候你会发现一个问题,递交到后台的中文全部是乱码,这个为了处理乱码的问题,我们就需要为其设置编码,最好的方式就是编写过滤器了,如下代码:
package test.servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
* @author Fenglb
* @version 1.0
* 创建时间:2009-8-20 上午09:23:29
* 类说明:过滤器
*/
public class MyFilter implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException {
System.out.println("Calling MyFilter");
HttpServletRequest request = (HttpServletRequest) srequest;
request.setCharacterEncoding("GBK");
chain.doFilter(srequest, sresponse);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
将该过滤器也配置在web.xml中,做如下配置:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>test.servlet.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
到此为止,基本的框框架架都有了,要做什么样的具体应用就可以在此上面进行扩展操作了。
- 采用Jetty搭建简单的WebApplicationServer
- 采用Jetty搭建简单的WebApplicationServer
- 通过Jetty搭建一个简单的Servlet运行环境
- 通过Jetty搭建一个简单的Servlet运行环境
- Java Web 学习笔记之九:利用Jetty+restEasy搭建简单的rest web service
- JFinal及Jetty环境的搭建
- Maven项目的搭建过程+jetty
- Jetty搭建简单服务器,修改服务器默认编码
- 最简单的Eclipse添加jetty插件
- 二.配置简单的嵌入式jetty
- Jetty上的简单MVC容器设计
- [深入浅出Jetty 03]简单的RESTful入门
- linux上jetty的简单使用
- jetty嵌入式应用的简单案例
- maven项目中采用jetty插件启动每次修改代码都会自动重启的问题解决
- jetty环境搭建备忘
- jetty eclipse环境搭建
- jetty搭建http服务器
- Oracle select distinct
- LeetCode Begin
- myeclipse+tomcat控制台日志出现问号
- MD5
- Tomcat部署项目jar包冲突问题
- 采用Jetty搭建简单的WebApplicationServer
- Aspose.words Mail Merge初识
- Android:自定义View实现水波进度效果
- HCE助MapReduce提升资源利用率
- Android studio如何使用SVN进行版本控制
- linux device name
- App Store 上架审核、被拒修正
- 项目回顾案例
- Win7 C盘越来越小怎么办?