码迷,mamicode.com
首页 > 其他好文 > 详细

J2EE学习笔记

时间:2015-07-14 08:43:40      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

中国企业培训的人民银行-J2EE

1.HTTP超文本传输协定。应用层协议。

HTTP是基于请求、响应模式的,无状态的协议。

2.HTTP1.0通信过程:client发起连接->客户发送请求->server响应请求->server关闭连接;须要不断建立连接,开销大。

3.HTTP1.1通信过程(默认使用持续连接):client发起连接->客户发送请求->server响应请求->client继续发送请求->服务端响应->server关闭连接。

4.HTTP组成:请求行、消息包头、请求正文。

请求行:Method Request-URI|HTTP-Version CRLF(回车)

比如:GET /test.html HTTP/1.1 CRLF

Method包含GET/POST/HEAD等。当中HEAD仅仅返回响应消息包头。

5.Tomcat中通过例如以下语句配置项目:

<Context path=”/test” docBase=”D:\test\WebRoot” reloadable=true””/>

6.Servlet编程:写类继承自HttpServlet->重写doGetdoPost->web.xml中注冊Servlet->编写处理函数:

resp.setContentType(“text/html”);PrintWriter out=resp.getWriter();

out.println(“<HTML>代码”);

7.JSP编程:在JSP中使用<%%>包括Java代码。

8.表单提交GET/POST差别。

A.处理方式不一样。GET加入參数在地址栏,POST加入參数在HTTP请求体中。

B.处理方法不同。doGetdoPost

9.JSP运行过程:请求某JSP->转换成Servlet->返回响应。

10.JSP中声明变量为<%! int a=0;%>与不加!的差别:声明的变量为成员变量。

不适用。声明的是局部变量。

11.JSP重点内置对象:requestresponsesessionapplication

12.JSP中的事务处理一般有JAVA BEAN完毕。<jsp:useBean>

13.Java Bean要求:公共的public类。含有无參构造和gettersetterJava Bean范围:pagerequestsessionapplication

14.Servlet生命周期:

A.初始化:init

三种情况装载Servlet:①Servlet容器自己主动装载某些ServletServlet容器启动后。客户首次向Servlet发出请求③Servlet类文件更新后,又一次装载ServletServlet装载后,创建Servlet演示样例并调用init方法初始化。整个Servlet周期中中,init仅仅调用一次。

B.请求响应阶段:serviceService方法通过servletrequest获取client请求信息、处理该请求并返回响应结果servletresponse

C.终止阶段:destroyWeb应用终止或servlet容器停止工作时,释放占用的资源。

15.通常自己定义servlet直接集成HttpServlet就可以,这样便不用事先service方法。Service參数为ServletRequestServletResponse

16.Servlet对象创建时机:①Web客户第一次请求servlet②设置<servlet>元素的<load-on-startup>。启动Web应用时会依照指定顺序创建servlet

17.Servlet容器启动Web应用时,为每一个Web应用创建一个ServletContext对象。ServletContext能够存放共享数据:主要方法:setAttributegetAttribute

18.Servlet是单例的,仅仅有一个对象。

并且Servlet是多线程运行的。因此,编写时注意多线程问题。

因此。servlet中尽量不要定义成员变量。定义成员变量easy出现多线程问题。能够通过定义局部变量解决(局部变量属于单个线程、统一对象成员变量可被多个线程訪问)。解决多线程同步问题方法:

A.实现javax.servlet.SingleThreadMode。这样servlet单线程执行。

B.去除成员变量,全是用局部变量

C.是用同步代码块:synchronized{...}

19.Cookie的使用(Cookie从server发出。存在于client硬盘上):

Cookie ck = new Cookie(“key”,”value”);response.addCookie(ck);

Cookie c = request.getCookies();

20.在servlet中使用例如以下语句请求转发:(还是当前页面,setAttribute的数据可以在test.jsp中取得)

request.getRequestDispatcher(“/test.jsp”).forward(request,response);

使用例如以下语句重定向:(转到新页面。setAttibute数据在test.jsp中不能取得,client须要发送两次请求)

Response.sendRedirect(“test.jsp”);

21.Web跟踪client状态方法:

A.建立具有跟踪数据的隐藏字段

B.重写包括额外參数的URL

C.使用持续的Cookie

D.使用Servlet API中的Session

Session位于servlet容器,cookie位于client硬盘上。会话cookie位于浏览器进程中。

22.HttpSession接口:getIdinvalidate()使当前session失效、setAttributegetAttributeisNewsetMaxInactiveInterval设定session处于不活动状态的最大间隔。

