Servlet的知识梳理

Servlet的基础掌握

一、基本讲解

	定义: Servlet是Java Servlet的简称,称为小服务程序或服务连接器,
用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态
Web内容。

	1> 狭义的Servlet是指Java语言实现的一个接口;
	
	2> 广义的Servlet是指任何实现了这个Servlet接口的类;
	
	3> 一般情况下,人们将Servlet理解为广义。
	
	4> Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可
	以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP
	协议的Web服务器。
	
	5> 最早支持Servlet标准的是JavaSoft的Java Web Server,此后,
	一些其它的基于Java的Web服务器开始支持标准的Servlet

ps:简而言之Servlet就是一种“请求--响应”的技术

二、生命周期

	1) 定义: 所谓的生命周期是指一个东西的起效的整个过程。servlet的生命
周期即阐述Servlet从产生到毁灭的整个过程
	2) 在Servlet产生到消亡的过程中,有三个生命周期函数: 
		2.1> init() : 初始化方法
			在一个Servlet的生命周期中,init方法只会被执行一次,
	之后无论用户执行多少次请求,都不会在调用该方法。 
			
			关于init方法的执行时机,有两种方式可选: 
				1>>一般的是在服务器启动后第一个用户请求该Servlet时调用
			 	2>>也可以设置该Servlet在服务器启动后自动执行
			
			使用场景: init()负责预加载一些数据,这些数据将用于该
				Servlet的整个生命周期中
		
		2.2> service() : 处理客户请求的方法
			service方法
			
			当一个客户请求该Servlet时,实际的处理工作全部由service方法
		来完成,service方法用来处理客户端的请求,并生成格式化数据返回给客
		户端
		
		3.2> destroy() : 终止方法
			该方法在整个生命周期中,也是只会被调用一次,在Servlet对象被
		销毁时调用,在servlet中我们可以做一些资源的释放等操作,执行destory
		方法之后的servlet对象,会等待jvm虚拟机的垃圾回收机制择时回收
        	
        	使用场景:destory( )方法负责将一些需要释放的资源写在里面
        	
        ps: 当修改servlet中的内容的时候,就会触发destory()方法

三、Servlet与JSP的区别和关系

	1) JSP执行之后的本质就是一个servlet
	
	2) 因为使用场景不同,JSP更多偏重于页面展示,Servlet更多偏重于后台的
	处理程序
	
	3) JSP的执行效率/速度比Servlet慢

四、传参与转向

1) 传参方式 : 
	1> URL: 
		例: <a href="url">URL 传参</a>, js......,但是如果本次传递的
	参数中有中文不建议使用
	
    2> 通过form表单传参: 可以传递中文,也可以传递其他的
    	例: 英文字符串,日期
2) 转向: 
	 request.getRequestDispatcher("/jsps/student/list_student.jsp")
.forward(request, response);

五、JSP页面获取路径的3种方式

1) <%=request.getContextPath();%>

2) 公共页面
	1> 创建一个/jsps/commons/commons.jsp,且里面的内容为
       <%
        	String path = request.getContextPath();
       %>
    2> 在需要用到的页面(login.jsp)引入这个公共页面:
    <%@ include file="/jsps/commons/commons.jsp"%>
    3> 将原理的方法1那种写法修改为:<%=path%>
    
3) 公共页面+<base>
	 1>将common.jsp中的内容修改为:
		<%
			String path = request.getContextPath();

			String basePath =request.getScheme()+"://"+
				request.getServerName()+":"+
				request.getServerPort()+path+"/";
		%>
    2> 在需要用到的页面例如index.jsp中使用:
    	<base href="<%=basePath%>">  且是写在<head>标签中的
    3> 将原来写的<%=request.getContextPath();%>或者<%=path%>
    删掉,然后调用即可如下所示
            <a href="hello.do">查询</a>


PS: 
	第三种方法看似是最人性化的,但是IE浏览器对<base>标签支持的不是很
友好,故此在开发商业的项目的时候谨慎使用

	第一种方法看似是最笨的,但是往往是最有效的,且用的也比较多
	
	第二中方法可以看出在编写大型的项目时候才使用的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值