J2EE经典学习笔记
- 格式:doc
- 大小:252.00 KB
- 文档页数:114
说明:在编程中我们会在某个类、方法或变量前面加上@x,来表明这个类、方法或变量具有x属性。
1.Servlet1).Servlet 是什么?Java Servlet 是运行在Web 服务器或应用服务器上的程序,它是作为来自Web 浏览器或其他HTTP 客户端的请求和HTTP 服务器上的数据库或应用程序之间的中间层。
2).Servlet 有以下几点优势(1).性能明显更好。
(2).Servlet 在Web 服务器的地址空间内执行。
这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
(3).Servlet 是独立于平台的,因为它们是用Java 编写的。
(4).服务器上的Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。
因此,Servlet 是可信的。
(5).Java 类库的全部功能对Servlet 来说都是可用的。
它可以通过sockets 和RMI 机制与applets、数据库或其他软件进行交互。
3).Servlet 架构过程为:(1) 客户端发送请求至服务器端;(2) 服务器将请求信息发送至Servlet;(3) Servlet 生成响应内容并将其传给服务器。
响应内容动态生成,通常取决于客户端的请求;(4) 服务器将响应返回给客户端。
4).servlet生命周期(1).客户端请求该Servlet;(2).加载Servlet 类到内存;(3).实例化并调用init()方法初始化该Servlet;(4).service()(根据请求方法不同调用doGet() 或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());(5).destroy()。
5).看一下老师ppt和教程(这个很不错/holandstone/article/details/16844957)想学的更好就看servlet-api.chm2.web socket(1).web socket:是HTML5一种新的协议。
J2EE 读书笔记第一部分第一章:J2EE概述1、Java Bean,Java Servlet和JSP是J2EE的核心部分。
2、J2EE还包含7个标准服务分别是:●符合CORBA技术标准(Common Object RequestBroker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)。
JavaIDL和RMI-IIOP技术遵循上述标准。
JavaIDL使Java程序与基于CORBA技术标准系统互联。
RMI-IIOP是JAVA远程调用(JAVA Remote MethodInvocation)API和Internet Inte-ORB协议(IIOP)的混合体,IIOP用CORBA连接JAVA程序与遗留系统。
●JavaMail API●Java消息服务(JMS)●Java命名和目录借口API (JNDI)●Java事务API(JTA)●JDBC API●XML部署描述符常见功能:1、管理容器和EJB之间的事务,2、注册消息驱动Bean到一个队列3、定义JNDI查找名称4、管理状态和无状态回话Bean第二章:J2EE多层架构1、层层是一个抽象的概念,它定义一组为其用户一种或多种服务(组件)的技术。
2、客户端●当某个资源发送一个服务请求到服务提供者时,这个资源被认为是客户端。
●客户端指请求组件服务的程序。
●客户端是指发送请求的任何组件。
3、服务服务是指接受和完成客户端请求的任意资源。
4、资源资源是组件提供服务所需的任何东西。
5、容器容器式管理组件的软件,并为组件提供系统服务。
6、多层架构包括客户端、资源、组件和容器。
J2EE里术语“组件”用来替代“服务”,两者在意义上是一样的。
7、API定义组件必须遵循的规则和从容器得到的服务。
8、容器负责持久性、资源管理、安全性、线程和其他系统级的与容器相关的组件服务。
9、组件负责实现业务逻辑。
10、J2EE多层架构包括客户层(有时候被称作表现层或应用层)、Web层、EJB层(有时称作业务层)和EIS层(企业信息系统层、Enterprise Information System Tier)。
J2EE学习心得通过这个学期的学习,我对J2EE有一定的了解。
比较庆幸的是以前学过一些JA V A开发程序,所以听老师讲课不是很吃力。
以下是我这学期对J2EE的学习心得。
对您第一堂课的内容记忆犹新您给我们了J2EE是Java2平台企业版(Java 2 Platform,Enterprise Edition),Java2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。
J2EE是企业版本,J2EE的优势在于为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制,保留现存的IT资产,高效的开发,支持异构环境,可伸缩性,稳定的可用性。
J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。
J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB (Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。
下面是J2EE体系结构图:J2EE 所需要的一些主要技术:1.EJB 技术Enterprise JavaBeans(EJB)是一个软件组件模型。
如今开发电于商务平台已大量使用组件技术.这是因为组件技术提供了服务器上的自治、企业级和分布式功能,并帮助开发者在不同颗粒度级别上定义和封装系统功能。
通过采纳组件技术、已建立旧系统的企业在与从一开始就围绕前沿组件体系结构设计的新公司竞争起来更容易。
JAVA(J2SE/J2EE)JAVA(J2SE/J2EE)学习笔记学习笔记/kv2004Java Paradise 群号:81556987,欢迎传播!JA V A(J2SE)基础一、JAVA 语法基础标识符-date:0908111.什么叫标识符?就是一个名字2.在JAVA 中,遇见的标识符有类名、方法名和变量名。
3.标识符的命名规则:i.标识符有字母、数字、下划线(_)以及美元($)符号组成。
ii.标识符不能以数字开头iii.不能和JAV A 中的关键字或者保留字重名4.标识符的命名规范:i.最好不要一下划线(_)或者美元($)符号开头ii.如果有多个单词组成,那么每个字符的首字符都大写。
例如:class Student{}class HelloWorld{}iii.如果标识符是方法名或者变量名:首字母应该小写;如果有多个单词组成,那么从第二个单词开始,首字母大写。
例如:String name;//用户名int stuAge;//学生的年龄iv.标识符最好有一定的意义。
int 整数=1;v.如果是常量名,那么全部字母都大写。
final double PI=3.1415926;关键字-date:0908111.什么叫关键字?具有特殊意义的一些单词。
2.举例说出几个关键字byte short int long float double char booleanpublic private protectedvoidreturntrue falsestatic final abstractif elseswitch caseforwhiledotry catchcontinuebreak数据类型的转换-date:0908111.基本数据类型可以相互转换(除boolean)2.可以将低精度的数据类型直接赋值给高精度的数据类型int i=1;short s=1;i=s;//可以自动进行转换3.当把高精度的数据类型赋值给低精度的数据类型时,必须强制类型转换。
2.java 基础Java入门一般应用从架构分两种:B/S(browser/Server)用浏览器直接打开;而C/S(Client/Server)用客户端打开。
从层次平台上分为:底层平台(OS、DB、Driver等)(为上层应用服务的)和上层应用(供用户使用的)。
java有跨平台性。
主要由于Java有JVM虚拟机。
JRE:java运行时环境;JDK :java开发者程序包;JDK目录下JRE具有调试debug。
Java基础语法一:标志符1.标志符只能包含字母、数字、下划线和$符号2.标志符只能以字母、下划线和$符号3.严格区分大小写4.标志符不能使用java的关键字二:常量和变量1、变量:程序中存储数据的最小单元,就是一块内存。
1byte(字节)=8bit1KB(千字节)=1024byte1MB(兆字节)=1024KB1GB(吉字节)=1024MB2、一个英文字符占1个字节,一个中文占2个字节3、程序中运行的本质:就是开辟了一块内存,在这块内存中数据直接不停转换。
内存:临时存储硬盘:长期存储独立显卡:有自己的显存集成显卡:从内存划分出一部分内存供自己使用。
4、变量必须先声明,再赋值,再使用。
例1:(第一个程序)3.数据类型转换和运算符数据类型转换1.小容量的自动转换成大容量。
小容量可以直接赋给大容量的。
例:int i = 23;其中23应该是byte类型。
但是可以直接转换成int型。
2.布尔类型不能转换成其它数据类型。
例:boolean i = true;中i不能转换其它类型。
3.大容量的要转换小容量,需要强制转换,并且注意溢出。
例:float i = 34.45(f);如果byte i = 534则错误。
4.char、byte、short 三者不能转换,这三种类型参加运算的时候是先把自己转换成int类型,再进行运算。
其它数据类型都是以最大的作为结果数据类型。
例:Char a= 123;short a = 567; byte b= 12; int i = a + b + c;自增和自减放在运算之前:先自身加1或者减1之后再运算;放在运算之后:先运算之后再自身加1或者减1。
断电调试F5:step intoF6:step overF7:step returnDrop to frame:跳到当前方法的第一行Resume:跳到下一个断点(如果没有下一个,则运行整个程序)Watch:观察变量或表达式的值断点注意的问题1.断点调试完成后,要在breakpoints视图中清除所有断点2.断点调试完成后,一定要记得结束运行的jvm常用快捷键Alt+/ 内容提示Ctrl+1 快速修复Ctrl+shift+O导包Ctrl+shift+F格式化代码块Alt+方向键//向前向后跟踪源代码Ctrl+shift+/ 添加注释Ctrl+shift+\ 除去注释F2 查看方法说明重置透视图更改为大写ctrl+shift+x更改为小写ctrl+shift+y复制行ctrl+Alt+向下键Alt+向上、下键代码上移和下移查看类的继承关系ctrl+T查看源代码:ctrl+shift+TCtrl+shift+L查看所有快捷键Junit测试工具注解@Test@before@after@beforeClass@afterClass断言类AssertJDK5.0新特性静态导入、自动装箱和拆箱、增强for循环、可变参数Import static 包名.类名.静态属性|静态方法|*Import static ng.System.out;Import static ng.Math.*;静态导入是指导入类里面的静态方法,也可以指定只导入某个静态方法Integer i=1;//装箱int j=i;//拆箱List list=new ArrayList();list.add(1);list.add(2);list.add(3);Iterator it=list.iterator();while(it.hasNext()){int k=(Integer) it.next();//拆箱常见web服务器:WebLogic是BEA公司的产品,是目前应用广泛的Web服务器IBM的WebSphere也是商业服务器免费的服务器Tomcat支持全部的JSP以及Servlet技术常用协议以及工作端口http 80sntp 25pop3 110ftp 23https 443安装Httpwatch监测网页源代码软件Servlet的一些细节:对于如下的一些映射关系1.Servlet1映射到/abc/*2.Servlet2映射到/*3.Servlet3映射到/abc4.Servlet4映射到*.do问题1.当请求URL为“/abc/a.html”,”/abc/*和“/*”都匹配,哪一个响应Servlet引擎将调用Servlet1.2.当请求URL为”/abc“时,”/abc/*和”/abc“和“/*”都匹配,哪一个响应Servlet引擎将调用Servlet33.当请求URL为”/abc/a.do“时,”/abc/*和“/*.do”都匹配,哪一个响应Servlet引擎将调用Servlet1当请求URL为”/a.do“时,”/*.do“和“/*”都匹配,哪一个响应Servlet引擎将调用Servlet2当请求URL为”/xxx/yyy/a.do“时,”/*“和“/*.do”都匹配,哪一个响应Servlet引擎将调用Servlet2Catalina_home环境变量尽量不要配置,它是指定tomcat服务器用的在server.xml文件中配置web应用供外界访问,也可以修改访访问端口可以在catalina/conf/新建xml<Context path=”/itcast”docBase=”C:\news”/>缺省web应用<Context path=””docBase=”C:\news”/>在Tomcat6中,不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素的说明。
JDBC1、JDBC开发的基础:»装入jdbc驱动程序»创建与数据库的连接»创建语句对象---Statement|PreparedStatement»利用语句对象执行sql语句得到结果»处理结果»jdbc应用结束2、JDBC常用的接口:»使用java.sql包»接口—DriverManager—Connection—Statement—PreparedStatement—ResultSet3、我们现在使用Access数据库进行举例:第一步:加载数据库驱动String DBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”;Try{Class.forName(DBDriver);}Catch(Exception e){System.out.println(“驱动加载失败!”);}第二步:连接数据库String url = “jdbc:odbc:textdb”;Connection conn = null;Try{con = DriverManager.getConnection(url);//这里主要是数据库没有设置密码,要是设置了密码的话,就要使用下面的。
//con = DriverManager.getConnection(url,id,password);}Catch(Exception e){System.out.println(“数据库连接失败!”);}第三:对数据库进行操作※主要涉及到的就是:Statement和PreparedStatement接口。
//定义用于操作数据库的Statement对象,并且通过Connection对象实例化Statement对象。
Statement stmt = null;Try{Stmt = conn.createStatement();}Catch(Exception e){Out.Println(“数据库操作失败!”);}※※这样之后我们就可以使用这个实例化好的对象执行SQL 语句。
Struts2:1、第一章Struts入门:【复习点】struts2的工作流程。
struts2是MVC框架,并作出说明。
2、第二章Action访问servlet API【复习点】Action访问servletAPI(jsp内置对象中的request、session和application)的常用方法。
复习ActionContext、ServletActionContext类的使用。
【复习点】:创建Action有几种方式?项目中常用的创建Action的形式是什么,在Action中能够使用的Action接口中的常量是什么?【复习点】:一个Action处理多个业务,有哪几种方式可以完成指定方法的调用3、第三章struts2标签—表单标签及fielderror标签【复习点】:熟悉表单标签中有哪些标签4、第四章OGNL表达式的使用【复习点】:怎么用OGNL表达式完成对象图的遍历。
怎么编写OGNL表达式。
OGNL表达式的作用。
5、第五章struts2标签—数据标签、控制标签【复习点】:数据标签、控制标签中有哪些【复习点】:s:if/s:else/s:elseif ,s:s:set; s:iterator。
详见以前案例。
6、第七章struts2输入校验与校验框架【复习点】:有几种形式可以完成校验,分别是什么。
Hibernate:1、第一章Hibernate入门【复习点】:Hibernate优点、对象关系映射(Object Relational Mapping,简称ORM)、Hibernate的工作原理或者工作步骤;Hibernate的第一个入门案例2、第二章Hibernate的核心API【复习点】:Hibernate的核心API有哪些?session接口中的常用方法的使用详见详见以前案例3、第三章操纵持久化对象【复习点】:持久化对象的状态有哪些,特点是什么,判断语句中某个对象处于的状态。
4、第四章Hibernate映射文件【复习点】:*.hbm.xml中,Hibernate映射文件结构<hibernate-mapping package=“”><class name="" table=""><id></id><property name="" column=""/><class/></hibernate-mapping>会编写hbm.xml文件【复习点】:主键-id映射中常用的id映射策略有哪些,区别是什么。
J2EE学习总结JSP的三个编译指令是通知JSP引擎的消息,它不直接生成输出。
编译指令都有默认值,因此开发人员无须为每个指令设置值。
常见的编译指令有如下三个:1.page:该指令是针对当前页面的指令;2.include:用于指定包含另一个页面;3.taglib:用于定义和访问自定义标签;编译指令的语法格式如下:<%@ 编译指令名属性名=”属性值”…%>1.page指令page指令通常位于JSP页面的顶端,一个JSP页面可以使用多条page指令。
Page指令的语法格式如下:<%@page[Language=”Java”][Extends=”package.class”][import=“package.class|package.*,…”][session=“true|false”]@>2.include指令使用include指令,可以将一个外部文件嵌入到当前的JSP文件中,同时解析这个页面的JSP语句(如果有的话)。
它会把目标页面的其他编译指令也包含进来,但动态include则不会。
Include既可以包含静态的文本,也可以包含动态的JSP页面。
静态的include编译指令会将被包含的页面加入本页面,融合成一个页面,因此被包含页面甚至不需要是一个完整的页面。
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。
JSP的7个动作指令动作指令与编译指令不同,编译指令是通知Servlet引擎的消息,而动作指令只是运动时的动作。
编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法。
JSP动作指令主要有如下7个:1.jsp:forward:执行页面转向,将请求的处理转发到下一个页面;2.jsp:param:用于传递参数,必须与其他支持参数的标签一起使用;3.jsp:include:用于动态引入一个JSP页面;4.jsp:plugin:用于下载JavaBeam或Applet到客户端执行;5.jsp:useBeam:创建一个JavaBean的实例;6.jsp:setProperty:设置JavaBean实例的属性值;7.jsp:getProperty:输出JavaBean实例的属性值实际上,forward动作指令和include动作指令十分相似(它们的语法就很相似),它们都采用方法来引入目标页面,通过查看JSP页面所生成Servlet代码可以得到:forward指令使用_jspx_page_context的forward()方法来引入目标页面。
Hibernate学习笔记Java相关课程系列笔记之十四笔记内容说明目录一、Hibernate的概述 (1)1.1 Hibernate框架的作用 (1)1.2 Hibernate访问数据库的优点 (1)1.3 JDBC访问数据库的缺点 (1)1.4 Hibernate的设计思想 (1)二、Hibernate的基本使用 (2)2.1 Hibernate的主要结构 (2)2.2 Hibernate主要的API (2)2.3 Hibernate使用步骤 (2)2.4 HQL语句(简要介绍) (6)三、数据映射类型 (7)3.1映射类型的作用 (7)3.2 type映射类型的两种写法 (7)四、Hibernate主键生成方式 (8)4.1五种生成方式 (8)五、Hibernate基本特性 (9)5.1对象持久性 (9)5.2处于持久状态的对象具有的特点 (9)5.3三种状态下的对象的转换 (9)5.4批量操作:注意及时清除缓存 (9)5.5案例:三种状态下的对象使用 (10)5.6一级缓存机制(默认开启) (10)5.7一级缓存的好处 (10)5.8管理一级缓存的方法 (10)5.9延迟加载机制 (11)5.10具有延迟加载机制的操作 (11)5.11常犯的错误 (12)5.12延迟加载的原理 (12)5.13 Session的get和load方法的区别 (12)5.14延迟加载的好处 (12)5.15案例:测试延迟加载 (12)5.16案例:重构NetCTOSS资费管理模块 (13)5.17 Java Web程序中如何用延迟加载操作(OpenSessionInView) (15)六、关联映射 (18)6.1一对多关系one-to-many (18)6.2多对一关系many-to-one (19)6.3多对多关联映射many-to-many (19)6.4关联操作(查询join fetch/级联cascade) (21)6.5继承关系映射 (24)七、Hibernate查询方法 (27)7.1 HQL查询 (27)7.2 HQL和SQL的相同点 (27)17.3 HQL和SQL的不同点 (27)7.4 HQL典型案例 (27)7.5 Criteria查询 (30)7.6 Native SQL原生SQL查询 (31)八、Hibernate高级特性 (32)8.1二级缓存 (32)8.2二级缓存开启方法及测试 (32)8.3二级缓存管理方法 (33)8.4二级缓存的使用环境 (33)8.5查询缓存 (33)8.6查询缓存开启方法及测试 (33)8.7查询缓存的使用环境 (33)九、Hibernate锁机制 (34)9.1悲观锁 (34)9.2悲观锁的实现原理 (34)9.3悲观锁使用步骤及测试 (34)9.4乐观锁 (35)9.5乐观锁的实现原理 (35)9.6乐观锁使用步骤及测试 (35)十、其他注意事项 (36)10.1源码服务器管理工具 (36)10.2利用MyEclipse根据数据表自动生成实体类、hbm.xml (36)10.3根据实体类和hbm.xml生成数据表 (37)10.4 Hibernate中分页查询使用join fatch的缺点 (37)10.5 Hibernate的子查询映射 (38)2一、Hibernate的概述1.1 Hibernate框架的作用Hibernate框架是一个数据访问框架(也叫持久层框架,可将实体对象变成持久对象,详见第5章)。
J2EE经典学习笔记J2EE模式Value Object(值对象) 用于把数据从某个对象/层传递到其他对象层的任意Java对象。
通常不包含任何业务方法。
也许设计有公共属性,或者提供可以获取属性值的get方法。
JSP1.JSP的基础知识_______ | directive (指令)| |-- scripting (脚本)JSP -------| |__ action (动作)||_____Template data :除JSP语法外,JSP引擎不能解读的东西1)在JSP中使用的directive(指令)主要有三个:a) page指令b) include指令c) taglib指令在JSP的任何地方,以任何顺序,一个页面可以包含任意数量的page 指令2)Scripting(脚本)包括三种类型a) <%!declaraction %>b) <% scriptlet %>c) <%= expression %>3)action(动作)标准的动作类型有:a) <jsp:useBean>b) <jsp:setProperty>d) <jsp:getProperty>e) <jsp:param>f) <jsp:include>g) <jsp:forward>h) <jsp:plugin>1. 注释:<% -----jsp comment-------%><! -----html comment-------%>2. <%@ page session = “true”import =”java.util.*” %>session可以不赋值,默认为true,如果session=”false”,则在JSP页面中,隐含的变量session就不能使用。
3. 请求控制器结构(Request Controller)也被称之为JSP Model 2 Architecture这种途径涉及到使用一个Servlet或一个JSP作为一个应用程序或一组页面的入口点。
为创建可维护的JSP系统,Request Controller是最有用的方式之一。
不是JSP,而是Java类才是放置控制逻辑的正确的地方。
请求控制器的命名模式为: xxxController.jsp请求控制器类的命名模式为: xxxRequestController2.JSP中的JavaBeanJSP三种bean的类型1) 页面bean2) 会话bean3) 应用bean大多数的系统会使用一个会话bean来保持状态,而对每一个页面使用一个页面bean 来对复杂的数据进行表示。
页面bean是一个模型,而JSP是一个视图。
3.Custom tagbean是信息的携带者,而tag更适用于处理信息。
标记库包含一个标记库描述符(TLD)和用于实现Custom tag的Java 类在翻译阶段,JSP容器将使用TLD来验证页面中的所有的tag是否都被正确的使用。
标记处理程序只是一个简单的适配器,而真正的逻辑是在另一个类中实现的,标记处理程序只是提供了一个供其他的可复用的类的JSP接口Servlet1.ServletConfig? 一个ServletConfig对象是servlet container在servletinitialization的时候传递给servlet的。
ServletConfig包涵ServletContext 和一些Name/Value pair (来自于deployment descriptor)? ServletContext接口封装了Web应用程序的上下文概念。
2.会话跟踪1) Session? 当一个Client请求多个Servlets时,一个session可以被多个servlet共享。
? 通常情况下,如果server detect到browser支持cookie,那么URL就不会重写。
2) cookie? 在Java Servlet中,如果你光Cookie cookie = new Cookie(name,value)那么当用户退出Browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。
如果要存储cookie,需加一句cookie.setMaxAge(200)? cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.3) URL Rewriting在使用URL Rewriting来维护Session ID的时候,每一次HTTP请求都需要EncodeURL()典型的用在两个地方1)out.print(“form action=\””);out.print(response.encodeURL(“sessionExample”));out.print(“form action=\””);out.print(“method = GET>”);2)out.print(“<p><a href=\””);out.print(response.encodeURL(“SessionExample?database=foo &datavalue=bar”));out.println(“\” >URL encoded </a>”);3.SingleThreadModel默认的,每一个servlet definition in a container只有一个servlet class的实例。
只有实现了SingleThreadModel,container才会让servlet有多个实例。
Servlet specification上建议,不要使用synchronized,而使用SingleThreadModel。
SingleThreadModel(没有方法)保证servlet在同一时刻只处理一个客户的请求。
SingleThreadModel是耗费资源的,特别是当有大量的请求发送给Servlet时,SingleThreadModel的作用是使包容器以同步时钟的方式调用service方法。
这等同于在servlet的service()方法种使用synchronized.Single Thread Model一般使用在需要响应一个heavy request的时候,比如是一个需要和数据库打交道的连接。
2. 在重载Servlet地init( )方法后,一定要记得调用super.init( );3. the client通过发送一个blank line表示它已经结束request而the server通过关闭the socket来表示response已结束了。
4. 一个Http Servlet可以送三种东西给Client1) a single status code2) any number of http headers3) a response body5. Servlet之间信息共享的一个最简单的方法就是System.getProperties().put(“key”,”value”);6. Post和GetPost:将form内各字段名称和内容放置在html header内传送给serverGet: ?之后的查询字符串要使用URLEncode,经过URLEncode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。
Get是Web上最经常使用的一种请求方法,每个超链接都使用这种方法。
7. Web.xml就是Web Applicatin 的deployment descriptor作用有:组织各类元素设置init param设置安全性8. Request Dispatcher用来把接收到的request forward processing到另一个servlet要在一个response里包含另一个servlet的output时,也要用到Request Dispatcher.9. Servlet和Jsp在同一个JVM中,可以通过ServeltContext的setAttribute( )getAttribute( )removeAttribute( )来共享对象10. 利用request.getParameter( )得到的String存在字符集问题。
可以用strTitle = request.getParameter(“title”);strTitle = new String(strTitle.getBytes(“8859-1”),”gb2312”);如果你希望得到更大得兼容性String encoding = response.getCharacterEncoding();//确定Application server用什么编码来读取输入的。
strTitle = new String(strTitle.getBytes(encoding),”gb2312”);XML1.XML基础知识1. 一个xml文档可以分成两个基本部分:首部( header )内容( content )2. xml名字空间规范中指定:xml文档中的每一个元素都处在一个名字空间中;如果没有指定的名字空间,缺省的名字空间就是和该元素相关联的名字空间。
3. A document that is well-formed obeys all of the rules of XML documents (nested tags, etc.)" If a well-formed document uses a Document Type Definition (more on these in a minute), and it follows all the rules of the DTD, then it is also a valid document4. A tag is the text between the <angle brackets>" An element is the start tag, the end tag,and everything (including other elements) in between5. 标签( tags ) 实际上包含了“元素”( elements ) 和“属性”( attributes )两部分。
用元素( elements )来描述有规律的数据。
用属性( attributes ) 来描述系统数据。