Jsp的基本原理

Jsp的基本原理

1.jsp页面部分包括两部分:

静态部分:标准的html标签、静态的页面内容,这些与静态的html相同。

动态部分:受java程序控制的内容,这些内容由java程序来动态生成。

2.Jsp页面的本质是一样的,它编译后生成servlet,它的特点是在html中加入java代码。

3.jsp经过编译后生成的.class和.java文件都存在于tomcat的work\catalina\localhost\.....目录下

4.JSP注释:

<%-- 注释不会被发到客户端--%>

5.JSP的声明

<%! %>JSP的声明部分将转换成servlet的成员变量或者成员方法。

6.输出JSP表达式

<%=表达式%>   输出表达式语法后不能有分号。

7.JSP的三个编译指令

7.1 page是针对当前的页面的指令。

include用于指定包含另一个页面。

taglib用于定义和访问自定义标签。

? 编译指令的格式:

<%@编译指令名    属性名=“属性值”…………%>

?<%@page  language="text/html"%>

?<% @include  file="script.jsp"%>

这个是静态的include指令,它会把其它页面的编译指令也包含进来,但若两个页面的编译指令冲突就会报错。动态的include指令则不会。

8.jsp的7个动作指令

动作指令与编译指令不同,编译指令是通过servlet引擎处理消息,而动作指令只是运行时的动作。

编译指令在将JSP编译成servlet时起作用,处理指令通常可替代成JSP脚本,它只是JSP脚本的标准化写法。

?JSP:forward:执行页面跳转,将请求的处理转发到下一个页面;

语法:①<JSP:forward page="{relativeURL|<%=expression%>}"/>(JSP1.0版本)

②<JSP:forward page="{relativeURL|<%=expression%>}">

{<JSP:param.../>}

</JSP:forward>

第二种方法用于转发时增加额外的请求参数,增加的请求参数可以通过httpservletRequest类的getParameter()方法获取。

例子:

第一个页面forward.jsp页面

<body>

<title>forward的原始页面</title>

<jsp:forward page="forward_result.jsp">

<jsp:param name="age" value="29"/>

</jsp:forward>

forwardd_result.jsp页面使用request的内置对象httpservletRequest类的getParameter()方法来获得请求参数的值。

<body>

<title>结果页</title>

<%=request.getParameter("age")%>

</body>

执行forward指令时,用户请求的地址依然没有发生变化。执行forward指令时,若有表单,则表单中的参数也不会丢失。

(它的请求只是一次)

?JSP: param: 用于传递参数,必须与其他支持参数的标签一起使用;

该标签单独使用没有意义,可以与include forward plugin一起使用。

?JSP: include:用于引入一个JSP页面;

include指令是一个动态指令,也用于包含某个页面,它不会导入被include页面的编译指令,仅仅导入页面body内容插入本页面。

语法:<jsp:includepage="{relativeURL|<%=expression%>}" flush="true"
>

或者<jsp:include page="{relativeURL|<%=expression%>}"
flush="true" >

<jsp:param name="parameterName" value="parameterName"/>

</jsp:include>

flush用于指定输出缓存是否被转移到被导入文件中

动态和静态的区别:

①静态导入是将被导入的页面的代码完全融入,两个页面完全融合成一个整体servlet,而动态导入则在servlet中使用include

方法引入被导入页面的内容。

②静态导入被导入的页面的编译指令会起作用,动态则不会,只是导入被导入页面的body内容。

③动态包含还可以增加额外的参数。

forward指令和include指令的区别:

他们调用的方法不同;被forward的页面完全取代原来的页面,而被include的页面只是插入原有的页面。

?JSP:plugin:用于下载JAVABean或Applet到客户端执行;(一般使用支持applet的HTML标签,所以一般不用此标签)

?JSP:useBean:创建一个JavaBean的实例;

?JSP:setProperty:设置javaBean实例的属性值;

?JSP:getProperty:输出JavaBean实例的属性值;

useBean作用于JSP页面中初始化一个java实例;如果多个页面需要重复使用某段代码,我们可以把这段代码设置成Java类的方法,

然后让多个页面调用这个方法

语法:

<jsp:userBean id="name" class="classname" scope=" page|request|session|application">

id表示实例名字,class确定javaBean的实现类,scope用于指定JavaBean的作用范围其中page表示该实例在该页面有效;

request表示该实例在本次请求中有效,session表示该请求在本次session有效;application表示该JavaBean在本次应用内一直有效。

例子:

<body>

<jsp:userBean id="p1" class="lee.Person" scope="page"/>

