中国企业培训的人民银行-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: estWebRoot” reloadable=true””/>
6.Servlet编程:写类继承自HttpServlet->重写doGet、doPost->在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.处理方法不同。doGet和doPost。
9.JSP运行过程:请求某JSP->转换成Servlet->返回响应。
10.JSP中声明变量为<%! int a=0;%>与不加!的差别:声明的变量为成员变量。
不适用。声明的是局部变量。
11.JSP重点内置对象:request、response、session、application。
12.JSP中的事务处理一般有JAVA BEAN完毕。<jsp:useBean>
13.Java Bean要求:公共的public类。含有无參构造和getter和setter。Java Bean范围:page、request、session、application。
14.Servlet生命周期:
A.初始化:init。
三种情况装载Servlet:①Servlet容器自己主动装载某些Servlet②Servlet容器启动后。客户首次向Servlet发出请求③Servlet类文件更新后,又一次装载Servlet。Servlet装载后,创建Servlet演示样例并调用init方法初始化。整个Servlet周期中中,init仅仅调用一次。
B.请求响应阶段:service。Service方法通过servletrequest获取client请求信息、处理该请求并返回响应结果servletresponse。
C.终止阶段:destroy。Web应用终止或servlet容器停止工作时,释放占用的资源。
15.通常自己定义servlet直接集成HttpServlet就可以,这样便不用事先service方法。Service參数为ServletRequest和ServletResponse。
16.Servlet对象创建时机:①Web客户第一次请求servlet②设置<servlet>元素的<load-on-startup>。启动Web应用时会依照指定顺序创建servlet。
17.Servlet容器启动Web应用时,为每一个Web应用创建一个ServletContext对象。ServletContext能够存放共享数据:主要方法:setAttribute和getAttribute。
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接口:getId、invalidate()使当前session失效、setAttribute、getAttribute、isNew、setMaxInactiveInterval设定session处于不活动状态的最大间隔。
23.Listener监听器用于发生一定动作时触发操作。
比如,HttpSessionListener监听HttpSession的操作。创建Session时,激发sessionCreated方法;销毁Session时,激发sessionDestroy方法。HttpSessionAttributeListener监听HttpSession属性操作。
Session添加属性,激发attributeAdded方法;Session删除属性时,激发attributeRemoved方法;Session属性被又一次设置时,激发attributeReplaced方法。
Servlet也有对应的监听器。
24.Filter过滤器对servlet容器的请求和响应对象进行检查和过滤。
Filter而已过滤的对象能够是Servlet、Jsp或者HTML。
Filter类方法:init(初始化,读取web.xml中过滤器的初始化參数)->doFilter(运行过滤操作)->destroy(释放过滤器资源)。
25.EL表达式语言,用于降低JSP中的脚本:${expr}。EL默认对象:pageContext、page/request/session/application/Scope、param(请求參数)、paramValues、header、headerValues、cookie。
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中配置struct的Filter。工作过程:请求->web.xml过滤器到structs->structs.xml->请求action->处理类action->返回标志->跳转
29.在Action中,成员变量名跟表单名字同样并生成getter和setter方法,struct完毕表单变量传递。
30.Structs类型转换:对于常见类型。structs2从client获取后,尝试性的自己主动转换成Action中定义的类型。
假设转换不成功。抛出异常,输出字符串。对于自己定义类型。比如输入坐标,我们须要进行类型转换。
定义Point类,然后在PointAction中增加Point成员变量,生成getter和setter,然后写配置文件: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优先于execute。addActionError加入错误信息,JSP中使用<s:actionerror/>显示错误。
Structs会自己主动生成field级别的校验消息,使用<s:fielderror/>显示。Action中新建RegisterAction.properties实现国际化。
使用structs标签自带错误输出功能。
B.校验框架方式:action包下定义配置文件:(Action名-validation.xml)RegisterAction-validation.xml。校验框架分为属性优先(field)或者校验器优先(validator)。
首先运行类型转换,然后是相应的校验框架,然后是特定方法的validate(比如form的method属性设置为test方法。action中方法为validateTest()),然后是validate方法。假设上述过程中出现错误,都不会运行execute方法,转而页面装转向struts.xml中input相应的页面。
34.国际化。
命名方式:文件名称_国家代码_properties。位于src目录下。
35.拦截器Interceptor:类似于过滤器。
Interceptor是structs2的核心。
须要实现方法:init、intercept(在请求前或处理后处理)、destroy方法。
定义拦截器类须要实现Interceptor接口->在structs.xml中进行配置(interceptors)->structs.xml中action引用拦截器。注意:使用自己定义拦截器后。默认拦截器不再起作用。须要加上默认的拦截器。且自己定义拦截器位于默认拦截器之上。使用拦截器<param>能够传值。Interceptor接口要求必须实现init、intercept和destroy方法,能够使用AbstractInterceptor。拦截器、过滤器运行过程:interceptor1.invoke->interceptor2.invoke->validate->interceptor2返回并结束->interceptor1返回并结束。
36.Struts2提供支持文件上传<s:form action=”upload” enctype=”multipart/form-data”>。
Uploadaction继承ActionSupport。Struts默认是运行请求转发,刷新一次就运行一次。能够改为重定向:<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”);//加载驱动
DriverManager类getConnection用于建立连接
Connection类的close方法用于关闭数据库连接
Connection的createStatement发送SQL语句。使用Statement对象{statement、preparestatement、CallableStatement},经常用法executeQuery、executeUpdate和close。
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.须要getter和setter.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!经常用法:sava、update、delete、get
D.Transation:事务处理。
44.可编写HibernateUtil类完毕对session的操作(静态SessionFactory、静态代码块处理sessionFactory)。
45.编写DBPerson处理数据库和Person对象。Hql针对的是类对象而言(select * form Person,Person是类不是表 ),sql针对的是数据库。
46.数据库中的blob类型用于存二进制文件。Hibernate的xml中用binary转换,持久化类用byte[]转换。
47.1对多关系双向关联关系(就2个),多的通过外键參照1的那一方。使用key元素设置外键。Cascade的理解:1的那份保存,然后依照外键所有保存多的。
48.1对多双向自身关联关系(树形结构,子类1对1父类,子类1对n孙类),比如Category{private Long id;private String name;private Category parentCategory;//父 private Set childCategories;//子类别}。数据库表中使用有三个字段:id、name和parentID(外键,指向本身的ID)。
版权声明:本文博客原创文章,博客,未经同意,不得转载。