java servlet深入理解_深入理解JSP和Servlet

开始编写比较复杂的jsp啦。

全称:javaserver pages

在传统的网页HTML文件(.htm,.html)中加入java程序片段(Scriptlet)和jsp标签,就构成了jsp网页。

1、因为可以嵌入java代码,由此具备动态特性。

java程序段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。

2、所有程序操作都是在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端并不支持java也可以访问jsp网页。

3、在里面嵌入的标签是

4、强大的组件(java Bean)支持功能。

比如下面就是在页面循环输出两个你好。

for(;i<2;) {

%>

你好

}

%>

jsp的一般执行过程:接受request后,就先把jsp文件经过jsp parser转换为java文件(即Servlet文件),然后该文件被被jsdk(Servlet分析器)编译成class文件,然后被执行,再response回客户端。执行过程都是在服务器上执行的。

5848a6a4dd8b

图片.png

其中 查找jsp文件后还会发生以下检查:jsp是否是修改或创建后的第一次调用。

5848a6a4dd8b

jsp查找过程

jsp原始代码包含jsp元素和模板(Template)Data两类。

template data值得是jsp引擎不处理的部分,即以外的部分。例如代码的HTML部分,这些数据会直接送到客户端。

jsp元素是指部分。由jsp引擎直接处理,这部分必须符合java语法,否则会出现编译错误。

jsp的语法:

1、编译器指令(directive)

例如

该指令无论在jsp的哪一个地方,它的作用范围都是整个jsp文件。

编译器指令包含“包含指令”,“页指令”和“taglib指令”

他们包含在卷标里。

两个主要的指令是page与include。

例:import = "java.io."

已经默认import了

java.lang.*

javax.serlet.jsp.*

javax.servlet.http.*

就是jsp中用的request、out等tomcat已经定义好了。内置了的。

taglib指令:

用于引入定制标签库。

2、脚本语法(scripting)

html注释

(jsp)隐藏注释

jsp表达式

jsp声明:

如: 和这两个是有差别的。转换为servlet后编译的class文件是不一样的哦。

第一句话是把a声明为成员变量额,而第二句话则是把定义 为_jspService方法里面的局部变量。

一般定义为脚本段,而不是声明。。。。比较稳。

因为Servlet是单实例的,单实例的,单实例。。。

包含:

3、动作语法(Action)

例如,,

(1)" } />

(2)

[ ]

page属性是指转到某一个页面中。

page=“value”,value可以i一个表达式或是一个字符串用于说明你将要定向的文件或者URL。这个文件可以是jsp,或者是程序段。

同时在转时,可以发送多个参数。

[ ]

例子:转到forwardto.jsp,并传去参数名为username的值为winney的参数。

注:转到页面后,原本的那个页面剩下的代码是不会被执行的。因为页面的流程都已经转到另外一个页面里去了。

本质原因: 在jsp被翻译为class文件后的源码是在转页面的代码后直接加一个return语句。

(2)

包含一个静态或者动态文件

[]指可以有多个“”标记、

param可以将参数传到被包含的静态或者动态文件中。

关于servlet:

Servlet的框架是由两个java包组成的:

javax.servlet包:定义了所有的Servlet类都必须实现或拓展的通用接口类。

javax.servlet.http包:定义了采用HTTP协议通信的HttpServlet类。

每一个servlet都必须实现javax.servlet.Servlet接口,GenericServlet是个通用的,不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于GenericServlet,因此HttpServlet也实现了servlet接口,因此我们定义的servlet只需要继承HttpServlet父类即可。

Servlet接口中定义了service方法,HttpServlet对该方法进行实现:

将servletRequest和ServletReaponse转换为HttpServletRequest和HttpServletResponse。

转换完毕后,会调用HttpServlet自己定义的service方法;

在service方法中,首先获得请求方法名,然后根据方法名调用对应的Do方法。

在HttpServlet类中调用的doGet、doPost方法都是返回错误信息,所以我们自定义的servlet要override HttpServlet里面的doGet、doPost方法。

5848a6a4dd8b

图片.png

Servlet的启动:

在下列时刻Servlet容器装载Servlet:

--Servlet容器启动时自动装载某些Servlet

--在Servlet容器启动后,客户首次向Servlet发出请求

--Servlet的类文件被更新后,重新装载Servlet

Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值