Java Web学习笔记.docx

上传人:b****8 文档编号:27774563 上传时间:2023-07-04 格式:DOCX 页数:22 大小:36.60KB
下载 相关 举报
Java Web学习笔记.docx_第1页
第1页 / 共22页
Java Web学习笔记.docx_第2页
第2页 / 共22页
Java Web学习笔记.docx_第3页
第3页 / 共22页
Java Web学习笔记.docx_第4页
第4页 / 共22页
Java Web学习笔记.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Java Web学习笔记.docx

《Java Web学习笔记.docx》由会员分享,可在线阅读,更多相关《Java Web学习笔记.docx(22页珍藏版)》请在冰豆网上搜索。

Java Web学习笔记.docx

JavaWeb学习笔记

一、JSP基础知识回顾

2.2JSP元素组成

JSP文件由6类基本元素组成:

✧JSP指令

✧JSP声明

✧JSP表达式

✧JSP脚本

✧JSP动作

✧JSP注释

2.2.1JSP指令

JSP指令的语法格式如下:

<%@指令名属性="值"属性="值"%>

常用的三种指令为:

✧page指令

✧include指令

✧taglib指令

2.2.1.1page指令

page指令用于设置页面的各种属性,如导入包、指明输出内容类型、控制Session等。

page指令一般位于JSP页面的开头部分,一个JSP页面可包含多条page指令。

例如:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>

2.2.1.2include指令

include指令用于在当前JSP中包含其他文件。

被包含的文件可以是JSP、HTML或文本文件。

包含的过程发生在将JSP翻译成Servlet时,当前JSP和被包含的JSP会融合到一起,形成一个Servlet,然后进行编译并运行。

例如:

<%@includefile="./top.jsp"%>

2.2.1.3taglib指令

taglib指令用于指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签。

例如:

<%@tagliburi="prefix="c"%>

2.2.2JSP声明

JSP声明用于在JSP页面中定义变量和方法。

JSP声明通过“<%!

%>”定义。

一个JSP页面可以有多个声明,并且每个声明中可以同时定义多个变量或方法,其中,每个JSP声明只在当前JSP页面中有效。

JSP声明的语法格式如下:

<%!

声明的内容%>

例如:

<%!

longcountNum=0;

//人数自增长方法

publicsynchronizedvoidaddNumber(){

countNum++;

}

%>

2.2.3JSP表达式

JSP表达式用于将Java表达式的运行结果输出在页面中。

JSP表达式通过“<%=%>”定义。

在JSP表达式中可以包含任何一个有效的Java表达式。

当请求JSP页面时,表达式会被运行并将结果转化成字符串插入到该表达式所在的位置上。

JSP表达式的语法格式如下:

<%=表达式%>

例如:

您是第<%=countNum%>个访问本页面的用户

2.2.4JSP脚本

JSP脚本用于在JSP页面中插入Java代码,JSP脚本通过“<%”和“%>”定义,其中可以包含任何符合Java语法的代码。

JSP脚本在服务器端执行,当JSP页面被请求时,页面上的JSP脚本会从上到下依次执行。

JSP脚本的语法格式如下:

<%Java代码%>

例如:

<%

addNumber();

%>

2.2.5JSP动作标签

Jsp中有6个动作标签:

include、forward、useBean、getProperty、setProperty、plugin。

2.2.5.1include标签

include>标签表示包含一个静态的HTML或者动态的JSP文件。

语法:

include page="path" flush="true" />

include page="path" flush="true">

param name="paramName" value="paramValue" />

include>

注意:

1、page="path" 为相对路径,或其表达式。

2、flush="true" 必须设置flush为true,因为它默认值是false。

3、

param>子句能传递一个或多个参数给动态文件,也可在一个页面中使用多个

param>来传递多个参数给动态文件。

例如:

includepage="../top.jsp">

include>

include/>与<%@include/%>之间的区别:

1、<%@include/%>将引用文件a.jsp的内容加入到b.jsp中一起进行编译,然后运行显示;

include/>是将引用文件a.jsp的内容和b.jsp的内容各自独立编译,在运行的时候再将a.jsp加入到b.jsp内容当中进行显示,并可以传递参数。

2、<%@include/%>是静态引用,不会实时检查引用文件内容变化,适用于引用静态页面;

include/>是动态引用,会实时检查引用文件内容变化,适用于引用动态页面,并且可以带参数。

 

2.2.5.2forward标签

forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。

语法:

forward page="path"} />

forward page="path"} >

param name="paramName" value="paramValue" />

forward>