23.Listener监听器用于发生一定动作时触发操作。

比如,HttpSessionListener监听HttpSession的操作。创建Session时,激发sessionCreated方法;销毁Session时,激发sessionDestroy方法。HttpSessionAttributeListener监听HttpSession属性操作。

Session添加属性,激发attributeAdded方法;Session删除属性时,激发attributeRemoved方法;Session属性被又一次设置时,激发attributeReplaced方法。

Servlet也有对应的监听器。

24.Filter过滤器对servlet容器的请求和响应对象进行检查和过滤。

Filter而已过滤的对象能够是ServletJsp或者HTML

Filter类方法:init(初始化,读取web.xml中过滤器的初始化參数)->doFilter(运行过滤操作)->destroy(释放过滤器资源)

25.EL表达式语言,用于降低JSP中的脚本:${expr}EL默认对象:pageContextpage/request/session/application/Scopeparam(请求參数)paramValuesheaderheaderValuescookie

26.客户化JSP标签。使用tag标签。降低JSP中代码量。

创建标签步骤:①创建标签处理类②创建爱你标签库描写叙述文件③在web.xml文件里声明(servlet2.4以后不须要)④在JSP中引入标签库。

27.Struts2.1是基于请求响应模式的应用框架。主要包含:控制器、业务逻辑层和数据逻辑层。工作过程:客户请求->过滤器->拦截器Interceptors->Action->JSP。 

28.Struts2使用过程:新建Web项目->增加structs2.0支持(commons-fileupload/commons-logging/ognl/struts2-core/xwork/freemarker.jar)->编写处理类Action->编写配置文件(src文件夹下structs.xml,在WEB-INFO/class中自己主动复制出一份)->web.xml中配置structFilter。工作过程:请求->web.xml过滤器到structs->structs.xml->请求action->处理类action->返回标志->跳转

29.在Action中,成员变量名跟表单名字同样并生成gettersetter方法,struct完毕表单变量传递。

30.Structs类型转换:对于常见类型。structs2从client获取后,尝试性的自己主动转换成Action中定义的类型。

假设转换不成功。抛出异常,输出字符串。对于自己定义类型。比如输入坐标,我们须要进行类型转换。

定义Point类,然后在PointAction中增加Point成员变量,生成gettersetter,然后写配置文件:PointAction-conversion.properties(待处理类包中。里面设置待处理类和处理类(继承自DefaultTypeConverter))。最后在处理类中实现类型转换。处理类也可继承自StrutsTypeConverter,完毕批量转换从待处理类和String的相互转换。对于多个坐标,处理Action中可使用list<Point>成员变量,完毕批量转换。

31.上面为局部转换。针对的是每一个action。全局转换可针对所有action。属性文件(src文件下。不带包)为:xwork-conversion.properties

32.Structs定义的状态变量:SUCCESS/ERROR/INPUT/LOGIN/NONE.

33.Struts输入校验(服务端验证)。分为编码方式校验和校验框架两部分。假设输入信息不对,返回INPUT

A.编码方式:Action中重写validate方法。Validate优先于executeaddActionError加入错误信息,JSP中使用<s:actionerror/>显示错误。

Structs会自己主动生成field级别的校验消息,使用<s:fielderror/>显示。Action中新建RegisterAction.properties实现国际化。

使用structs标签自带错误输出功能。

B.校验框架方式:action包下定义配置文件:(Action-validation.xml)RegisterAction-validation.xml。校验框架分为属性优先(field)或者校验器优先(validator)

首先运行类型转换,然后是相应的校验框架,然后是特定方法的validate(比如formmethod属性设置为test方法。action中方法为validateTest()),然后是validate方法。假设上述过程中出现错误,都不会运行execute方法,转而页面装转向struts.xmlinput相应的页面。

34.国际化。

命名方式:文件名称_国家代码_properties。位于src目录下。

35.拦截器Interceptor:类似于过滤器。

Interceptorstructs2的核心。

须要实现方法:initintercept(在请求前或处理后处理)destroy方法。

定义拦截器类须要实现Interceptor接口->structs.xml中进行配置(interceptors)->structs.xmlaction引用拦截器。注意:使用自己定义拦截器后。默认拦截器不再起作用。须要加上默认的拦截器。且自己定义拦截器位于默认拦截器之上。使用拦截器<param>能够传值。Interceptor接口要求必须实现initinterceptdestroy方法,能够使用AbstractInterceptor。拦截器、过滤器运行过程:interceptor1.invoke->interceptor2.invoke->validate->interceptor2返回并结束->interceptor1返回并结束。

