1) 用于检索信息(如文档、图表或数据库请求结果) 2) 请求的页面可以被设置为书签和使用电子邮件发送 3) 请求信息作为查询字符串发送 (2)POST 方法
1) 用于发送敏感信息(如信用卡号)或要保存到数据库中的信息 2) 请求的页面不能设置为书签或不能通过电子邮件发送 3) 发送的数据没有大小限制 4、用来专门提供WWW服务的服务器软件就叫Web服务器。常用的Web服务器:Apache,IIS,常用的应用服务器GlassFish,Tomcat.
5、Web 应用程序使用三层体系结构:数据层(数据库)业务层(web服务器)表示层(客户端)
6、文档根目录:静态文件(html, images„„) WEB-INF(类,库,标签,web.xml),JSP 第二章 Servlet 使用入门
1、Servlet 是一个用 Java 编写的程序,此程序在服务器上运行以处理客户端请求。 2、Servlet 容器创建 Servlet 的一个实例
Servlet 的生命周期就是指创建 Servlet 实例之后其存在的时间以及何时消失 生命周期的 3个方法为:init(),service(),destroy() Servlet生命周期概括为下几个阶段:
1)转载servlet 2)创建一个servlet实例 3)初始化:容器调用init()方法对servlet实例进行初始化 4)服务:service()方法响应客户请求 5)销毁:容器调用destroy()方法销毁servlet实例 3、web.xml文件中配置Servlet
4、编写Servlet需要遵循其规范: 继承HttpServlet;覆盖doGet()、doPost()方法之一或全部 5、HTTP请求报头是指客户端向服务器发送的HTTP请求中的头信息。HttpServletRequest 的getHeader()方法是读取请求报头的通用方式;HttpServletResponse 的setHeader()方法是设置响应报头的通用方式。
6、请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应。 重定向和请求转发是servlet
7、重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址。
重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法用于生成302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL,相当于浏览器重新发送一个请求。
8、HttpServletResponse的getWriter()获取向客户端发送信息的输出流 9、请求转发和重定向区别如下:2
1) forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect方法不仅可以重
定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。
2) sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,
由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
3) forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而
sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。
第三章 会话跟踪简介
1、HttpServletRequest 的 getSession() 方法用于创建会话,其语法如下: public HttpSession getSession();
public HttpSession getSession(boolean value);
如果没有与当前请求关联的会话,则 getSession() 方法用于创建会话。
如果布尔值为 true 且当前没有与请求关联的会话,则使用 getSession(boolean value) 创建会话。如果布尔值为 false,如果没有与当前请求关联的会话,返回null。 2、会话跟踪技术(即用来实现session技术的方法):URL重写和Cookie
3、 URL重写:将sessionID以参数的形式附加在URL地址后的技术成为URL重写。 HttpServletResponse接口中定义了两个用于完成URL重写的方法:1)encodeURL(); 2)encodeRedirectURL(); 他们根据消息中是否包含Cookie头字段来决定是否进行URL重写。 三种结束Session的情况:(1)关闭浏览器(2)调用HttpSession的invalidate()方法(3)会话超时:两次访问的时间间隔大于Session定义的非活动时间间隔 4、(1) HttpSession对象获取
request.getSession(boolean create)获取当前Session或者request.getSession(true) (2)HttpSession接口的主要方法
void setAttribute(String name, Object value) 将value对象以name名称绑定到会话
Object getAttribute(String name)获取指定name的属性值,如果属性不存在,则返回null Enumeration getAttributeNames()返回与会话相关的枚举值 void invalidate()使会话失效同时删除属性对象
int getMaxInactiveInterval()返回会话期间内客户请求的最长时间(秒)
void removeAttribute(String name) 从会话中删除name属性,如果不存在则不执行,也不会抛出异常
void setMaxInactiveInterval(int interval)允许客户请求的最长时间
第四章 JSP简介
1、JavaServer Pages(JSP)Java 服务器页面
JSP是一种动态网页编写技术;JSP允许在页面中包括Java代码;JSP文件的扩展名为.jsp;JSP文件的标记还可以使用XML语法;最新的版本为JSP 2.1;有效地控制动态内容生成;在Java Server Page里面使用 Java 编程语言和类库;HTML 用于表示页面,而 Java 代码用于
访问动态内容。 2、JSP页面元素
静态内容:HTML静态文本
指令:以“<%@ ” 开始,以“%> ” 结束。比如:<%@ include file = \" Filename\" %> 表达式:<%=java表达式%>如:<%=getHello(\"朋友\")%>
脚本:<%java代码%>如:<% Calendar now = Calendar.getInstance(); %> 声明:<%!函数或方法%><%!private int getDateCount =0;%> 动作:以“ 4、代码注释 使用“//”对单行代码进行注释 使用“/* */”方式对多行代码进行注释 使用“/** */”方式对多行代码进行注释 使用“<%-- --%>”对多行代码进行注释 使用“”对多行HTML代码进行注释 5、JSP声明就是在JSP页面中声明Java方法或变量等 6、JSP指令的语法格式:<%@ 指令名 属性=“值”属性=“值”%> 常用的三种指令:Page指令 ,include指令 ,taglib指令。 1)page 指令用于设置 JSP 页面的属性。 Import属性可以在当前JSP页面中引入JSP脚本代码中需要用到的其他类。 <%@ page import =\"java.io.*\" %> ContentType用于指定JSP输出内容的MIME类型和字符集 pageEncoding属性:<%@ page pageEncoding= \"UTF-8\" %> Session属性用于控制页面是否需要使用Session会话,默认值“true”表示使用会话 ErrorPage属性用于指定当前JSP页面中出现未被捕获的异常时所要跳转到的页面 isErrorPage属性<%@ page isErrorPage=\"true\" %>是否使用内置的exception对象来获取相关的异常信息。 buffer属性用来设置用来存储客户端请求的缓冲区的大小 2)include 指令用于在运行时将 HTML文件或 JSP页面嵌入到另一个 JSP页面 include 指令语法: <%@ include file = ”文件名” %> 3)taglib指令可以让JSP页面使用标,taglib 指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签库表述文件中的标签 语法: <%@ taglib uri = ”标签库表述符文件” prefix = ”前缀名” %> 第五章 内置对象 内置对象:是指由JSP容器加载的,不用声明就可以直接在JSP页面中使用的对象。 1、输入/输出对象:控制页面的输入和输出,访问与所有请求和响应有关的数据。包括: 1)request对象 表示客户端对网页的请求,实现 javax.servlet.http.HttpServletRequest接口,使用 HTTP 协议处理客户端的请求。 request对象常用方法: String getParameter(String name) 根据页面表单组件名称获取请求页面提交数据 String[ ] getParameterValues (String name) 获取页面请求中一个表单组件对应多个值时的用户的请求数据 2)response对象 处理JSP 生成的响应,将响应发送给客户端,实现javax.servlet.http.HttpServletResponse 接口,使用 HTTP 协议将响应发送给客户端。 response 对象常用方法 void setContentType (String name) 设置作为响应生成的内容的类型和字符编码 void sendRedirect (String name) 发送一个响应给浏览器,指示其应请求另一个URL 3)out对象 表示输出流,javax.servlet.jsp.JspWriter 类的实例,使用 write()、print() 和 println() 方法。 2、作用域通信对象:隐式对象的作用域包括pageContext、request、session 和 application,他们都具有getAttrubute()和setAttrubute()方法。作用域通信对象包括 session、application 和 pageContext 1)Session对象 Web 服务器为单个用户发送的多个请求创建会话,存储有关用户会话的所有信息javax.servlet.http.HttpSession 接口的实例,session 对象最常用的方法有: void setAttribute(String name,Object value) 以键/值的方式,将一个对象的值存放到session 中 void getAttribute(String name) 根据名称去获取session中存放对象的值 2)application对象 表示 JSP 页面所属的应用程序,应用程序的 JSP 页面组合起来形成一个应用程序 javax.servlet.ServletContext接口实例 ,application对象最常用的方法有: void setAttribute(String name,Object value) 以键/值的方式,将一个对象的值存放到application中 void getAttribute(String name) 根据名称去获取application中存放对象的值 3)pageContext对象 使用户可以访问页面作用域中定义的所有隐式对象,它的作用范围是在同一页面, javax.servlet.jsp.PageContext 类的实例。pageContext对象最常用的方法有: void setAttribute(String name,Object value) 以键/值的方式,将一个对象的值存放到pageContext中 void getAttribute(String name) 根据名称去获取pageContext中存放对象的值 3、servlet对象 JSP 引擎为每个 JSP 生成一个 Servlet,Servlet对象提供了访问 Servlet 信息的方法和变量 1)page对象 使用 page 对象可以访问 Servlet 类的所有变量和方法。 2)config对象 存储在编译 JSP 页面的过程中创建的 Servlet 的信息,javax.servlet.ServletConfig 接口的实例,提供了检索 Servlet 初始化参数的方法。 (String)config.getInitParameter(”name”);返回指定名称的初始参数值。 4、错误对象: exception对象 用于处理 JSP 页面中的错误,访问执行 JSP 的过程中引发的异常,是java.lang.Throwable 类的实例。Page指令的isErrorPage属性值设置为“true”,否者无法使用exception内置对象。 第六章 JavaBean和JSP中的标准动作 1、JavaBean Sun公司对JavaBean的定义为:可以重复利用的软件组件,它在遵循JavaBean技术规范的基础上提供特定的功能,这些功能模块可以组合成更大规模的应用系统。 广义上的JavaBean要满足以下的要求: 1)是一个公有类,含有公有的无参构造方法2)属性私有3)属性具有公有的get和set方法。 JSP 可使用 JSP 标准动作调用 JavaBean 组件并访问属性。 2、标准动作用于: 将 JavaBean 嵌入 JSP 页面;设置和获取 JavaBean 的属性;将用户请求转发给其他页面;将其他页面的内容嵌入当前页面;标准动作中的属性区分大小写;JSP 中的标准动作使用 3、JSP规范定义了一系列标准动作,常用的有: 1)jsp:useBean:查找或者实例化一个JavaBean。 id:制定该JavaBean实例的变量名,通过id可以访问这个实例。 Class:制定JavaBean的类名 scope:制定JavaBean的作用范围,有page(默认值,Bean 只能在使用页面时使用。当加载新页面时,就会将其销毁),request(只能应用于当前请求),Session(此JavaBean能应用于当前会话),application(能应用于整个应用程序内) 2)jsp:setProperty:设置JavaBean的属性。 5)jsp:forward:把请求转发到另一个页面。 第七章 表单式语言(EL)与标准标签库(JSTL) 1、EL是JSP2.0最重要的特性之一,有以下几个特点: 可以访问JSP的内置对象(pageContext、request、Session、application等),简化了JavaBean的访问方式,简化了对集合的访问方式,可以通过关系、逻辑、和算术运算符进行运算,可以进行条件输出。 2、EL基础语法 ${EL 表达式} 如 ${person.name} 3、JSP EL 表达式用于以下情形:静态文本、标准标签和自定义标签。 4、在 JSP 中禁用计算,以忽略 JSP 中 EL 表达式的执行。禁用 EL 计算的语法为: <%@ page isELIgnored =\"true|false\" %>、 5、点运算符 ( . ) 或方括号( [ ] ) 访问变量的值。 6、Java Server Pages 标准标签库 (JSTL) 包含的各种标签可用于 JSP 页面中。 JSTL 的优点:提供一组标准标签; 可用于编写各种动态 JSP 页面;用于访问数据库、有条件地执行代码和支持国际化。 JSTL提供的标签库分为5部门:核心标签库、国际化输出标签库(I18N)、XML标签库、SQL标签库、EL函数库 7、核心标签库按标签功能分为: 通用标签:用于操作变量 条件标签:用于进行条件判断和处理 迭代标签:用于循环遍历一个集合 URL操作标签:用于一些针对URL的操作 8、通用标签包括以下四种: 1) 2) 1) body content 2) body content ( 3) 4) 须是最后一个分支。 10、迭代标签用于多次计算标签体,包括: 1) 11、URL标签:2) 1) 字符集与编码方法 1、ASCII使用7个比特(bit)进行字符编码,最多可以表示的字符数量为27(128)个字符,这些字符包括了大小写英文字母、阿拉伯数字、标点符号、控制字符和其他符号。 每个字符用一个字节表示,每个字节的最高位为0。例如:字符“A”在用ASCII码中用2进制的“01000001”表示,换算成10进制为“65”。 2、ISO8859-1,又称Latin-1,是在ASCII的基础上,使用8比特编码,新增了一些字符。新增的字符主要用来支持部分欧洲国家所使用的语言,例如:德语、葡萄牙语和西班牙语等。也就是说,ISO8859-1兼容ASCII。 3、1981年,开始使用国家标准《信息交换用汉字编码字符集-基本集》,简称GB2312。 使用双字节编码,一共包含了7445个字符,包括了6763个常用的汉字。对汉字分成了两级,一级为常用字,有3755个字符,按照拼音排序,二级为次常用字,包括3008个字符,按照部首排序。GB2312主要应用在中国大陆和新加坡,几乎所有的中文系统和国际化的软件都支持GB2312,同时GB2312兼容ASCII。 4、在GB2312的基础上又进行了扩充。在1995年,推出了《汉字内码扩展规范》,简称GBK。GBK收录了21886个汉字和图形符号,其中汉字21003个,图形符号883个,并且向下与GB2312编码完全兼容。 5、GB18030-2000编码标准是由信息产业部和国家质量技术监督局在2000年联合发布的,GB18030编码标准是在原来的GB2312和GBK编码标准的基础上进行扩充,增加了一些新的 字符,特别是一些少数民族使用的字符。它的主要目的是为了解决一些生、偏、难字的问题。 6、 BIG5又称为大五码,是针对繁体汉字的汉字编码,目前广泛应用在在台湾、澳门和香港地区的电脑系统中。BIG5也是双字节编码,一共收录了5401个常用字和7652个次常用字。 7、Unicode 1991年Unicode把世界上几十种文字整合在一个字符集中,Unicode中的每个字符都有一个唯一的数字进行表示。Unicode是由Unicode组织进行相关标准的制订与推广。 现在Unicode已经被广泛的使用,Java语言、MSWindows XP、和MS Office等软件内部都使用了Unicode作为内码。官方网址:http://www.unicode.org。Unicode最新的版本为5.0。 8、Java Web编程中文乱码解决方法 1)调用JSP页面显示乱码 通过浏览器调用JSP页面,在浏览器中所有的中文内容出现乱码。 首先确认本JSP在编辑器中保存文件内容时,使用的是UTF-8的编码格式,然后在JSP页面的开始,添加<%@page pageEncoding=\"UTF-8\"%>,就可以解决这个中文乱码问题。 2)调用Servlet页面显示乱码 通过浏览器调用Servlet,Servlet在浏览器中显示的内容出现乱码。 在Servlet使用response对输出内容之前,先执行 response.setContentType(\"text/html;charset=utf-8\") , 设定输出的内容的编码为UTF-8。 3)POST表单传递参数乱码 通过JSP页面、HTML页面或者Servlet中的表单元素提交参数给对应的JSP页面或者Servlet,而JSP页面或者Servlet接收的中文参数值乱码。 在接收POST 提交的参数之前, 使用request.setCharacterEncoding(“UTF-8”) 设定接收参 数的内容使用UTF-8编码。 更好的解决方法,就是使用过滤器技术,在接收参数之前,设定传递的参数内容的编码是UTF-8。 4)URI方式传递参数乱码 使用表单传递参数,可以通过POST或者GET方式。 不使用表单,还可以使用链接方式传递参数,这种传递参数的方法本质上就是GET方式传递参数,这种传递参数的值是中文,也会出现乱码。 因篇幅问题不能全部显示,请点此查看更多更全内容