注意:

1、page="path" 为一表达式,或一个字符串。

2、

param> name 指定参数名,value指定参数值。

参数被发送到一个动态文件,参数可以是一个或多个值,而这个文件却必须是动态文件。

要传递多个参数,则可在一个JSP文件中使用多个

param>将多个参数发送到一个动态文件中。

例如:

forwardpage="../top.jsp">

forward>

2.2.5.3useBean标签

useBean>标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。

语法:

useBean id="name" scope="page | request | session | application" typeSpec />

其中typeSpec有以下几种可能的情况:

class="className" | type="typeName"

|class="className" type="typeName" 

|beanName="beanName" type="typeName" 

注:

必须使用class或type,但不能同时使用class和beanName。

beanName表示Bean的名字。

例如:

useBeanid="user"scope="page"class="com.hyg.pojo.User">

useBean>

2.2.5.4setProperty标签

setProperty>标签表示用来设置Bean中的属性值。

语法:

setProperty name="beanName" prop_expr />

其中prop_expr有以下几种可能:

property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

注意:

使用 jsp:

setProperty 来为一个Bean的属性赋值;可以使用两种方式来实现。

1、在jsp:

useBean后使用jsp:

setProperty:

useBean id="user" … />

setProperty name="user" property="userNo" … />

在这种方式中,jsp:

setProperty将被执行。

2、jsp:

setProperty出现在jsp:

useBean标签内:

useBean id="user" … >

setProperty name="user" property="userNo" … />

useBean>

在这种方式中,jsp:

setProperty只会在新的对象被实例化时才将被执行。

2.2.5.5getProperty标签

getProperty>标签表示获取Bean属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。

语法:

getProperty name="name" property="propertyName" />

注意:

1、在使用

getProperty>之前,必须用

useBean>来创建它。

2、不能使用

getProperty>来检索一个已经被索引了的属性。

3、能够和JavaBeans组件一起使用

getProperty>,但不能与Enterprise Java Bean一起使用。

例如:

用户名:

getPropertyproperty="userNo"name="user"/>

2.2.5.6plugin标签

plugin>元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件,因此有可能的话还要下载一个java插件用于执行它。

2.3Jsp内置对象

JSP内置对象是指由JSP容器加载的,不用声明就可以直接在JSP页面中使用的对象。

JSP中有9个内置对象,下表所示。

JSP内置对象

属性名

说明

作用域

request

客户端的请求,包含所有从浏览器发往服务器的请求信息

request

response

返回客户端的响应

page

session

会话对象,表示用户的会话状态

session

application

应用上下文对象,作用于整个应用程序

application

out

输出流,向客户端输出数据

page

pageContext

用于存储当前JSP页面的相关信息

page

config

JSP页面的配置信息对象

page

page

表示JSP页面的当前实例

page

exception

异常对象,用于处理JSP页面中的错误

page

2.3.1request对象

request对象是javax.servlet.httpServletRequest类型的对象。

该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。

(包括头信息、系统信息、请求方式以及请求参数等)。

request对象的作用域为一次请求。

2.3.2response对象

response代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。

response对象也具有作用域,它只在JSP页面内有效。

2.3.3session对象

session对象是由服务器自动创建的与用户请求相关的对象。

服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。

session对象内部使用Map类来保存数据,因此保存数据的格式为“Key/value”。

session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

2.3.4application对象

 application对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。

与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

2.3.5out对象

out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。

待数据输出完毕后,要及时关闭输出流。

2.3.6pageContext对象

pageContext对象的作用是取得任何范围的参数,通过它可以获取JSP页面的out、request、reponse、session、application等对象。

pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。

2.3.7config对象

config对象的主要作用是取得服务器的配置信息。

通过pageConext对象的getServletConfig()方法可以获取一个config对象。

当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。

开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

2.3.8page对象

page对象代表JSP本身,只有在JSP页面内才是合法的。

page隐含对象本质上包含当前Servlet接口引用的变量,类似于Java编程中的this指针。

2.3.9exception对象

exception对象的作用是显示异常信息,只有在包含isErrorPage="true"的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

excepation对象和Java的所有对象一样,都具有系统提供的继承结构。

exception对象几乎定义了所有异常情况。

在Java程序中,可以使用try/catch关键字来处理异常情况;如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的exception对象。

例如:

在jsp4.jsp页面,添加<%@pageerrorPage="error.jsp"%>指定错误处理页面,并在当前页面发生一个异常信息。

在error.jsp页面添加<%@pageisErrorPage="true"%>指定当前页面是错误处理页面,将错误信息显示出来。

