分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

采用Jetty搭建简单的WebApplicationServer

一、基本设置

希望采用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拷贝JAVAOneWebApp.javatest.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;

publicclassOneWebApp

{

publicstaticvoid 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.jarcommons-logging-1.0.4.jarcore-3.1.1.jarjetty-6.1.14.jarjetty-util-6.1.14.jarjsp-2.1.jarjsp-api-2.1.jarservlet-api-2.5-6.1.14.jar,并加入到ECLIPSECLASSPATH中。

这个时候,在Test目录下再新建etcwebapps两个目录,将解压打开的Jetty目录下etc目录下的webdefault.xml拷贝到新建的etc目录、将Jetty目录下webapps目录的test目录也拷贝到新建的webapps目录下。然后直接在Eclipse中,点右键在该类文件上,选择“Run as-->Java Application”,此时服务就已经启动起来了,打开浏览器,输入:http://localhost:8080,就可以看到如下页面了:

到此为止,一个简单的应用服务就搭建起来了,没有写一句代码,因为这些Jetty已经为我们考虑到了。

二、高级应用

1、编写Servlet

以上的设置只是满足了我们可以将一个静态页面拷贝到webappstest目录下,并可以通过浏览器打开,但是还不能够处理我们在页面的输入框中输入一些东西,将其写入文件或者是数据等运算操作。

这个时候,我们要在当前应用的基础之上配置自己的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;

/**

*@authorFenglb

*@version1.0

*创建时间:2009-8-19下午02:06:47

*类说明:Servlet

*/

publicclassMyServlet extends HttpServlet {

privatestaticfinallongserialVersionUID = 1L;

protectedvoid 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);

}

}

protectedvoid 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>

<!--配置请求处理映射,就是前台通过什么样的路径请求通过这处理,这里就配置为前台页面中往后台提交时,

formaction"httpprocesserservlet"时,通过测试的Servlet处理-->

<servlet-mapping>

<servlet-name>httpprocesserservlet</servlet-name>

<url-pattern>/httpprocesserservlet</url-pattern>

</servlet-mapping>

新建一个HTML页面,名称随意,内容如下,不过formaction一定要为"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;

/**

*@authorFenglb

*@version1.0

*创建时间:2009-8-20上午09:23:29

*类说明:过滤器

*/

publicclass MyFilterimplements Filter{

publicvoid destroy() {

//TODO Auto-generated method stub

}

publicvoid 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);

}

publicvoid 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>

到此为止,基本的框框架架都有了,要做什么样的具体应用就可以在此上面进行扩展操作了。

本文出自:冯立彬的博客

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

采用Jetty搭建简单的WebApplicationServer相关推荐

  1. 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...

    本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...

  2. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系

         我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系.如有需要请关注 "阿黎逸阳的代码" 公众号的后续文章,会手把手教大家用R搭 ...

  3. 使用docker部署nginx搭建简单的idea-2019 jrebel插件激活服务器

    使用docker部署nginx搭建简单的idea-2019 jrebel插件激活服务器 前言 之前用的jrebel激活方式一直都是用的 *lanyus* 大神的 [jrebel激活](http://i ...

  4. springboot+vue搭建简单的聊天网站,从0到上线(腾讯云)

    springboot+vue搭建简单的聊天网站,从0到上线 整体架构简单梳理 云服务器 nginx的基础配置 springboot-eureka简单梳理 聊天功能实现的基础流程 ws的实现 整体架构简 ...

  5. Pytorch:手把手教你搭建简单的卷积神经网络(CNN),实现MNIST数据集分类任务

    关于一些代码里的解释,可以看我上一篇发布的文章,里面有很详细的介绍!!! 可以依次把下面的代码段合在一起运行,也可以通过jupyter notebook分次运行 第一步:基本库的导入 import n ...

  6. SSM+MyBatis-Plus+EasyExcel+腾讯云tianai滑动验证码接入项目搭建+简单实现增、删、改、查、导入、滑动验证码功能

    SSM+MyBatis-Plus+EasyExcel+腾讯云&tianai滑动验证码接入项目搭建+简单实现增.删.改.查.导入.滑动验证码功能 文章末尾附源码 一.什么是SSM框架 SSM框架 ...

  7. Linux下采用ss5搭建sock5服务器使用proxychains进行sock5客户端代理

    Linux下采用ss5搭建sock5服务器&使用proxychains进行sock5客户端代理 1.ss5搭建sock5服务器 1.1下载ss5源码 1.2安装相关yum依赖 1.3编绎安装 ...

  8. 【CyberSecurityLearning 附】使用PHP语言搭建简单的论坛:注册功能实现+PHP个人中心设计+简单留言板

    使用PHP语言搭建简单的论坛 简单留言板 留言 个人中心           登录                验证码           注册                头像          ...

  9. php手游管理系统,搭建简单的游戏管理系统

    这次给大家带来搭建简单的游戏管理系统,搭建简单游戏管理系统的注意事项有哪些,下面就是实战案例,一起来看一下. 一. 分析&布局设计 当前我们项目的界面是这样的: 简单来说,看不出一点管理系统的 ...

最新文章

  1. LeetCode简单题之仅执行一次字符串交换能否使两个字符串相等
  2. Ubuntu双系统Grub启动菜单修复
  3. android ADT学习总结
  4. QT教程1:ubuntu18.04安装QT5
  5. VC6中根据需要显示滚动条
  6. Machine Learning on Spark——第四节 统计基础(二)
  7. P3041-[USACO12JAN]Video Game G【AC自动机,dp】
  8. exe打包工具哪个最好_一键分发工具哪个最好用?30万人选择这款
  9. Codechef之CodeCraft: IIIT Hyderabad
  10. 华为手机连电脑_移动办公利器华为MatePad Pro:能写会画有键盘,能当电脑连手机...
  11. ES常用DSL语句(kibana常用语句)
  12. opencv-python学习一--人脸检测
  13. JDK官方文档(包含所有版本)
  14. 软件考试(一)计算机技术与软件专业技术资格(水平)考试(以下简称软件水平考试)含金量最高,与职称挂钩。
  15. 倪光南李开复景鲲等15位产业领袖纵论中国AI现状:价值重估,落地为王
  16. 【硬件篇之电源纹波噪声测试】
  17. UbuntuNAT内网穿透实现远程访问
  18. 港科夜闻|香港科技大学校长叶玉如教授,新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法...
  19. python查看手机上wifi密码_忘了wifi密码怎么办?用Python查!
  20. CVE-2018-12613 --- 本地文件包含造成远程代码执行漏洞复现

热门文章

  1. 云图说|华为HiLens云上管理平台 花样管理多种端侧设备
  2. 前端开发还可以这么玩?元数据实践分享
  3. 用好CloudIDE提升Web全栈编码效率
  4. 【华为云技术分享】iSulad轻量化容器实践解析
  5. 本科阶段就挑战自动驾驶开发?华为云ModelArts帮你轻松实现!
  6. 某学校有计算机主机1300台,网络互联技术与实践第14章:构建基于静态路由的多层网络.ppt...
  7. c语言 b的作用,在C语言中各个标点符号的作用
  8. php 5.6.29,源码编译安装PHP 5.6.29
  9. pandas中的数据如何转化为张量?
  10. 【Paper-Attack Defense】Adversarial Label-Flipping Attack and Defense for Graph Neural Networks