j2ee笔记
- 格式:doc
- 大小:355.00 KB
- 文档页数:58
说明:在编程中我们会在某个类、方法或变量前面加上@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一种新的协议。
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.当把高精度的数据类型赋值给低精度的数据类型时,必须强制类型转换。
J2EE基础知识积累1. ⾯向对象的思维:1. 有哪些类那些对象2. 这些类中,每种类应该具有某种属性和⽅法3. 考虑类与类之间应该具有什么样的关系3.1. 成员变量可以使⽤java语⾔中的任何⼀种数据类型(包括基本类型和引⽤类型)2. 在定义成员变量时可以使其初始化,如果不对其初始化,java使⽤默认的值对其初始化3. 成员变量的租⽤范围为整个类型4. 如何在内存中区分类和对象1. 类是静态的概念,代码区2. 对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)⽽⽅法只有⼀份,执⾏的时候才占⽤内存eg:String s// 声明⼀个String类型的引⽤变量,但并没有使他指向⼀个对象s=new String("Hello world")// 使⽤new语句创建⼀个String类型的对象并⽤s指向他,以后可以通过s完成对其的操作5. ⽅法调⽤时值传递6. ⽅法⼀旦执⾏完毕,为这个⽅法所分配的局部变量的内存(栈内存⽴刻消失,堆内存可能不是马上消失,等垃圾回收齐回收之后就消失)⾃动消失7. 基础类型的变量就⼀块内存在栈内存中,引⽤类型的变量两块内存(堆内存和栈内存)8. 重载指的是⽅法名相同,参数不同,参数不同包括参数个数和参数的类型不同9. 同⼀类的每个对象有不同的成员变量存储空间同⼀类的每个对象共享该类的⽅法:⾮静态⽅法是针对每个对象进⾏调⽤的。
10. this关键字:1. 在类的⽅法定义中使⽤的this关键字代表使⽤该⽅法的对象的引⽤.2. 当必须指出当前使⽤⽅法的对象是谁要使⽤this.3. 有时使⽤this可以处理⽅法中成员变量和参数重名的情况4. this可以看做是⼀个变量,他的值是当前对象的引⽤.11. static 关键字:1. 在类中,⽤static声明的成员变量为静态成员变量,他为该类的公⽤变量,在第⼀次使⽤时被初始化,对该类的所有对象来说,static成员变量只有⼀份.2. ⽤static声明的⽅法为静态⽅法,在调⽤该⽅法时,不会将对象的引⽤传递给他,所以static⽅法中不可以访问⾮static的成员.2) 静态⽅法不再是针对于某个对象的调⽤,所以不能访问⾮静态成员。
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元素的说明。
EJB课堂笔记2二.学生管理——考生管理的实现(分页功能的实现)1.点击考生管理实现页面跳转对于修改页面,应该修改WEB工程下的/admin/menulist.jsp如果找不到,可以用快捷键Ctrl+F检索考生信息管理。
这点击考生信息管理时,将会访问StuInfoServlet。
2.在cn.uzz.ming.servlet定义StuInfoServlet类。
public class StuInfoServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {RequestDispatcher rd = request.getRequestDispatcher("/admin/stu/stulist.jsp");rd.forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}这样我们在点击超链接的时候就能刷新页面。
3.首先在数据库中建立Student表。
在表中输入相应的信息4.对应Student表在cn.uzz.ming.Bean建立相应实体类@Entitypublic class Student {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;@Column(name="stuNo")private String stuNo;@Column(name="stuName")private String stuName;右键->Sources->Getter and Settter 给类添加get和set方法}5.进行配置,要使用EJB,应该在ejbModule的META-INF添加persistence.xml,并且修改<persistence-unit name="exampersistence"> //这个名字是自定义的<jta-data-source>java:MySqlDS</jta-data-source> //应与以前配置文件一致<properties><property name="hibernate.show_sql"value="true"/></properties></persistence-unit>StuInfoServiceLocal.java;6.配置以后,根据下面的分析,在cn.uzz.ming.service定义借口根据上图分析,我们要在页面显示的信息有总记录数,每页要显示的记录数,当前所在页码和此页码要显示的记录。
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 语句。
复习要点第一章J2EE简介(6%)1)J2EE分层构架【J2EE客户端、Web组件、业务组件】2)J2EE容器3)Web应用程序的目录结构〔见Web应用程序简介.ppt〕第二章 servelt(18%)1)servlet基本概念、servlet容器职能2)servlet的生命周期3)servlet的部署描述符4)过滤器的功能5)会话追踪机制原理、常用的方法6)请求映射的方法,包括URL路径解析、匹配规则、映射语法第三章JSP(18%)1)JSP的基本概念,与servlet的区别2)JSP页面的构成元素,基本语法3)JSP中jsp:usebean的四种类型的作用域4)JSP的注释5)页面包含的两种方式6)page指令的属性含义、及设置7)JSP生命周期,特别是转译阶段各种元素在对应java文件中的位置8)JSP的内置对象的基本概念、内置对象种类、使用方法第四章 JavaBean在JSP中的应用(10%)1)掌握JavaBean契约,能熟练编写JavaBean2)熟练使用标准Action:<jsp:useBean>、< jsp:setProperty >、< jsp: getProperty > 第五章 JDBC (18%)1)JDBC驱动程序四种类型2)掌握JDBC URL协议格式3)数据源DataSource的基本概念、属性等4)掌握ResultSet的类型、光标的概念、及各种类型ResultSet的光标移动5)熟练使用JDBC API进行数据库编程、数据库元数据编程试题类型一、选择题(15×2%)二、简答题(3×5%)三、编程题(3~4小题 25%)(1)读JSP程序写出执行结果(2)实现一个JavaBean(3)数据库编程(4).。
J2EE学习笔记灰狐动力--致力于中间件技术的研究、应用与开发注:框架可以用Word菜单中的“视图/文档结构图”看到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就不能使用。
JavaEE1.Java EE 平台概述(重要)Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。
这个版本以前称为J2EE。
能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。
Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。
2.使用分布式的多层应用模型构件,多层分哪些层?J2EE可以分为4层:1、运行在客户端机器上的客户端组件2、运行在J2EE服务器上的Web层组件.3、运行在j2EE服务器上的业务逻辑层组件.4、运行在EIS服务器上的企业信息系统层软件.一般,J2EE应用程序被认为是三层体系结构的,因为它们主要分布在三个地方. 客户端,服务器端,数据库或者是后台的遗留层.3.Java EE应用由各种各不同组件构成,都有哪些组件网上答案:J2EE的规范定义了下面的一些组件:1、客户端程序和applets是运行在客户端的组件.2、java servlet 和jsp技术是运行在服务器端的服务器组件.3、EJB技术是运行在服务器端的商务逻辑组件.PPT答案:1、J2EE ClientsWeb Client;Applets;Application Client;JavaBean组件(the Javabean Component Architecture );2、Web ComponentServlet;Web page(JSP)3、business ComponentEJB(会话bean 实体bean 消息驱动bean);java ee组件和标准类的区别java EE 的组件与其他标准Java类的区别在于,Java EE组件将装配至一个Java EE应用中并通过验证,以确保其满足Java EE规范要求,从而可以部署至生产环境中。
UML建模工具:kdesdk-umbrellolinux下eclipse,tomcat整合:步骤一:将下载的tomcat解压到eclipse/plugins目录,之后打开eclipse步骤二:File-->New-->Other 展开Server-->Server-->Next 展开Apache-->双击选择Tomcat v8.0 Server-->Next点Browser... 选择tomcat的位置-->确定-->Finish1.(eclipse tomcat)javax.servlet.http.httpservlet 不存在--------到tomcat的安装路径下\lib\servlet-api.jar 复制到WEB-INF/lib下,然后点项目名按F5,应该就OK了2.启动tomcat运行jsp时出现“WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:HelloWorld' did not find a matc hing property.”--------出现SetPropertiesRule警告的原因是因为Tomcat在server.xml的Context节点中不支持source属性:<Context docBase="…" path="/…" source="org.eclipse.jst.j2ee.server:…"/>解决方法是在Servers视图里双击创建的server,然后在其server的配置界面中选中"Publish module contexts to separate XML files"选项。
Hibernate 学习笔记2010年7月9日星期五1目录1.学习纲要2.学习目的3.达标标准4.名词解释5.学习时间:两天又3小时(16~19pm)2具体内容2.1学习纲要2.1.1什么是hibernate?它是连接JAVA应用程序和关系数据库的中间件它对JDBC API进行了封装,负责JAVA对象的持久化在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑。
它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射2.1.2HIBERNATE原理依赖的技术有:JAVA反射机制(在org.hibernate.property中得到较多应用,通过INVORK()方法调用POJO对象的setter,getter方法设置和获取属性的值)i.Class类ii.getMethods方法得到Method类iii.Method类iv.invoke方法用来调用被反射类的方法CGLIB(用于对持久化类进行延迟加载时生成代理类)i.以asm项目为基础,对asm的功能进行封装和扩展,实现并扩展了JAVA的反射功能,可以在运行时状态下实现JAVA接口,扩展JAVA类ii.Asm项目是一个简洁的字节码工具,能够在运行的状态下动态的修改编译完成的JAVA类JAVASSIST(同CGLIB,是另一套解决方案,可以通过修改org.hibernate.cfg.Environment.java原码进行设置)i.是一个执行字节码操作的强有力的驱动代码库。
它允许开发者在代码被JAVA虚拟机载入之前定义一个新类或者修改类的的原代码。
XML技术(DOM4J)i.用来解析XML配置文件Antlr(another tool for language recognition)i.它是一个开源的工具,利用后缀为“.g”的文件来定义语法规则ii.Hibernate提供的语法规则有iii.Hql.giv.Hql-sql.gv.Sql-gen.gvi.Hibernate通过调用这些生成的解析类完成把HQL语句转为SQL语句的工作2.1.3HIBERNATE方法的内部实现略2.1.4Hibernate能做什么?2.1.5hibernate应用在哪些方面2.1.6Hibernate关联关系1.一对多关联<many-to-one name=”customer”column=”CUSTOMER_ID”class=”mypack.Customer”lazy=”false” not-null=”true”/>此种情况下不会加载关联的临时对象。
以下是Expert One-on-One J2EE Design and Development的部分笔记:1.J2EE(Java 2 Platform,Enterprise Edition)是一个用于构建分布式企业级应用的平台。
它提供了一系列的标准和规范,使得开发者可以更高效地开发出稳定、安全和可靠的应用程序。
2.J2EE的核心组件包括:•Servlet:用于处理客户端请求和生成动态Web页面。
•JSP(JavaServer Pages):用于创建动态Web页面。
•EJB(Enterprise JavaBeans):用于实现企业级应用程序的业务逻辑。
•JNDI(Java Naming and Directory Interface):用于查找和访问企业资源,如数据库连接、邮件服务器等。
•JTA(Java Transaction API):用于协调和管理分布式事务。
•JMS(Java Message Service):用于处理消息传递,支持队列和主题两种消息传递模型。
1.在J2EE应用程序中,通常使用MVC(Model-View-Controller)设计模式来分离应用程序的不同方面。
Model表示应用程序的数据和业务逻辑,View表示应用程序的用户界面,Controller表示应用程序的控制逻辑。
2.在J2EE应用程序中,通常使用依赖注入(Dependency Injection)来管理组件之间的依赖关系。
依赖注入是一种设计模式,通过将组件之间的依赖关系从硬编码方式改为配置方式,使得组件之间的耦合度降低,便于测试和维护。
3.在J2EE应用程序中,通常使用拦截器(Interceptor)来处理跨多个组件的通用逻辑,例如日志记录、权限验证等。
拦截器可以在请求到达目标组件之前或之后执行特定的操作。
4.在J2EE应用程序中,通常使用AOP(Aspect-Oriented Programming)来处理跨多个组件的横切关注点,例如日志记录、事务管理等。
J2EE 读书笔记第一章:J2EE概述1、Java Bean,Java Servlet和JSP是J2EE的核心部分。
2、J2EE还包含7个标准服务分别是:●符合CORBA技术标准(Common Object Request BrokerArchitecture,公共对象请求代理体系结构,通用对象请求代理体系结构)。
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学习笔记注:框架可以用Word菜单中的“视图/文档结构图”看到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在servlet initialization的时候传递给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 (nestedtags, etc.)" If a well-formed document uses a Document Type Definition (more on these ina minute), and it follows all the rules of the DTD, then it is also a validdocument4. 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 ) 来描述系统数据。