二、Servlet知识点回顾

3.1Servlet使用配置

创建Servlet需要首先需要创建一个Servlet类,并且这个类需要继承HttpServlet,然后重写doGet()/doPost()方法实现业务逻辑流程。

TestServlet.java代码如下:

publicclassTestServletextendsHttpServlet{

privatestaticfinallongserialVersionUID=1L;

publicvoidinit(ServletConfigconfig)throwsServletException{

//TODOAuto-generatedmethodstub

System.out.println("进入TestServlet。

");

}

publicvoiddestroy(){

//TODOAuto-generatedmethodstub

System.out.println("销毁TestServlet。

");

}

protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//TODOAuto-generatedmethodstub

System.out.println("调用service()方法。

");

response.setContentType("text/html");

response.setCharacterEncoding("UTF-8");

PrintWriterout=response.getWriter();

out.append("welcometo英谷教育");

out.flush();

}

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

System.out.println("调用doGet()方法。

");

}

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

System.out.println("调用doPost()方法.................");

}

}

其次需要配置Web.xml文件,在该文件中指定自定义的Servlet的信息即可。

Web.xml中Servlet的配置信息如下:

TestServlet

com.hyg.servlet.TestServlet

TestServlet

/TestServlet

 

注意:

是自定义的servlet名称(唯一);用于指定当前servlet所在的类路径;用于指定进入当前servelt时访问的url地址。

3.2Servlet生命周期

Servlet生命周期概括为以下几个阶段:

1)装载Servlet:

这项操作一般是动态执行的,有些服务器提供了相应的管理功能,可以在启动的时候就装载Servlet;

2)创建一个Servlet实例:

容器创建Servlet的一个实例对象;

3)初始化:

容器调用init()方法对Servlet实例进行初始化;

4)服务:

当容器接收到对此Servlet的请求时,将调用service()方法响应客户的请求;

5)销毁:

容器调用destroy()方法销毁Servlet实例。

3.3重定向和请求转发

3.3.1重定向

重定向是指页面重新定位到某个新地址,之前的Request失效,进入一个新的Request,且跳转后浏览器地址栏内容将变为新的指定地址。

重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法用于生成302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL,其语法格式如下:

pubilcvoidsendRedirect(java.lang.Stringlocation)throwsjava.io.IOException

其中:

✧location参数指定了重定向的URL,它可以是相对路径也可是绝对路径。

sendRedirect()不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他应用程序中的资源,例如:

response.sendRedirect("");

3.3.2请求转发

请求转发是指将请求再转发到另一页面,此过程依然在Request范围内,转发后浏览器地址栏内容不变。

请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应。

RequestDispatcher接口有两个方法:

✧forward()方法:

请求转发,可以从当前Servlet跳转到其它Servlet;

✧include()方法:

引入其他Servlet的内容。

RequestDispatcher是一个接口,通过使用HttpRequest对象的getRequestDispalcher()方法可以获得该接口的实例对象,例如:

RequestDispatcherrd=request.getRequestDispatcher(path);

rd.forward(request,response);

3.3.3重定向和请求转发的区别

1、请求转发只能将请求转发给同一个Web应用中的组件,而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。

2、重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而请求转发访问过程结束后,浏览器地址栏保持初始的URL地址不变。

3、请求转发的调用者与被调用者之间共享相同的request对象和response对象;而重定向的调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。

3.4Session

3.4.1session生命周期

Session生命周期经过以下几个过程:

1)客户端向服务器第一次发送请求的时候,request中并无SessionID。

2)此时服务器会创建一个Session对象,并分配一个SessionID。

Serssion对象保存在服务器端,此时为新建状态,调用session.isNew()返回true。

3)当服务器端处理完毕后,会将SessionID通过response对象传回到客户端,浏览器负责保存到当前进程中。

4)当客户端再次发送请求时,会同时将SessionID发送给服务器。

5)服务器根据传递过来的SessionID将这次请求(request)与保存在服务器端的Session对象联系起来。

此时Session已不处于新建状态,调用session.isNew()返回false。

6)循环执行过程3-5,直到Session超时或销毁。

3.4.2Session的常用方法

3.4.2.1获取session

HttpSessionsession=request.getSession();//获取当前Session

3.4.2.2在session中存取数据

用于存取数据的方法有:

✧setAttribute():

用于在Session对象中保存数据,数据以Key/Value映射形式存放。

✧getAttribute():

从Session中提取指定Key对应的Value值。

向Session对象中保存数据的示例代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1