博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet入门
阅读量:4337 次
发布时间:2019-06-07

本文共 2977 字,大约阅读时间需要 9 分钟。

http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

Servlet
是一门用于开发动态Web资源的技术
ServletAPI 基于Request-Response模型,Http也是基于Request-Response模型的,所以Serlvet可以用用来开发基于HTTP web应用程序。
在JavaEE的API中有个Servlet接口,开发一个动态web资源即开发一个java程序向浏览器输出数据,需要完成两个步骤
1,编写一个java类,实现servlet接口
2,将开发好的java类部署到web服务器中
在eclipse中的演示
1,创建web project
2,编写class继承HttpServlet//HttpServlet类是Servlet接口的一个子类的子类,是抽象类,是专用于Http协议的Servlet技术
3,在web.xml中配置Servlet程序的虚拟访问路径,让用户在浏览器上可以通过该路径访问管理动态资源的Serlvet程序
,在web.xml中添加<servlet>标签,为其命名<servlet-name>,将程序的全类名写入<servlet-class>标签中,最后再添加<servlet-mapping>为其设置虚拟路径

//注册servlet程序  
HelloServlet
  
HelloServlet
  
1
//这个标签来确定servlet服务时是否是在服务器启动时加载,数字为服务器加载优先级。常应用于服务器启动时加载一些框架。
//注册程序路径  
HelloServlet
//与上面注册的servlet名称要对应  
/hello
//访问路径/开头

 

4,在class中覆盖doGet和doPost方法

public class HelloServlet extends HttpServlet {@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("get请求。。。");resp.setContentType("text/html;charset=utf-8");//设置文件类型以及编码表PrintWriter out = resp.getWriter();// 获得像浏览器输出的流out.println("");out.println("");out.println("");out.println("
");out.println("Insert title here");out.println("");out.println("");out.println("

Hello 看看请求是什么

");out.println("");out.println("");}

 

Servlet动态的去生成一个网页html文件过程

用户在客户端发起url请求访问servlet虚拟路径,执行servlet程序,如果是get方式提交会执行doGet方法,如果是post方式请求会执行doPost方法,将html文件通过流动态的打印到浏览器上,浏览器对文件进行解析显示。

Servlet接口生命周期

主要表现在下面的三个方法上。
init(ServletConfig config)初始化
service(ServletRequest req, ServletResponse res)提供服务方法
destroy()销毁
在web服务器中提供了servlet服务的容器,类似对外暴露的接口用来接收servlet服务,当客户端访问服务器时,服务器在servlet容器中构造了一个servlet实例服务,并调用了init初始化方法和service服务方法,之后只要没有调用destory()方法,容器中一直存在serlvet服务的实例,接下来的访问都是只调用service方法,当WEB应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet新实例时,Servlet容器会先调用Servlet的destroy()方法,在destroy()方法中可以释放掉Servlet所占用的资源。

从以上可以看出,Servlet是一个供其他java程序(Servlet引擎)调用的java类,他不能独立运行,他的运行完全Servlet引擎控制,针对客户端的多次Servlet请求通常情况下,服务器只会创建一个Servlet实例对象,也会是说Servlet一旦创建,他就会驻留在内存中,为后续的其他请求服务,直至web容器退出Servlet实例对象才会销毁,在Servlet的整个生命周期内,Servlet的init方法只被调用一次,而对一个Servlet的每次请求都导致Servlet引擎调用一次Servlet的service方法,对于每次访问请求,Servlet引擎都会创建一个新的Http创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象(这些是在服务器中完成的,也就是说由服务器提供其实现方法)然后将这两个对象作为参数传递给他调用的servoce方法,service方法再根据请求方式分别调用其他方法,此行为是从HttpServlet中继承过来的所以一般也不需要复写。另外对于init方法如果需要复写的话只需要复写无参的init方法即可,重载的有参init方法内部都会调用init()方法,且doget与dopost方法也可以互相调用简化开发,但是注意死循环。

Servlet路径映射

客户端是通过路径访问Servlet类的,Servlet的路径映射是通过web.xml中的<url pattern>标签元素完成的,一个Servlet是可以配置多个访问路径
URL配置格式三种
1,完全路径匹配以/开始,/代表根目录
2,目录匹配以/*结尾,目录下的所有路径都会访问
3,扩展名匹配(不能以/开始,以*.开头)*.do表示以do为扩展名的路径都会访问
当客户端存在多个访问路径同时访问时同一个Servlet时,优先级1》2》3。

相对路径与绝对路径的区别,相对路径是相对于当前页面的路径,相当于在当前路径下+相对路径,而绝对路径就是从根目录开始的全路径。当页面form表单提交时,action属性设置访问路径时,可以设置为相对路径也可以设置为绝对路径,但是要注意相对路径下是否是服务器端所要访问资源的路径。

转载于:https://www.cnblogs.com/ss561/p/4616759.html

你可能感兴趣的文章
知道这20个正则表达式,能让你少写1,000行代码
查看>>
MariaDB 主从同步与热备(14)
查看>>
推荐的 CSS 书写顺序
查看>>
NIO:与 Buffer 一起使用 Channel
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>
Android - 广播机制和Service
查看>>
MFC接收ShellExecute多个参数
查看>>
volatile和synchronized的区别
查看>>
RocketMQ介绍与云服务器安装
查看>>
【无向图欧拉回路判定】欧拉回路
查看>>
几款在线脑图制作工具
查看>>
应用:udp聊天器
查看>>
台式机没有声音
查看>>
[Arduino]利用Arduino Leonardo开发板制作BadUSB,劫持键盘...嘿嘿嘿
查看>>
[软件工程]团队作业-项目答辩-梅花桩
查看>>
Groovy 学习手册(4)
查看>>
CentOS7安装Pycharm后无法使用日常的快捷键
查看>>
clouder-manager安装cdh
查看>>
jekyll+github搭建个人博客
查看>>
MongoDB Limit与Skip方法-7
查看>>