[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
编程语言
> 详细
TC608——Java中的Servlet编程问答
时间:
2014-09-24 12:11:17
阅读:
449
评论:
0
收藏:
0
[点我收藏+]
Servlet整理
author:lxy 1.什么是Servlet? 运行在Servlet容器中,由服务器服务器直接解析运行的Java应用小程序, 2.怎样创建一个Servlet 实质:通过继承或实现接口类并重写方法。 步骤:[1].创建一个类,继承HttpServlet(实现Servlet接口 或 继承GenericServlet类也可以) [2].重写方法;doGet、doPost等(接口中需要将所有方法重写,但是service方法是处理请求) [3].在web.xml文件中配置
3.Servlet的生命周期: 大致过程: [1].创建Servlet对象,并调用init()方法对web进行资源初始化 [2].通过service方法来处理请求 [3].通过destroy来销毁Servlet 细节: [1].当创建一个Servlet后,第一次访问web时会创建一个Servlet对象,并调用init一次方法,同时开启一个线程来调用service方法,init只调用一次 [2].当第二次访问时再开启一个线程来调用service方法处理请求 [3].Servlet常驻内存,一般情况只会创建一次。 [4].如果在Servlet中创建了成员变量要处理线程安全,开发中尽量避免创建
4.Servlet接口和HttpServlet类中的 doGet和doPost 方法的关系? [1].一个Servlet被访问时,默认service方法处理请求, [2].service方法在Servlet中定义,但是在HttpServlet中复写具体内容 [3].在HttpServlet 的service方法中,会根据请求方法调用不同的方法 [4].根据多态,在调用doGet 、doPost时,调用的是自己Servlet的方法 补充:模板设计模式: public abstract class Car { public abstract void fire(); // 打火 public abstract void run();// 行驶 public abstract void stop();// 停止 //模板 public void drive() { fire(); run(); stop(); } } //继承Car接口的Bmw类 public class Bmw extends Car { @Override public void fire() { System.out.println("bmw fire"); } @Override public void run() { System.out.println("bmw run"); } @Override public void stop() { System.out.println("bmw stop"); } } //测试 public class Test { public static void main(String[] args) { Car c = new Bmw(); c.drive(); } }
5.认识TomCat中文件夹: |-bin 存放启动、关闭等服务器程序 |-conf 存放配置信息 |-lib 存放jar包 |-logs 存放日志文件 |-temp 存放临时文件 |-webapps 存放部署应用,内部有几个文件夹就有几个应用 |-WEB-INF |-classes Java类 |-lib Java类运行所需jar包 |-web.xml wab应用的配置文件 |-images 图片等媒体文件 |-work 服务器工作目录
6.Servlet的自动加载: [1].通过在web.xml文件<servlet>标签中加上<load-on-startup>2</load-on-startup> 让Servlet跟随服务器启动而创建 [2].作用:加载资源 [3].标签中取值1--10,数值小优先级高,优先级相同按照配置顺序加载。
7.Servlet配置中的url-pattern: [1].一个Servlet 是否可以映射到多个路径?可以 [2].url-pattern 的写法(有无*) a.完全匹配 要求必须以"/"开始 b.目录匹配: 以"/"开始以 * 结尾 c.扩展名匹配: 以*.xxx结尾 以上三种写法优先级:a > b > c;
8.web开发中的路径问题: [1].浏览器访问服务器有几种方式? a.浏览器地址栏输入URL b.超练级 <a href="http://www.itheima.com" >黑马</a> c.表单 <form action="...." method="post">...</form> //常用请求方式post get,除了表单可以post,其他都是get d.javascript [2].访问Servlet路径 a.绝对路径: |--带协议 一般用于访问站外资源,开发不常用 <a href="http://www.baidu.com" >百度</a> |--不带协议 在浏览器端写一个"/",相当于是服务器的路径,后面加上工程名,再加上资源名就可以 一般用于访问站内资源,开发中常用 <a href="/day7_2/demo1">demo1Servlet</a> 相当于:http://localhost:8080 b.相对路径: |-- ./XXX 同处于第二目录(工程名下)的路径 |-- ../XXX 退回上一级目录寻找目标 结论:开发中推荐使用不带协议的绝对路径 "/工程名/servlet-pattern的值"
9.Servlet接口中的init方法: [1].为什么在Servlet接口中init方法是有参数的而我们所覆写的方法没有参数? |--父类中已将init(ServletConfig config)方法重写,我们重写的方法不是接口中的方法而是其父类中定义的 [2].ServletConfig是什么,有什么作用? |--ServletConfig对象代表的是Servlet的配置对象,由服务器创建, 每一个Servlet都有一个自己的ServletConfig对象,不可公用 |--作用: public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } |---获得初始化参数 当第一次访问一个Servlet时,就会创建一个ServletConfig对象,通过init方法传递到Servlet,那么我们就可以在Servlet中获取其配置信息 |---可以获得Servlet的name 获取ServletConfig对象:this.getServletConfig(); |---可以获得ServletContext对象 ServletConfig的常用API: |--public String getServletName(); //用于获取Servlet名称 |--public String getInitParameter(String name); //用于获取init-parent中指定的value值 |--public Enumeration getInitParameter(String name); //用于获取所有的init-param中的name名称 |--public Servlet ServletContext getServletContext(); //用于获取一个ServletContext对象
10.关于ServletContext对象 [1].ServletContext代表的是一个web应用 [2].获取ServletContext对象 ServletConfig。getServletConfig(); [3].作用: a.获取全局初始化参数 String getInitParameter(String name) EnumerAtion getInitParameterNames() 在web.xml文件中可以配置 全局初始化参数 <context-param> <param-name>name</param-name> vparam-value>tom</param-value> </context-param> 此配置针对于整个web应用 b.让Servlet实现信息共享 ServletContext是一个域对象(相当于一个Map,它的作用是整个Web应用中) c.可以获取路径(资源)*-* 在web开发中,要想获取资源,必须使用绝对的磁盘路径。 实例总结:1.web中访问不到MyEclipse WebRoot以外的文件,部署只有此文件中内容才会被部署进服务器
TC608——Java中的Servlet编程问答
原文:http://blog.csdn.net/u013610441/article/details/39521309
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!