36.Struts2提供支持文件上传<s:form action=”upload” enctype=”multipart/form-data”>

Uploadaction继承ActionSupportStruts默认是运行请求转发,刷新一次就运行一次。能够改为重定向:<result type=”redirect”>

37.JAVA訪问数据库方式:

A.JDBC-ODBC桥加ODBC驱动程序。ODBC驱动提供JDBC訪问。

B.本地API:部分用Java编写的驱动程序。

C.JDBC网络纯Java驱动。将驱动转换为与DBMS无关的网络协议。

D.本地协议纯Java驱动程序。

DBMS有关的网络协议。

数据库连接的一般过程:

加载JDBC驱动程序->定义连接URL->建立连接->创建Statement_>运行查询或者更新->结果处理->关闭连接。

Class.forname(“oracle.jdbc.driver.OracleDriver”);//加载驱动

DriverManagergetConnection用于建立连接

Connection类的close方法用于关闭数据库连接

ConnectioncreateStatement发送SQL语句。使用Statement对象{statementpreparestatementCallableStatement},经常用法executeQueryexecuteUpdateclose

Preparestatement能够用?预留參数;callablestatement提供存储过程支持。

38.应用程序的分层:四层{表述层structs、业务逻辑层、持久化层Hibernate、数据库层}spring能够管理前三层。

39.数据库知识:

A.主键。代理主键机制,代理主键不代表业务。不会被改变。

B.表与表之间的參照完整性连接表表示多对多。一对多用外键。

40.ORM模式:对象-关系映射。在单个组件中负责全部实体域对象的映射。类与表相应,演示样例与表中记录相应。MVC模式;DAO模式:Data Access Object

41.使用Hibernate步骤:创建Hibernate配置文件->创建持久化类->创建对象-关系映射文件->通过HibernateAPI编写数据库訪问代码

42.MyEclipse加入Hibernate功能时,须要更改默认选项,加入jar文件到WEB-INF/lib下。hibernate.cfg.xml配置:

<session-factory>

<property name=”connection.url”>jdbc:mysql://localhost:3306/hibernate />

<property name=”connection.username”>root />

<property name=”connection.password”>root />

<property name=”connection.driver_class”>com.mysql.jdbc.Driver />

<property name=”connection.dialect”>org.hibernate.dialect.MySQLDialect />

</session-factory>

数据库建表person->针对这张表新建持久化类com.hibernate.model.Person{1.须要gettersetter.2.须要id属性,称之为OID(对象标示符).3.提供默认构造}->编写映射文件Person.hbm.xml,放到src下而不是包下:(hib内置的编辑器打开)

<class name=”com.hibernate.model.Person” table=”person”>

<id name=”id”column=”id” type=”int”>

    <generator class=”increment”/>//主键id的生成方式

</id>

<property name=”username” column=”username” type=”string”

...

</class>

在主配置文件hibernate.cfg.xml中配置:<mapping resource=”Person.hbm.xml”/>

43.Hibernate提供的SQL操作类:

A.Configuration:配置数据库。

B.SessionFactory:创建session一个SessionFactory相应于一个数据库存储源,它是线程安全的(可被多个线程訪问),重量级的。能够理解为一个SessionFactory相应于一个数据库。

C.Session:相当于以此数据库操作过程。Session不是线程安全的。轻量级的。可理解为一次数据库sql运行过程。

session非彼session!经常用法:savaupdatedeleteget

D.Transation:事务处理。

44.可编写HibernateUtil类完毕对session的操作(静态SessionFactory、静态代码块处理sessionFactory)。

45.编写DBPerson处理数据库和Person对象。Hql针对的是类对象而言(select * form PersonPerson是类不是表 ),sql针对的是数据库。

46.数据库中的blob类型用于存二进制文件。Hibernatexml中用binary转换,持久化类用byte[]转换。

 

47.1对多关系双向关联关系(就2个),多的通过外键參照1的那一方。使用key元素设置外键。Cascade的理解:1的那份保存,然后依照外键所有保存多的。

48.1对多双向自身关联关系(树形结构,子类11父类,子类1n孙类),比如Category{private Long id;private String name;private Category parentCategory;//父 private Set childCategories;//子类别}。数据库表中使用有三个字段:idnameparentID(外键,指向本身的ID)

版权声明:本文博客原创文章,博客,未经同意,不得转载。

J2EE学习笔记

标签:

原文地址:http://www.cnblogs.com/gcczhongduan/p/4644456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!