java和jsp快速入门_JSP快速入门

422318bc7c88c98c29606922efa92b63.png

一、概述

JSP是Java Server Pages的简称,是一种动态网页开发技术,运行在服务端。以Java语言作为脚本语言,使用JSP标签在HTML网页中插入Java代码。

JSP是一种Java servlet,主要用于实现web应用程序的用户界面部分。可以响应客户端请求,动态生成HTML、XML或其他格式文档的web网页。

可以直接在HTML网页中动态嵌入元素,性能更加优越

服务器调用的是已经编译好的JSP文件

拥有强大的企业级Java API

JSP页面可以与处理业务逻辑的servlet一起使用

编写和修改HTML网页比较容易,不需要在servlet中使用大量的输出语句

JSP开发的web应用可以跨平台使用

二、处理流程

浏览器发送一个HTTP请求

web服务器将请求传递给JSP引擎

JSP引擎将JSP文件转化成servlet

JSP引擎将servlet编译成可执行类,并将请求传递给servlet引擎

servlet引擎载入并执行servlet类,生成HTML格式的输出并嵌入到HTTP响应中,上传给web服务器

web服务器以静态HTML网页的形式将HTTP响应返回到浏览器

三、生命周期

JSP的生命周期就是从创建到销毁的整个过程。与servlet的生命周期类似,只是还包括将JSP文件编译成servlet的阶段。

1、编译阶段

当浏览器请求JSP页面时,JSP引擎首先会检查是否需要编译这个JSP文件。只有在该文件从没有被编译过,或在上次编译之后有过变更,才会编译该文件。

编译过程包括三个步骤:

解析JSP文件

将JSP文件转化成servlet

编译servlet

2、初始化阶段

加载编译生成的servlet类,调用jspInit()方法进行初始化,如建立数据库连接或打开文件等。和servlet一样,程序一般只初始化一次。

public void jspInit() {

// 初始化代码

}

3、执行阶段

调用_jspService()方法,处理与请求相关的交互行为。该方法在每个请求中被调用一次并产生与之对应的响应。

void _jspService(HttpServletRequest request, HttpServletResponse response) {

// 服务端处理代码

}

4、销毁阶段

调用jspDestroy()方法执行清理工作,如释放数据库连接或关闭文件等。

public void jspDestroy() {

// 清理代码

}

四、基本语法

1、脚本程序

脚本程序包含任意的Java语句、变量、方法或表达式。任何文本、HTML标签、JSP元素必须写在脚本程序的外面。

2、JSP声明

声明语句可以声明任意变量、方法,供后面的Java代码使用。

3、JSP表达式

表达式的值先被转化成String,再将其插入到表达式所在的地方。

4、JSP注释

可以为代码行注释,也可以为代码块注释。

5、JSP指令

用来设置与整个JSP页面相关的属性。JSP有三种指令标签:page、include和taglib。

5.1 page指令

定义页面的依赖属性,提供当前页面的使用说明,如脚本语言、error页面、缓存等。

与page指令相关的属性:

buffer,指定out对象使用的缓冲区大小

autoFlush,控制out对象的缓冲区

contentType,指定当前页面的MIME类型和字符编码

errorPage,指定当页面发生异常时转向的错误处理页面

isErrorPage,指定当前页面是否可以作为其他页面的错误处理页面

extends,指定servlet继承的类

import,导入使用的Java类

info,定义页面的描述信息

language,定义页面使用的脚本语言,默认是Java

session,指定页面是否使用session

isThreadSafe,指定页面的访问是否为线程安全

isELIgnored,指定是否执行EL表达式

isScriptingEnabled,指定脚本元素能否被使用

5.2 include指令

通过该指令来包含其他文件,被包含的文件如同页面的一部分,会被同时编译执行。

指令中的文件名实际上是一个相对的URL地址,默认是当前路径。

5.3 taglib指令

引入标签库,可以是自定义标签。

uri属性确定标签库的位置,prefix属性指定标签库的前缀。

6、JSP行为

JSP行为标签是一些预定义的函数,用来控制servlet引擎,实现特殊操作。

所有的动作元素都有两个属性:id和scope。id属性是元素的唯一标识,scope属性是元素的生命周期。

6.1 jsp:include元素

在当前页面中包含静态或动态资源。插入文件的时间是在页面被请求的时候。

page属性是被包含的资源的相对URL地址。flush属性是定义在包含资源前是否刷新缓冲区。

6.2 jsp:useBean元素