<jsp:setProperty name="p1" property="name" value="wawa"/ >

<jsp: getProperty name="p1" property="name">

</body>

说明:其实以上的三个指令可以不使用,换成修改成以下代码:

<body>

<% Person p1=new Person();

//把p1放到page范围内

pageContext.setAtrribute("p1",p1);

//或者放入session范围内

session.setAtrribute("p1",p1);

//或者放入request范围内

request.setAtrribute("p1",p1);

//或者放入application范围内

application.setAtrribute("p1",p1);

p1.setName("wawa");

%>

<% =p1.getName()  %>

</body>

9.jsp的9个内置对象

这9个内置对象是Servlet API接口的实例,知识JSP规范对其进行了默认的初始化,可以直接使用。

application:代表JSP所属的Web应用本身,可应用于JSP页面或者在servlet之间交换信息。

浏览器作用:向远程服务器发送请求;读取远程服务器返回的字符串数据;负责根据字符串数据渲染出一个丰富多彩的页面。

JSP中的application、session、request、pagecontext这4个内置对象分别作用于application、session、request、page范围中的数据。

application对象的作用:在 整个web应用的多个JSP、servlet之间共享数据。访问Web应用的参数配置。

config:代表该JSP的配置信息。

由于JSP页面通常无需配置,所以用不到,通常用在Servlet中。

exception:代表其它页面的异常或者错误,当该页面的isErrorPage属性为true时,该对象才可以使用。

out:代表JSP页面的输出流,用于输出内容形成HTML页面。

page:代表页面本身,也就是servlet中的this

pageContext:该对象表示JSP页面上下文,使用该对象可以访问页面中的共享数据。

request:封装了一次请求,客户端的请求参数都被封装在该对象中。(获取请求头和请求参数;操作request范围内的属性;执行forward或include)

request对象是Jsp中重要的对象,每个request封装这一次用户请求,该次请求的所有参数都封装在该对象中。

Get和Post请求方式的区别:

get:直接在浏览器地址栏输入访问发送的访问请求霍是提交表单发送请求时,该表单对应的form元素没有设置method属性,或者设置设置为get,这几种请求方式都是get请求。get方式的请求会将请求 参数的名和值转换成字符串,并附加在原地址后,因此在地址栏中可以看到请求参数名和值。且传输的数据量较少。(get方式发送的请求参数被附加到地址栏之后的形式:url?age=11&name=“Jone”;)设置编码方式比较复杂主要用到:URLDecoder和URLEcoder两个方法。也可以先将其转化成字节数组,然后将字节数组重新解码成字符串。

post:这种方式通常使用表单提交(由form html组成)的方式发送,且需要将form元素的method属性设置为post。post请求传输的数据量比较大,而且Post方式发送的请求参数以及对应的值放在HTML   header中传输,用户不能在地址栏中看到请求参数,安全性相对较高。设置编码request.setCharacterEncoding(“gb2312”);

提示:

并不是每个表单域都会生成请求参数的,而是有name属性的表单域才会生成请求参数。

每个有name属性的表单域对应一个请求参数。

如果多个表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值。

表单域的name属性指定请求参数名,value指定请求参数值。

如果某个表单域设置了disabled=“disabled”属性,则该表单不在生成请求参数。

执行forward或include:

例子:getRequestDispatcher(“/a.jsp”).include(request,response);

getRequestDispatcher(“/a.jsp”).forward(request,response);

response:代表服务器对客户端的响应,通常很少直接使用该对象直接响应,而是使用out对象,获取客户端请求必须使用该对象。

响应生成字符流一般都使用out,但生成非字符的的内容是只能使用response对象

respose.sendRedirect("***.jsp");(执行redirect生成的第二次请求。不保留原请求的请求参数。地址栏改为重定向的目标URL。)

增加Cookie

<%

String name=request.getParameter("name");

Cookie c=new Cookie("username",name);

c.setMaxAge(24*3600);

response.addCookie(c);

%>

使用request对象访问浏览器的cookie

<% Cookie[] cookies=request.getCookies();

for(Cookie c: cookies){

if(c.getName().equals("username")){

out.println(c.getValue());

}

}

%>

session:该对象代表一次会话,浏览器连接服务器表示会话开始。当客户端关闭浏览器时,会话结束。

通常该对象用于跟踪用户的会话信息,如 判断用户是否登陆系统,用于跟踪用户购买的商品。

session范围内的属性可以在多个页面的跳转之间进行共享。关闭浏览器属性消失。

注意:

