j2ee笔记
J2EE学习笔记知识点精粹(servlet,websoket,webservice,Jax-rs,EJB,JPA)

说明:在编程中我们会在某个类、方法或变量前面加上@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(J2SEJ2EE)学习笔记090911

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基础知识积累

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) 静态⽅法不再是针对于某个对象的调⽤,所以不能访问⾮静态成员。
J2EE笔记

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。
EJB课堂笔记2

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定义借口根据上图分析,我们要在页面显示的信息有总记录数,每页要显示的记录数,当前所在页码和此页码要显示的记录。
J2EE基础知识点归纳总结

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笔记
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就不能使用。
J2EE基础知识点复习3
JDBC1.两种建立数据库连接的方式?1、DriverManager机制(JDBC):API:java.sql核心APIDriverManager机制的弊端:(1)是一个同步的类,一次只有一个线程可以运行(2)与数据库相关的连接信息都包含在类中,如果用户更换另一台计算机作数据库服务器,就需要重新修改URL变量、重新编译、部署;(3)用户的用户名、口令也包含在类中,丧失了安全性2、DataSource机制(JNDI):API:javax.sql可扩展API连接方式:连接池2.事务:哪些种Java事务类型?事物:保证一系列数据库操作能够准确的完成,除非事务中的所有操作都成功,否则事务就不会完成事务的4个特性(ACID):Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)Java事物类型:(1)JDBC事务:(2)JTA(Java Transaction API)事务(3)容器事务解释jdbc的数据源机制1、DataSource是JDBC Connection对象的一个工厂2、允许使用已经在JNDI命名服务中注册的DataSource对象建立连接,由驱动程序供应商实现3、连接池机制:(1)Application Server启动时,创建通向数据库资源的连接池。
连接池包含多个JDBC连接。
(2)当应用程序需要访问数据库时,从连接池中取得一个连接,使用该连接与数据库通信;一旦工作完成,关闭数据库连接,释放回连接池中。
(3)连接池与连接到数据库对比:连接到数据库:需要通信、内存、授权等来创建连接,代价昂贵;对于访问站点的每一个客户机都建立了一个新的连接,费用太高连接池:重用连接,而非建立新连接;一组加载到内存中的数据库连接,以便重复使用;允许共享数据库连接,不是为每个客户分别提供单独的连接;借助连接池,对连接数量进行必要的定量限制,数据库才是最有效的。
J2EE企业级开发(13)--Web容器
J2EE企业级开发学习笔记(13)Web服务器1、Web容器(服务器):Tomcat、Jetty等2、Tomcat:Tomcat是Java 领域最著名的开源Web 容器,简单、易用且稳定性极好。
不仅提供了Web 容器的基本功能,还支持JAAS 和JNDI 绑定等。
? bin: 存放启动和关闭Tomcat 的命令的路径。
? common: 存放所有的Web应用都需要的类库等。
? conf: 存放Tomcat 的配置,所有的Tomcat的配置都在该路径下设置。
? log: 这是一个空路径,该路径用于保存Tomcat 每次运行后产生的日志。
? server: 存放Tomcat 运行所需要的基础类库,该路径是Tomcat 运行的基础。
该路径下还包含一个webapps 路径,并存放Tomcat 两个控制台。
? shared: 该路径也是一个空路径,用于系统共享的类库,该路径下包括classes 和lib 两个路径,其中classes 用于存放class 文件,而lib 用于存放Jar文件。
? temp: 保存Web 应用运行过程中生成的临时文件。
? webapps: 该路径用于部署Web 应用,将Web 应用复制在该路径下,Tomcat 会将该应用自动部署在容器中。
? work: 保存Web 应用运行过程中编译生成的class 文件。
该文件夹可以删除,但每次应用启动时将自动建立该路径。
? LICENSE 等相关文档。
启动Tomcat(安装路径\bin\tomcat6.exe)后运行:http://localhost:8080/ 出现如下画面即表示安装成功Tomcat基本配置:a.修改端口:安装路径\conf\server.xml文件:<Connector port="8080"maxThreads="150" minSpareThreads="25"maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"debug="O" connectionTimeout="20000"disableUploadTimeout="true" />其中port="8080",就是Tomcat 提供Web 服务的端口。
第一章J2EE全部要学知识整理
1、传统应用程序模型(二)
➢客户/服务器结构:“胖”客户端
胖客户端: 表示逻辑 业务逻辑
业务数据模型 通讯
Fat client
Fat client
用户界面和程序逻辑绑在一起,代码难以重用
服务器的数据库必须同每一个活动的客户保持连接,消耗大量的运算 资源,随着客户数目的增加性能不断下降,且存在死锁及崩溃的可能
一、J2EE的由来
1、传统应用程序模型 2、Web应用程序模型 3、为什么需要J2EE √
3、为什么需要J2EE
在企业级应用开发中所面临的而且必须解决的问题:
分布式 可移植 旧系统集成支持 面向Web 可装配 满足企业计算要求
一致性 事务性 安全性 要有好的特性 可伸缩 可扩展 易维护
•数据访问逻辑 •EJB
内
容
一、J2EE的由来 二、J2EE概念 三、J2EE编程思想 四、J2EE技术框架√ 五、优势
J2EE技术架构
J2EE架构:
3、J2EE架构及核心技术简介
J2EE核心技术:13种
EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC XML、JMS……
➢传统的Web应用程序模型:三层分布式架构
2、 Web应用程序模型(一)
➢传统的Web应用程序模型:三层分布式架构
WWW浏览方式带来的变化:
“Browser-based” 的客户端与“Internetworking” 计算方式向服务器端的集中转化
客户端:业务数据模型与UI分开,更“瘦” 业务逻辑在中间层,通过:连接池,多线程可以处理多客户端
JSP(Java Server Pages)页面由HTML代码和嵌入其中的Java代码 所组成。服务器在页面被客户端所请求以后对这些Java代码进 行处理,然后将生成的HTML页面返回给客户端的浏览器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 obeysall of the rules of XML documents(nestedtags, etc.)" If a well-formed document uses aDocument Type Definition (more onthese in a minute), and it follows allthe rules of the DTD, then it is also avalid 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 ) 来描述系统数据。
如果你有一些数据要提供给某个应用程序,该数据就可能要用到一个元素。