用来加载一个在页面中使用的JavaBean组件。

class属性指定Bean的完整包名。type属性指定引用该对象的变量类型。

6.3 jsp:setProperty元素

用来设置已经实例化的Bean对象的属性。

name属性表示要设置属性的Bean。property属性表示要设置哪个属性。value属性用来指定Bean属性的值。param属性指定用哪个请求参数来设置Bean属性的值。

如果jsp:setProperty元素位于jsp:useBean元素外部,不管是新创建一个Bean实例,还是已有一个Bean实例,都会执行。如果jsp:setProperty元素位于jsp:useBean元素内部,只有在新创建一个Bean实例时才会执行。

6.4 jsp:getProperty元素

获取指定Bean对象的属性值。

name属性是要检索的Bean的名称。property属性表示要获取的属性。

6.5 jsp:forward元素

将请求转发给其他页面。

page属性是一个相对URL。

6.6 jsp:plugin元素

用于在生成的HTML页面中包含JavaBean对象。

6.7 jsp:element、jsp:attribute、jsp:body元素

定义动态的XML元素、元素的属性以及元素的内容。

6.8 JSP:text元素

允许在JSP页面和文档中使用写入文本的模板,该模板只能包含文本和EL表达式。

template

7、JSP隐含对象

JSP包含九个预定义的对象,对应servlet中的类:

request,是HttpServletRequest类的实例

response,是HttpServletResponse类的实例

session,是HttpSession类的实例

application,是ServletContext类的实例

out,是PrintWriter类的实例,用于把结果输出到网页上

config,是ServletConfig的实例

pageContext,是PageContext类的实例,提供对页面所有对象的访问

Exception,是Exception类的实例

page,类似于Java类中的this关键字

五、表单处理

在浏览网页的时候,经常需要向服务器提交信息,由后台程序进行处理。

1、GET和POST方法

GET方法是浏览器默认的传递参数的方法。将请求的信息添加到URL后面,之间用“?”分隔,参数之间用“&”分隔。

http://url?key1=value1&key2=value2

POST提交的数据是不可见的,即不在url显示。

2、读取表单数据

JSP读取表单数据有以下几种方法:

getParameter(),获取表单参数的值

getParameterValues(),获取名字相同但有多个值的数据,返回数组

getParameterNames(),获取所有变量的名称,返回枚举

getInputStream(),获取来自客户端的二进制数据流

六、过滤器

过滤器可以动态地拦截请求和响应。可以将一个或多个过滤器附加到一个servlet或一组servlet,也可以附加到JSP文件和HTML页面。

过滤器通过web.xml中的标签声明,然后映射到servlet或url。当web容器启动web应用程序时,会为声明的每一个过滤器创建一个实例。过滤器的执行顺序与配置文件中的配置顺序一致。

过滤器是一个实现javax.servet.Filter接口的类,接口定义了三个方法,分别对应了过滤器生命周期的三个阶段。

初始化阶段:

public void init(FilterConfig filterConfig)

web应用程序启动时,web服务器会创建Filter的实例对象并调用其init()方法,读取配置文件,完成对象的初始化,从而为拦截请求做好准备。

过滤阶段:

public void doFilter (ServletRequest, ServletResponse, FilterChain)

当客户端的请求方法与过滤器的设置匹配时,servlet容器会调用过滤器的doFilter()方法,完成过滤操作。参数FilterChain用来访问后续过滤器。

销毁阶段:

public void destroy()

servlet容器在销毁过滤器实例前调用该方法,释放过滤器占用的资源。

七、跳转

按照跳转的处理方式分成两类:客户端跳转和服务器跳转。

1、客户端跳转

使用超链接:

跳转

使用JavaScript脚本:

function onSubmit() {

submit();

}

提交表单:

使用jsp的内置对象response:

response.sendRedirect("http://www.google.cn");

%>

或者

response.sendHeader("Refresh","1;url=http://www.google.cn");

%>

2、服务器跳转

使用RequestDispatcher类的forward方法。

RequestDispatcher rd = request.getRequestDispatcher("/newPage.jsp");

rd.forward(request, response);

3、sendRedirect和forward的区别

sendRedirect:

执行完所有代码再跳转到目标页面

跳转后浏览器的url会改变

在浏览器中重定向

可以跳转到其他服务器

forward:

直接跳转到目标页面,不执行后续代码

跳转后url不会改变

在服务器端重定向

不能跳转到其他服务器

参考文章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值