Servlet 笔记

servlet是在服务器端运行的程序
一个servlet就是一个类,并且通过请求-响应编程模型来访问这个驻留在服务器内存里的servlet程序

tomcat
容器等级 tomcat container engine HOST servlet context
tomcat
container
engine
HOST 主机
servlet
context 一个context对应一个web工程

servlet接口:init() service() destroy()

GenericeServlet抽象类 与协议无关的Servlet

HttpServlet抽象类:实现了Http协议的servlet

自定义Servlet类:一般覆盖doGet 和 doPost方法,还有init,destroy方法

用myEclipse创建的servlet类的运行过程:
browser
在 web.xml中的中,
找到这个"/servlet/HelloServlet"的url-pattern,根据url-pattern找到对应的servlet-name,
在web.xml 中的中
根据servlet-name找到,
根据找到对应的servlet类,完成doGet或doPost方法

2 1 3 4

servlet生命周期
构造,初始化,doPost,doGet,destroy
browser -request-> servlet是否存在?
否:装载servlet类并创建实例
init()

调用servlet方法  doGet or doPost

是:调用servlet方法

服务器关闭,则调用destroy方法

tomcat管理servlet

登录结束自动跳转到home页面,若home页面需要登录页面的数据,可以在登录页面把数据保存到session中,request.getSession.setAttribute(“sessionName”,user);
setAttribute()键值对形式,第一个是session的名字,第二个是要保存到session中的数据
然后在服务器中跳转到home
request.getRequestDispatcher("…/home.html").forward(request,response);
forward(request,response)是将请求

tomcat 的启动需要JavaHome环境变量

/work
jsp的翻译后的java,编译后的class文件

一个应用 对应 一个端口,注意端口不要被占用

servlet.xml 修改端口号

部署项目的方法
1 把项目直接放到webapps中
比如在webapps新建project/1.html
然后输入localhost:8080/project/1.html就可以了
要求项目编译好,war包

2 修改conf/server.xml文件
在HOST标签中加入

	path:浏览器访问时的路径名

docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。其实也就是编译后的项目

reloadble:设定项目有改动时,tomcat是否重新加载该项目

3 进入到 apache-tomcat-7.0.52\conf\Catalina\localhost 目录,新建一个 项目名.xml 文件

添加:

总结
①、第一种方法比较普通,但是我们需要将编译好的项目重新 copy 到 webapps 目录下,多出了两步操作

②、第二种方法直接在 server.xml 文件中配置,但是从 tomcat5.0版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目

③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 中配置的 path 路径,因此在配置的时候,可以不写 path。

通常我们使用第三种方法

tomcat service.xml

一个就是一个服务器的实例

server port =“8005” shutdown = “SHUTDOWN”>

能够处理请求的服务
一个service 可以有多个connector,一个connector代表一个请求,监听一个端口
<connector port = “8080” protocol http

server
service name = Catalina
Connector port = 8080 protocol = http connectTimeout protocol redirectPort = 8443//开启https
Connector port = 8009 protocol = ajp

	Engine name = Catalina defaultHost = localhost,

当engine收到localhost的请求时,根据 name,把请求发送给name为Catalina的service,service再 调用 Connector

browser request -> server -> service -> engine -> service -> connector

发起http请求 相当于 建立一个Socket

browser如何与server建立socket连接呢?
根据ip地址和port
建立socket链接必须由底层的TCP/IP来建立TCP连接
建立实例化socket之前要TCP三次握手协议
建立TCP连接需要IP和端口

因此要建立客户端和服务端的连接,需要创建一个socket实例,为socket分配未被占用的端口
服务端要建立serverSocket

如何模拟浏览器来发起一个htt请求呢?
HttpClient

为什么http连接是无状态的?或者说为什么要设计成无状态的?
为了能够同时服务更多的用户,应为当前互联网应用每天都会处理上亿个请求,不可能每个用户访问一次后就一直保持这个连接

interface HttpServletRequest extends interface ServletRequest

HTTPServlet extends GenericServlet implements Servlet

Servlet
init
service(Servlet Request var1,ServletResponse var2)
getServletInfo()
destory()

backlog :在服务器拒绝接收传入的请求之前,传入的连接请求的最大队列长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值