- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章myeclipse开发servlet_动力节点Java学院整理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在web.xml中可以对同一个servlet配置多个对外访问路径,并如果在web.xml中配置的信息服务器会自动加载部署,而如果是在servlet中进行程序代码的修改,则每次都要重新部署.
首先,在使用myeclipse创建servlet后,会根据所创建的servlet进行到web.xml文件的映射,如下图所示:
经过这个映射之后,在web.xml文件中就自动生成了这个servlet的配置信息:
当然,我们可以在web.xml文件中把这个servlet继续添加一条对外访问路径,使得这个servlet可以从不同路径进行访问,现在我们在服务器开启的情况下,为这个servlet添加一个新的对外访问路径好了:
红框部分是新添加的,这时候服务器在console窗口会自动提示已经重新部署,是的,只要在web.xml中修改的都无需关闭服务器就可以被服务器重新更新加载部署:
那么我们试试新的访问地址:
可以访问!! 。
。
细节二:在web.xml中为servlet配置对外访问路径的<url-pattern>可以使用“*”作为通配符,但是这种只能有两种格式:
一种格式是整个内容只能有“*.扩展名” ,如<url-pattern>*.html<url-pattern>,而如果写成这样<url-pattern>abc/*.html<url-pattern>就是错误的。尤其是<url-pattern>/*.html<url-pattern>也是错误的,不能有“/”,一定要注意。例:
在浏览器可以在通配符位置随便输入:
这样造成了一种伪静态的现象,我们以为是访问一个静态的页面,其实却是一个动态web资源.
另一种格式是以正斜线“/”开头,加自定义路径,以“/*”结尾,如<url-pattern>/abc/*<url-pattern>。这时候连扩展名都任意了。例:
在浏览器的地址栏内可以在通配符位置随便输入,扩展名都不需要:
。
细节三:由细节二导出的多个servlet资源的映射路径如果使用了通配符,就可能发生冲突,那么这时候服务器将会以哪个servlet资源作为响应呢?我们看一下下面的问题,就能明白了:
细节四: 在servlet的整个生命周期内,servlet的init()方法只会被调用一次。而对于servlet的每次访问请求,servlet都会调用service()方法一次。并对于每次的请求访问,servlet都会创建一个新的httpservletrequest请求对象和新的httpservletresponse响应对象。当然在每次请求访问完成之后,这些请求对象和响应对象会立马被销毁,等待下次请求再重新创建,这样就能给服务器减小压力(非并发情况下).
细节五:之前谈到的servlet在服务器部署后,都是只在第一次对该servlet访问时才由服务器创建servlet的实例对象,而如果在web.xml中在某个<servlet>标签下配置<load-on-startup>标签,则该servlet会在服务器启动后就创建实例对象,并执行servlet的初始化init()方法。<load-on-startup>的内容为一个正整数值。该值越小,代表在服务器启动后优先创建servlet对象并执行初始化方法.
细节六:如果某个servlet的映射路径仅仅为一个正斜线“/”,那么这个servlet就称为当前web应用的默认servlet。凡是在web.xml文件中找不到匹配的<servlet-mapping>标签的url,它们的访问请求都是交个默认servlet来处理,也就是说默认servlet用于处理所有其他servlet都不处理的访问请求.
例如我现在创建两个servlet,其中一个有自定义的对外映射路径,而另一个设置成了默认servlet:
要想访问secondservlet就必须按照其对应的路径在浏览器地址栏中键入:
而对于默认servlet,则是在web应用名后随便输:
(如果不输则会显示的是已有的首页index.jsp,为什么呢,请看下面细节六) 。
细节六(重要) :如果我们在自己开发的servlet中没有配置默认servlet,而是直接访问我们web工程下的一个静态web资源的话(如果有),那么我们将能从浏览器中看到这个web资源,记住:请求任何web资源都是以某个servlet来响应回传数据的,那么既然我们没有配置默认servlet的话,为什么能访问到这个资源呢?换句话说,是哪个servlet将我们需要的资源响应给我们看的?答案就是tomcat服务器的默认servlet!!!tomcat服务器的默认servlet在tomcat的【conf】目录下的web.xml文件中设置了映射路径:
从tomcat的web.xml文件中可以看出,其默认servlet在服务器启动就创建实例对象,并且是最早创建的,对外路径已经设置了默认格式。而这个默认servlet会管理每个自定义创建的servlet工程,如果我们没有在自己的web工程中创建默认servlet,那么要访问自己web工程中的某个资源时,tomcat的默认servlet会帮我们将该资源封装成响应对象传回客户端.
例如,我在我的web工程下创建一个1.html页面:
而我去浏览器访问这个页面:
对于这个url,tomcat服务器首先去配对我的servlet是否有对应的映射路径,如果没有,并且如果我没有在自己的web工程中设置默认servlet,那么tomcat的默认servlet就在我的web应用下搜寻http请求的资源,找到并封装成响应对象返回给客户端。如果tomcat的默认servlet找不着所需的资源,那它依然会响应客户端,只是客户端看到的是一些提示找不着该资源,如404提示。另外,根据这个过程,我们在开发自己的servlet时,建议不要将自己的某个servlet映射成默认servlet为好.
接下来,讨论一个首页的问题。除了我们访问web应用中某个特定资源(在浏览器地址上最后键入一个文件名),还会是在键入web应用名之后就发送http请求了,这时候我们看到的也是一个页面,通常称为“首页”,而这个首页,也是由默认servlet来响应的.
例如我使用myeclipse创建一个web应用时就会默认帮我创建一个“index.jsp”文件:
而我在该web应用中没有创建任何servlet,或者即使创建servlet也映射到某个特定的对外url上,那么我在浏览器输入主机地址+web应用名依然能看到这个index.jsp:
由前面所说,这个页面肯定是由tomcat服务器的默认servlet传回给客户端的,那么tomcat服务器为什么是传回这个资源呢,而不是别的资源呢?答案还是在web.xml文件中,还记得之前《tomcat详细用法学习(三)》中定义的首页设置吗,对,就是这个方法,这个方法由默认servlet来管理,我们再来回顾下在tomcat的web.xml文件中的<welcome-file-list>标签:
如果浏览器的输入地址只输入了web应用名,那么tomcat的默认servlet传送这个web应用下的index.html文件,否则传送index.htm文件,再否则传送index.jsp,如果三个都没有那么只能返回404了.
如果我把这段代码注释掉或删掉,再想直接访问web应用名就跟我把index.jsp文件删除一样,tomcat的默认servlet找不到资源,返回404提示(在myeclipse中需要重启服务器):
所以如果我们想为自己的web应用弄出个漂亮首页,只需要在index.jsp中开发就行了,或者另外创建一个index.html文件开发,这个文件会比index.jsp更优先被访问.
细节七:因为我们的开发servlet都要继承servlet接口的某个实现类,那么我们在编写doget方法或者dopost方法的时候很可能调用了某些会抛出异常的方法,那么我们对这些异常只能捕获处理,而不能抛出,这是因为子类在覆盖父类的方法时,不能抛出比父类更多的异常.
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我的支持.
最后此篇关于myeclipse开发servlet_动力节点Java学院整理的文章就讲到这里了,如果你想了解更多关于myeclipse开发servlet_动力节点Java学院整理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
当我创建一个数据库时,我被要求选择默认排序规则,当我创建一个表时,我被要求选择排序规则。 utf8_general_ci 或...拉丁...?区分哪个是对的依据是什么? 最佳答案 A collatio
PHP不会检查单引号 '' 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷。但是,双引号 "" 则不然,php会检查字符串中的变量或者转义
正则(regular),要使用正则表达式需要导入Python中的re(regular正则的缩写)模块。正则表达式是对字符串的处理,我们知道,字符串中有时候包含很多我们想要提取的信息,掌握这些处理字符
在开发过程中,有时需要对用户输入的类型做判断,最常见是在注册页面即用户名和密码,代码整理如下: 只能为中文 ?
]js正则表达式基本语法(精粹): http://www.zzvips.com/article/94068.html 许多语言,包括P
1、首先安装mongodb 1.下载地址:http://www.mongodb.org/downloads 2.解压缩到自己想要安装的目录,比如d:\mongodb 3.创建文件夹d:\mo
我更愿意在 R 中执行以下操作,但我愿意接受(易于学习的)其他解决方案。 我有多个(比如说 99 个)制表符分隔文件(我们称它们为 S1.txt 到 S99.txt)和表格,所有文件都具有完全相同的格
我制作了一个小程序,可以使用数学进行物理计算。 我有几个 if 语句,它们做同样的事情,但变量不同,但它们必须是它们,就好像 TextBox 是空的,int 将是 0。 例子如下: if (first
我正在构建需要扩展框的东西 - 这很好,我可以正常工作。然而,如果你看看这个FIDDLE你会看到它有点乱。我希望有一种方法可以扩展它们所在的盒子,这样它们就不会跳来跳去?那么盒子 3 的左侧会比右侧膨
我相当确定(在 MATLAB 中)应该有一个优雅的解决方案,但我现在想不起来。 我有一个包含 [classIndex, start, end] 的列表,我想将连续的类索引折叠成一个组,如下所示: 这个
维基百科将 XMPP 定义为: ...an open-standard communications protocol for message-oriented middleware based on
我的代码库已经进入了某种状态,希望能够摆脱它 repo 看起来有点像这样(A1、B1、C1 等显然是提交) A1 ---- A2 ---- A3 ---- A4 -
如何整理以下数据框 data.frame(a = c(1,2), values = c("[1.1, 1.2, 1.3]", "[2.1, 2.2]")) a values 1
所以我试图在 Haskell 中生成出租车号码列表。出租车号码是可以用两种不同方式写成两个不同立方体之和的数字 - 最小的是 1729 = 1^3 + 12^3 = 9^3 + 10^3 . 现在,我
我正在使用 roxygen2 来记录我正在开发的包的数据集。我知道你可以 use roxygen to document a dataset ,但是Shane's answer最终建议进行黑客攻击,虽
这个问题在这里已经有了答案: How can I combine two strings together in PHP? (19 个回答) 关闭 5 年前。 提前致歉,尽管我已经尝试并失败了几件不
我有一个大部分整洁的数据框,但有 2 列包含基准,而不是将基准合并为观察结果。我该如何整理,以便将“Facility_score”和“TTP”col_names 添加为每个独特的 FYQ 和 Metr
我有以下输入数据。每一行都是一个实验的结果: instance algo profit time x A 10 0.5 y A
我已经使用 PHP 和 MySQL 实现了搜索。目前我的表格整理是 "utf8_unicode_ci"。问题是,使用此排序规则 "ä"= "a" 是。如果我将排序规则更改为 "utf_bin" 一切正
所以我是 JS 和 Jquery 库的新手。我一直在玩弄一些东西,可以看到它非常不整洁,这就是我希望你们能帮助建议一种更好的方法来实现我想要实现的目标的地方。 目标: 要有多个复选框,其中一些如果被选
我是一名优秀的程序员,十分优秀!