session的属性值是任何可序列化的java对象。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 19:05:52

Jsp的基本原理的相关文章

JSP深入

JSP深入之前了解了JSP的基本原理.现在开始更深入的学习JSP的注释支持三种注释1,JSP注释<%-- --%>只存在JSP代码源码中,当被翻译成Servlet时,这类注释会消失,不会在编译成的文件中存在2,java注释,/** */文档注释,生成javadoc,主要用来注释包,类,成员变量成员方法 /* */多行注释和单行注释//,注释代码实现逻辑.该类注释在被翻译成Servlet时,注释存在,但是执行时会忽略注释,不会在生成的HTML代码中存在3.HTML注释<!-- -->

【JSP】JSP基础学习记录(一)

序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java EE企业应用实战(第4版)>. 开发环境: 系统版本:win7 x64 JDK版本:1.8 IDE版本:Eclipse Java EE IDE for Web Developers(Version: Mars.1 Release (4.5.1)) Tomcat版本:8.0 1.1.JSP的基本原理: JS

JSP、servlet--学习摘要

2.1 web应用和web.xml文件 2.2 JSP的基本原理 JSP的本质就是servlet,每一个JSP页面其实就是一个servlet实例,用在浏览器发送一次请求的JSP页面, 服务器负责把JSP页面转换成servlet类,从而进行数据的处理. 2.3 JSP注释 JSP的注释:<%--注释内容--%> HTML的注释:<!--注释内容--> 2.4 JSP的声明 JSP声明用于声明变量和方法,声明语法格式:<%! 声明部分 %> 2.5 输出JSP表达式 JSP

Java EE基础之JSP

软件152唐伟 一.JSP的基本原理以及和servlet的关系 在没有出现 JSP之前,我们访问网站都是访问的Servlet,通过它返回html代码.就像下面这样: out.write("\n"); out.write("\n"); out.write("<html>\n"); out.write(" <head>\n"); out.write(" <title></titl

【Hibernate学习笔记】第二章节:JSP/Servlet及相关技术详解

JSP(Java Servr Page)和Servlet是Java EE规范的两个基本成员,他们是Java Web开发的重点知识,也是Java EE开发的基础知识.JSP和Servlet的本质是一样的,因此JSP最终必须编译成Servlet才能运行,或者说JSP只是生成Servlet的"草稿"文件.JSP的特点是在HTML页面中嵌入了Java代码片段,从而可以动态的提供页面内容. 1.Web应用和web.xml文件 JSP.Servlet.Listener和Filter等都必须运行在W

【JAVA】基于MVC架构Java技术荟萃案例演练

基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servlet运行原理.Get/Post请求的区别.jsp的基本原理和运行框架.jsp的9大隐含对象的使用.MVC开发模式的使用.构建封装自己dao代码库.以及基于MVC的增删改查操作等:小结最后还有面向接口编程的多数据源配置与存储,以及工厂模式的使用.除此之外,后续文章会对cookie.session.Jav

JavaEE基础知识

JSP的基本原理 JSP的本质是Servlet,当用户想指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每一个静态HTML标签和所有HTML页面中出现的内容. JSP的三个编译指令 page, include, taglib <%@ page 属性%> (2) include指令 这是一个静态include指令,静态包含会将包含页面的额编译指令也包含进来,如果两个页面的编译指令冲突,那么页面就会出错. JSP动作指令 (1) 七个 jsp:forward, js

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Java EE经典著作) 李刚 编著   ISBN 978-7-121-24253-3 2014年10月出版 定价:108.00元 824页 16开 编辑推荐 国内知名IT图书作家李刚老师基于曾荣获中国书刊发行业协会“年度全行业优秀畅销品种”大奖的<轻量级Java EE企业应用实战(第3版)>全新升级:

不用动手术的肝脏清洗法

几乎每个人体内都有肝胆结石,或许很多人只知道胆结石,不知道肝脏内也有结石,也不知道其实很多胆结石的初期就是在肝脏内形成的,更不知道吃夜宵.晚饭在7点之后吃.吃油炸食品.甚至喝水较少也会导致肝胆结石.就以上几个不良生活习惯,我们每个人占多少?简单的讲,肝脏是人体内最大的器官,它是人体的解毒工厂,它的构造极其复杂,所以至今为止,人类无法设计出人造肝脏,它的复杂度仅次于脑组织.所以让肝脏维持正常功能直接关系着人体的健康.肝脏可以使激素,酒精以及某些有害药物在体内失效.各种人体无法代谢的毒素都会由肝脏负