韩顺平servlet笔记必看完整版Word格式.docx
- 文档编号:21176188
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:58
- 大小:1.07MB
韩顺平servlet笔记必看完整版Word格式.docx
《韩顺平servlet笔记必看完整版Word格式.docx》由会员分享,可在线阅读,更多相关《韩顺平servlet笔记必看完整版Word格式.docx(58页珍藏版)》请在冰豆网上搜索。
);
OutputStreamos=();
BufferedReaderbr=newBufferedReader(newFileReader("
d:
\\"
));
Stringbuf="
"
;
while((buf=())!
=null){
());
}
到conf/文件中修改
<
ConnectorconnectionTimeout="
20000"
port="
8088"
(去修给config->
的端口号)protocol="
redirectPort="
8443"
/>
(3)能够正常启动,但是会导航到另外一个页面.
去修改工具->
管理加载项,把默认的导航给禁用即可.
(4)在访问tomcat时候,一定保证tomcat服务器是启动
tomcat的目录结构文件
bin:
启动和关闭tomcat的bat文件
conf:
配置文件
-->
:
该文件用于配置和server相关的信息,比如tomcat启动端口后,配置Host,配置Context即web应用
该文件配置与web应用(web应用就相当于是一个web站点)
:
该文件用户配置tomcat的用户密码和权限
lib目录:
该目录放置运行tomcat运行需要的jar包
logs目录:
存放日志,当我们需要去查看日志的时候,很有用!
当我们启动tomcat错误时候,可以查询信息.
webapps目录:
该目录下,放置我们的web应用(web站点),比如:
建立web1目录下面放置我们的html文件jsp文件..图片...则web1就被当做一个web应用管理起来(☞特别说明tomcat以后支持tomcat5版本还有别的设置)
work:
工作目录:
该目录用于存放jsp被访问后生成的对应的server文件和.class文件
如何去访问一个web应用的某个文件
首页面设置及目录规范结构
现在我们要求:
把文件设置成该web应用的首页,则需要把web应用的目录格式做的更加规范:
①在web文件夹下配置WEB-INF文件夹
②在文件中添加配置的代码:
<
welcome-file-list>
<
welcome-file>
/welcome-file>
/welcome-file-list>
③通过classes目录将来是存放class文件
lib目录将来时存放jar文件
配置当前这个web应用的信息.
tomcat如何去管理虚拟目录
需求:
当我们把web应用放到webapps目录,tomcat会自动管理,如果我们希望tomcat可以管理其它目录下的web应用->
虚拟目录配置
我在d盘有一个web应用.
虚拟目录配置步骤:
1找到文件
2编辑host节点添加Contextpath
在中添加:
Contextpath="
/myweb2"
docBase="
\web2"
myweb2:
是访问时输入的web名,实际取出的是web2中的资源
:
绝对路径下web2中存放资源如:
实际访问时输入的地址:
需要重启tomcat,才能生效.(因为是采用的dom技术讲信息加载到内存中)
context的几个属性的说明
path:
docbase:
reloadable;
如果设为ture,表示tomcat会自动更新web应用,这个开销大,建议在开发过程中,可以设为true,但是一旦真的发布了,则应当设为false;
upackWAR:
如果设为ture,则自动解压,否则不自动解压.
①:
打war包cd:
d/web2然后jar–cvf*
②:
浏览打好的war包Deploy发布后会在webapps中自动生存改文件
配置域名
我们看和一个如何配置自己的主机名:
我们在实际访问网站的过程中,不可能使用的方式去访问网站,实际上使用类似
或者
的方式去访问网站,这个又是怎么实现的呢
看看ie浏览器访问一个web站点的流程.
实现的步骤如下:
(1)在C:
\WINDOWS\system32\drivers\etc下的host文件添加在tomcat的文件添加主机名
Hostname="
appBase="
\web3”>
/"
\web3"
/>
/Host>
(3)在d:
\web3加入了一个/WEB-INF/把设为首页面
如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.
(4)重启生效
tomcat体系的再说明
图:
如何配置默认主机:
在tomcat/conf/文件
Enginename="
Catalina"
defaultHost="
主机名"
>
为什么需要servlet技术
比如需求:
我们希望用户可以贴,用户还可以回复....这样一些和用户可以交互的功能,用普通的java技术就完成不了,sun就开发了servlet技术供程序员使用.
servlet的介绍
1servlet其实就是java程序(java类)
2该java程序(java类)要遵循servlet开发规范
3serlvet是运行在服务端
4serlvet功能强大,几乎可以完成网站的所有功能
5是学习jsp基础
tomcat和servlet在网络中的位置
servlet的生命周期是怎样的/servlet究竟是怎样工作的
UML时序图帮助大家理解
参看execel
面试题:
请简述servlet的生命周期(工作流程)
答:
标准版本:
①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。
如果是直接进行第④步,否则执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用service()方法并将请求和响应作为参数传递进去。
⑤WEB应用被停止或重启之前,Servlet引擎将卸载Servlet,在卸载之前调用Servlet的destroy()方法
1.当serlvet第一次被调用的时候,会触发init函数,该函数会把servlet实例装载到内存.init函数只会被调用一次
2.然后去调用servlet的service函数
3.当第二次后访问该servlet就直接调用service函数.
4.当web应用reload或者关闭tomcat或者关机都会去调用destroy函数,该函数就会去销毁serlvet
5.Servlet的生命周期
当客户端第一次向web服务器发出一个servlet请求时,web服务器将会创建一个该servlet的实例,并且调用servlet的init()方法;
如果当服务器已经存在了一个servlet实例,那么,将直接使用此实例;
然后再调用service()方法,service()方法将根据客户端的请求方式来决定调用对应的doXXX()方法;
当web应用reload或者关闭tomcat或者关机,web服务器将调用destroy()方法,将该servlet从服务器内存中删除。
生命全过程:
1.加载
2.实例化
3.初始化
4.处理请求
5.退出服务
开发servlet有三种方法
(1)实现Servlet接口
(2)通过继承GenericServlet
(3)通过继承HttpServlet
①实现servlet接口的方式
需求如下:
请使用实现接口的方式,来开发一个Servlet,要求该Servlet可以显示Hello,world,同时显示当前时间.
步骤
1.在webapps下建立一个web应用hspWeb1
2.在hspWeb1下建立WEB-INF->
[可以从ROOT/WEB-INF/拷贝]
3.在WEB-INF下建立classes目录(我们的Servlet就要在该目录开发.),建立lib文件夹
4.开发
package;
import为了能将包引入,需要配置环境变量
变量值;
E:
\tomcat\apache-tomcat-6.0.20\lib\记得带上文件名
classMyFirstServletimplementsServlet
SeetheNOTICEfiledistributedwith
thisworkforadditionalinformationregardingcopyrightownership.
TheASFlicensesthisfiletoYouundertheApacheLicense,Version
(the"
License"
youmaynotusethisfileexceptincompliancewith
theLicense.YoumayobtainacopyoftheLicenseat
Unlessrequiredbyapplicablelaworagreedtoinwriting,software
distributedundertheLicenseisdistributedonan"
ASIS"
BASIS,
WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
SeetheLicenseforthespecificlanguagegoverningpermissionsand
limitationsundertheLicense.
web-appxmlns="
xmlns:
xsi="
xsi:
schemaLocation="
"
version="
!
--根据serlvet规范,需要将Servlet部署到文件,该部署配置可以从examples下拷贝-->
servlet>
--servlet-name给该Servlet取名,该名字可以自己定义:
默认就使用该Servlet的名字-->
servlet-name>
MyFirstServlet<
/servlet-name>
③
--servlet-class要指明该Servlet放在哪个包下的,形式是包/包/../类-->
servlet-class>
注意:
后面不要带.java④
/servlet>
--Servlet的映射-->
servlet-mapping>
--这个Servlet-name要和上面的servlet-name名字一样-->
②
--url-pattern这里就是将来访问该Servlet的资源名部分-->
url-pattern>
/ABC<
/url-pattern>
①
/servlet-mapping>
/web-app>
(1)服务器调用流程:
名字不一样(启动tomcat错误)
(2)<
写成,会报告500
(3)资源名自己写错
错误
补充:
如果使用javac去编译一个java文件,则需要带命令参数
javac–d.java文件
补充:
如何不重启tomcat,就指定去reload一个web应用,方法:
进入到tomcat的manager:
点击reload即可.
课堂练习
自己使用实现Servlet接口的方法,开发一个Servlet,该servlet可以输出自己的名字
在显示当前日期.
②使用GenericServlet开发servlet
了解即可:
案例:
publicclassMyGenericServletextendsGenericServlet
publicvoidservice(ServletRequestreq,
ServletResponseres)
throwsServletException,
().println("
hello,world,iamgeneircservlet"
}
}
将该Servlet部署到文件中:
MyGenericServlet<
--url-pattern这里就是将来访问该Servlet的资源名部分,默认命名规范:
就是该Servlet的名字-->
/MyGenericServlet<
③使用继承HttpServlet的方法来开发Serlvet
(1)在软件公司90%都是通过该方法开发.
(2)举例说明;
还是显示hello,world当前日期
代码:
publicclassMyHttpServletextendsHttpServlet
rintln("
iamhttpServetdoGet()"
protectedvoiddoPost(HttpServletRequestreq,
HttpServletResponseresp)
().println("
iamhttpServetdoPost()postname="
+("
username"
还有一个
html>
body>
formaction="
/hspWeb1/MyHttpServlet"
method="
post"
u:
inputtype="
text"
name="
submit"
value="
login"
/body>
/html>
小结get提交和post的提交的区别
1从安全看get<
post因为get会把提交的信息显示到地址栏
2从提交内容看get<
postget一般不要大于2k,post理论上无限制,但是在实际开发中,建议不要大于64k
3从速度看get>
post
4Get可以保留uri中的参数,利于收藏
使用ide来开发servlet
使用ide(eclipse[javase]+myeclipse[插件可以支持jsp/servlet/struts/hibernate/spring..])开发servlet
使用ide开发一个servlet,该servlet显示hello,world,和当前日期
开发步骤:
(1)建立web工程
(2)在Src目录下创建了一个包开发一个Servlet
MySerlvet的代码:
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
("
text/html"
PrintWriterout=();
hello"
+new);
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
(request,response);
(3)配置tomcat
点击add选择要发布到那个服务器即可:
(4)启动tomcat
1.使用我们的老方法
2.从eclipse启动tomcat
(5)在使用eclipse开发servlet可能会出现一个很麻烦事情,版本不一致错误.
Badversionnumberin.classfile(unabletoloadclass原因是因为tomcat使用jdk和servlet使用的jdk不一样,
解决方法就是统一即可.
请大家使用eclipse并配置继承HttpServlet开发一个servlet,显示hello,和当前日期.
Servlet的细节问题
1一个已经注册的Servlet可以被多次映射即:
description>
ThisisthedescriptionofmyJ2EEcomponent<
/description>
display-name>
ThisisthedisplaynameofmyJ2EEcomponent<
/display-name>
--servlet的注册名-->
MyServlet1<
--servlet类的全路径(包名+类名)-->
--对一个已经注册的servlet的映射-->
--servelt的注册名-->
--servlet的访问路径-->
/MyServlet1<
/hsp<
2当映射一个servlet时候,可以多层比如
/servlet/<
ok
从这里还可以看出,后缀名是html不一定就是html,可能是假象.
3使用通配符在servlet映射到URL中
有两种格式:
第一种格式*.扩展名比如*.do*.ss
第二种格式以/开头同时以/*结尾比如/*/news/*
通配符练习题:
Servlet1映射到/abc/*
Servlet2映射到/*
Servlet3映射到/abc
Servlet4映射到*.do
问题(面试题):
当请求URL为“/abc/”,“/abc/*”和“/*”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。
当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
Servlet引擎将调用Servlet3。
当请求URL为“/abc/”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
当请求URL为“/”时,“/*”和“*.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
当请求URL为“/xxx/yyy/”时,“/*”和“*.do”都匹配,哪个servlet响应
在匹配的时候,要参考的标准:
(1)看谁的匹配度高,谁就被选择
(2)*.do的优先级最低
4Servlet单例问题
当Servlet被第一次访问后,就被加载到内存,以后该实例对各个请求服务.即在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺平 servlet 笔记 看完 整版