五、JEE
适用于创建server端的大型的软件服务系统
1. JEE : JAVA PLATFORM ENTERPRISE DEDITON
2.是一个规范集、技术集、框架集(API集)
一种技术相应一种或多种规范
框架是可以完毕一定功能的半成品
1.长处:完毕一定的功能、提供一个经良的应用程序架构
2.框架都是以接口的形式出现
3. 应该了解框架完毕的功能、框架的API接口、框架的功能是怎么实现的
3.C/S B/S 模式
a. C/S client/server client也參与程序的执行与计算(富client、瘦client)
b. B/S border/server
4、企业级应用(大规模的应用)
1.生命周期长、稳定、可靠
2.组件往往分布在异构的环境中,可以跨平台
3.维护性、扩展性、重用性
4.有事务、安全、线程
5、业务逻辑
划分模块是 按照业务逻辑,所谓判定业务 就是起具有下面特征:
1.业务流程
2.业务推断
6、平台(角色)
1. 平台供应商。
提供满足API集实现的厂商(BEA weblogin IBM webshphere)
2.组件供应商
3.组件装配人员
4.部署人员
5.系统管理人员
6.工具供应商 提供开发组件所使用的工具(Jbuilder、eclipse)
7、java技术分布(设计架构 模块内部设计)
1.表现层 Servlet、 Jsp、 JavaBean、 Taglib
2.逻辑层 EJB(SessionBean)
3.数据层 ( JDBC EJB(EntityBean))
4.服务 JTA(JAVA事务架构) JTS(JAVA事务服务) JAAS(JAVA授权与验证服务)
5.分布式通讯 RMI(IIOP)+JNDI 、JAXP JAVA 的 XML 架构
JAVAMAIL(邮件服务)、JMS(消息服务)、IDLC、JCA(JAVA连接器框架 (成))
8、JEE的体系结构: 是一种组件的体系结构
1.组件 : 可以完毕一定功能的封状体(独立的功能的集合)
不能单独执行必须执行在容器上
web组件 ejb组件
2.体系结构: 应用组件之间的关系
3.容器 : 提供组件的执行环境,并对组件进行管理(一段程序)
管理组件的生命后期
不能单独执行必须执行在server上
程序通过上下文来调用容器(context)
容器通过回调的方法来调用组件
web容器 ejb容器
4.server :提供容器的执行环境。提供大量的JEE基础服务
webserver(仅仅提供web服务)
jeeserver(提供web、jee服务)
9、部署描写叙述 :(用xml来描写叙述)
组件向容器描写叙述自己,使容器可以认识组件
容器通过回调的方法来调用组件
回调:由程序实现的方法,程序自己不调,由容器自己主动调用的方法
10、JAVA 关于XML 的 API
JAXP(Java API for xml prasing )解析xml文件以便读写
JAXB (Java API for xml Binding ) 映射技术
JAVA 数据映射到xml文件
11、webservice :提供web服务 (功能的重用 相同的功能仅仅存在一份)
机制例如以下:
1. server注冊uddi,来展示自己的功能
2. client通过uddi来寻找自己想要的功能
3. uddi返回信息给client
4. client通过webservice来调用server的方法,在调用时封装了RPC、RMI、JNDI(SOAP)
5. 调用是屏蔽了client与server端的差异,通过统一的rmi来进行通讯
12、RMI远程方法的调用机制
比如:A主机有B()方法,C主机有D()方法,A 想调用C主机的D方法
webservice 又出现不同的版本号 集成技术 SOA
13、JAVA的体系结构
14、学习方法
1.规范(熟记) 2.熟悉API 3.多练 4.多想
六、servlet
1:什么是B/S和C/S
Browser/Server浏览器/server(瘦client) Custom/Server client/server(胖client)
2:描写叙述war包、jar包、ear包的结构
war-
--myweb
---WEB-INF
----web.xml
----lib
----classes
jar-
--myjar
---META-INF
----.MF
ear-
--META-INF
---Application.xml
--.war
--.jar
3:什么是servlet?servlet主要做什么?
网络服务的请求和响应方式
通过WEB浏览器调用servlet的方法,主要是在服务端写动态代码与server端交流。
4:servlet 与cgi相比的长处?servlet的缺点
长处:
性能(线程比进程更快)
可伸缩
Java强健且面向对象
Java平台独立
缺点:
处理代码(业务逻辑)与HTML(表现逻辑)混合在一起
5:经常使用的servlet包的名称是?
javax.servlet
javax.servlet.http
6:描写叙述servlet接口的层次结构?
Servlet
--genericServlet
--HttpServlet
--自己的servlet
ServletRequest
ServletResponse
7:对照get方法和post方法?
get方法: 请求对server没有负面影响,Form数据量小,数据的内部应在url中可见;
明文传输。安全度低
post方法:请求的数据过程改变server的状态,Form数据量大,数据的内部应在url
中不可见,安全度高。
8:归类描写叙述HttpServletRequest接口都完毕那些功能
1.读取和写入HTTP头标
2.取得和设置cookies
3.取得路径信息
4.标识HTTP会话。
9:归类描写叙述HttpServletResponse接口都完毕那些功能
HttpServletResponse增加表示状态码、状态信息和响应头标的方法,它还负责对URL中写入一Web页面的HTTP会话ID进行解码。
10:描写叙述Service方法所完毕的基本功能?默认是在那里实现的?
service方法是在servlet生命周期中的服务期,依据HTTP请求方法(GET、POST等),将请求分发到doGet、doPost等方法
HttpServlet类实现
11:怎样开发自己的Servlet?描写叙述应该做的步骤和每步须要完毕的工作
1.引jar包
1)构建开发环境 common包-->lib包-->servlet--->api.jar
2.开发servlet类
1)首先继承HttpServlet
2)实现 doGet() doPost()
3)定义 doGet() doPost()
3.建个web应用
4.部署
安装web容器。比如Tomcat
在Tomcat的webapps文件夹下新建一个文件夹作为web程序的根
在根下新建一个名为WEB-INF的目录,里面建立一个web.xml的文件、一个classes的目录、一个lib目录
依照servlet的DTD配置web.xml文件
把编译好的servlet的class文件拷贝到classes文件夹下
lib文件存放程序所须要的jar包
12:为何servlet须要部署描写叙述?
servlet须要配置web.xml文件来使容器认识servlet程序
13:Servlet主要的描写叙述应该是?请写出来
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>sl314.web.FormBasedHello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/greeting</url-pattern>
</servlet-mapping>
14:怎样在html中使用servlet
FORM标记
ACTION– 指定form信息的目的地(相关的URL)
METHOD – 指定HTTP方法(GET或POST)
语法:
<FORM ACTION=’servlet-URL’ METHOD=’{GET|POST}’>
{HTML form tags and other HTML content}
</FORM>
15:怎样接受request中的參数
String userName = (String)request.getParameter("userName")方法
16:怎样接受request中header的值
request.getHeader(name);
request.getHeaders(names);等
17:怎样输出html
PrintWriter pw = response.getWriter();
pw.write("<html>");
pw.write("Hello");
pw.write("</html>");
18:怎样设置输出的contentType
response.getContentType()
19:描写叙述servlet的生命周期?
生命周期是指servlet实例在web容器中从:首次创建调用init方法開始初始化期,经过service方法执行期,一直到destory方法销毁期 结束
servlet实例的生命周期由web容器来管理
20:描写叙述init,service,destroy方法的功能和特点
init方法: 是在servlet实例创建时调用的方法,用于创建或打开不论什么与servlet相的
资源和初始化servlet的状态Servlet规范保证调用init方法前不会处理
不论什么请求
service方法:是servlet真正处理client传过来的请求的方法,由web容器调用,
依据HTTP请求方法(GET、POST等),将请求分发到doGet、doPost等方法
destory方法:是在servlet实例被销毁时有web容器调用。Servlet规范确保在
destroy方法调用之前全部请求的处理均完毕须要覆盖destroy方法的情况:释放不论什么在init方法中打开的与servlet相关的资源存储servlet的状态
21:什么是回调方法?有什么特点?
由容器来调用程序的方法
由容器来决定什么时候来调
22:怎样设置初始化servlet的參数?
<init-param>
<param-name>greetingText</param-name>
<param-value>Hello</param-value>
</init-param>
23:怎样获取servlet初始化的參数
public void init() {
greetingText = getInitParameter("greetingText");
System.out.println(">> greetingText = '" + greetingText + "'");
}
24:ServletConfig接口默认在那里实现的
GenericServlet类实现ServletConfig接口
25:什么是ServletContext?有什么作用?
Servlet上下文
ServletContext对象是Web应用的执行时表示。可通过事实上现Web应用中的资源共享
26:怎样訪问ServletContext接口?是在那里实现的?
Servlet通过getServletContext()方法訪问
GenericServlet类实现
27:ServletContext接口的功能包含?分别用代码演示样例
仅仅读初始化參数: getInitParameter(name:String) : String
getInitParameterNames() : Enumeration
读写訪问应用级属性:getAttribute(name:String) : Object
setAttribute(name:String, value:Object)
getAttributeNames() : Enumeration
仅仅读訪问文件资源: getResource(path) : URL
getResourceAsStream(path) : InputStream
写web应用日志文件:log(message:String)
log(message:String, Throwable:excp)
28:怎样设置Context的參数?
<context-param>
<param-name>catalogFileName</param-name>
<param-value>/WEB-INF/catalog.txt</param-value>
</context-param>
29:怎样获取Context设置的參数值?
ServletContext context = sce.getServletContext();
String catalogFileName = context.getInitParameter(“catalogFileName”);
30:描写叙述Web应用的生命周期?
Web容器启动时。初始化每一个Web应用
能够创建"监听器"对象触发这些事件;
Web容器关闭时。销毁每一个Web应用
31:怎样用代码实现监控Web应用的生命周期?
public class Test implements ServletContextListener{
public void contextInitialized(ServletContextEvent sce) {
//
}
}
<listener>
<listener-class>
com.csy.Test
</listener-class>
</listener>
32:web应用中例如以下错误码示什么意思:400,401,404。500
400 Bad Request
401 Unauthorized
404 Not Found
500 Internal Server Error
33:描写叙述Web应用中用声明方式来进行错误处理的两种方法
使用error-page元素声明一个给定HTTP状态码的处理器
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
能够声明随意数量的错误页面。但一个给定的状态码仅仅能相应一个页面
使用exception-type元素声明给定Java异常的处理器
<error-page>
<exception-type>
java.lang.ArithmeticException
</exception-type>
<location>/error/ExceptionPage</location>
</error-page>
能够声明随意数量的错误页面,但一个给定的异常类型仅仅相应一个页面
不能使用父类捕获多种异常
34:描写叙述记录异常日志的方法,都位于那些接口?
GenericServlet:
log(message:String)
log(message:String, Throwable:excp)
ServletContext:
log(message:String)
log(message:String, excp:Throwable)
35:什么是会话?
Web容器可为每一个用户保存一个"会话对象"。用来存储特定用户的会话信息
36:怎样获得会话?
HttpSession session = request.getSesseion();
37:会话Api的基本功能?
getID() :String
isNew() :boolean
getAttribute(name):Object
setAttribute(name,value)
removeAttribute(name)
38:怎样销毁会话?
1、可使用部署描写叙述符控制全部会话的生命周期
<session-config>
<session-timeout>10</session-timeout>
</session-config>
2、可使用控制特定会话对象的生命周期HttpSession接口
invalidate()
getCreationTime() :long
getLastAccessedTime() :long
getMaxInactiveInterval() :int
setMaxInactiveInterval(int)
39:描写叙述会话保持状态的基本原理
client server
request
response (sessionid)
request (cookies)
当client第一次请求时。server创建一个session与request绑定,用响应对象response来返回sessionid 放到client的cookies中存储下来。下次在发送请求时,直接依据sessionid来检索server的会话(每次请求都会将全部的cookies带到server端)
40:怎样读写cookie,代码演示样例
写:String name = request.getParameter("firstName");
Cookie c = new Cookie("yourname", name);
response.addCookie(c);
读:Cookie[] allCookies = request.getCookies();
for ( int i=0; i < allCookies.length; i++ ) {
if ( allCookies[i].getName().equals(“yourname”) ) {
name = allCookies[i].getValue();
}
}
41:什么是URL重写。怎样实现。代码演示样例
Cookie不能使用时。可使用URL重写 request.encodeURL();
客户在每一个URL的后面追加额外的数据
server将此标识符与其存储的有关会话数据相关联
http://host/path/file;jsessionid=123
41:描写叙述web应用的4种认证技术
BASIC – Web浏览器接收username和口令,将其以明码方式发送给Webserver
DIGEST – Web浏览器接收username和口令,使用加密算法将此数据发送给Webserver
FORM – Web应用提供发送给Web浏览器的HTML form
CLIENT-CERT – Web容器使用SSL验证用户。服务端和client的链路保护
42:什么是授权,什么是验证?
授权是分局用户角色划分web资源的过程,其标识web应用中的安全域 分配权限
web容器使用厂商指定的机制验证用户的角色 匹配权限
43:什么是HTTPS
HTTPS (Secure Hypertext Transfer Protocol) 是使用SSL协议的HTTP
44:什么是审计?
也就是訪问跟踪。是为web应用的每次訪问保留记录的过程
45:怎样实现声明性授权
1、标识web资源集
2、标识角色
3、将web资源集影射到角色
4、标识每一个角色中的用户
在 web.xml里配
46:描写叙述servlet并发问题?
多个同类线程执行,能够共享同一个Servlet实例,共享的数据和资源未合理同步,可能会引起数据的冲突
47:描写叙述Web应用中的六种属性范围
局部变量(页面范围)
实例变量
类变量
请求属性(请求范围)
会话属性(会话范围)
上下文属性(应用范围)
48:支出上述六种那些是线程安全的
局部变量和请求属性
49:什么是STM?怎样实现?
SingleThreadModel接口
能够实现SingleThreadModel接口保证某一时刻仅仅有一个请求运行service方法
50:怎样实现并发管理?
尽可能使用局部和请求属性
使用synchronized语法控制并发
尽可能降低同步块和同步方法的使用
使用正确设置了线程安全的资源类
六、Jsp
1:什么是Jsp?
Java Server Page 结合java和html在服务端动态生成web页面的技术
2:描写叙述Jsp页面的执行过程?
第一步:
请求进入Web容器。将JSP页面翻译成Servlet代码
第二步:
编译Servlet代码,并将编译过的类文件装入Web容器(JVM)环境
第三步:
Web容器为JSP页面创建一个Servlet类实例。并运行jspInit方法
第四步:
Web容器为该JSP页面调用Servlet实例的_jspService方法。将结果发送给用户
3:描写叙述Jsp页面的五类脚本元素的功能、写法、并演示样例
凝视 <%-- --%>
<HTML>
<%-- scripting element --%>
</HTML>
指令标记 <%@ %> 指令标记影响JSP页面的翻译阶段
<%@ page session=”false” %>
声明标记 <%! %> 声明标记同意JSP页面开发者包括类级声明
<%! public static final String DEFAULT_NAME = “World”; %>
脚本标记 <% %> 脚本标记同意JSP页面开发者在_jspService方法中包括随意的Java代码
<% int i = 0; %>
表达式标记 <%= %> 表达式标记封装Java执行时的表达式。其值被送至HTTP响应流 <B>Ten is <%= (2 * 5) %></B>
4:描写叙述Jsp页面中的凝视种类和写法
HTML凝视
<!-- HTML凝视显示在响应中 -->
JSP页面凝视
<%-- JSP凝视仅仅在JSP代码中可见,不显示在servlet代码或响应中。--%>
Java凝视
<%
/* Java凝视显示在servlet代码中。不显示在响应中
*/
%>
5:描写叙述Jsp页面的指令标记的功能、写法、并演示样例
指令标记影响JSP页面的翻译阶段
<%@ page session=”false” %>
<%@ include file=”incl/copyright.html” %>
<%@ taglib %>
6:描写叙述Jsp页面的声明标记的功能、写法、并演示样例
声明标记同意JSP页面开发者包括类级声明
写法:
<%! JavaClassDeclaration %>
例:
<%! public static final String DEFAULT_NAME = “World”; %>
<%! public String getName(HttpServletRequest request) {
return request.getParameter(“name”);
}
%>
<%! int counter = 0; %>
7:描写叙述Jsp页面翻译成Servlet的规则
jsp中的凝视标记被翻译成Servlet类中的凝视
jsp中的指令标记被翻译成Servlet类中的import语句等
jsp中的声明标记被翻译成Servlet类中的属性
jsp中的脚本标记被转移到Servlet类中service方法中的代码
jsp中的表达式标记被翻译成Serlvet类中的write()或者print()方法括号里的代码
8:描写叙述Jsp页面的九个提前定义变量的功能、使用方法、并演示样例
request 与请求相关的HttpServletRequest对象
response 与送回浏览器的响应相关的HttpServletResponse对象
out 与响应的输出流相关的JspWriter对象
session 与给定用户请求会话相关的HttpSession对象,该变量仅仅在JSP页面參
与一个HTTP会话时有意义
Applicationn 用于Web应用的ServletContext对象
config 与该JSP页面的servlet相关的ServletConfig对象
pageContext 该对象封装了一个JSP页面请求的环境
page 该变量与Java编程语言中的this变量等价
exception 由其他JSP页面抛出的Throwable对象,该变量仅仅在
"JSP错误页面"中可用
9:page指令的功能,写法、并演示样例,并描写叙述它的例如以下属性的功能和使用方法:import、session、buffer、errorPage、isErrorPage、ContentType、pageEncoding
import import 定义了一组servlet类定义必须导入的类和包。值是一个由
逗号分隔的全然类名或包的列表。
session session 定义JSP页面是否參与HTTP会话。值能够为true(缺省)
或false。
buffer buffer 定义用于输出流(JspWriter对象)的缓冲区大小,值能够为
none或Nkb,缺省为8KB或更大。
errorPage 用来指定由还有一个jsp页面来处理全部该页面抛出的异常
isErrorPage 定义JSP页面为其他JSP页面errorPage属性的目标,值为true或
false(缺省)。
ContentType 定义输出流的MIME类型,缺省为text/html。
pageEncoding 定义输出流的字符编码。缺省为ISO-8859-1
10:描写叙述MVC各部分的功能?
Model
封装应用状态
响应状态查询
暴露应用的功能
Controller
验证HTTP请求的数据
将用户数据与模型的更新相映射
选择用于响应的视图
View
产生HTML响应
请求模型的更新
提供HTML form用于用户请求
11:什么是Model 1结构,以及结构中各部分的功能
Model1中使用jsp来处理web应用中的视图控制部分
jsp+javabean
12:什么是JavaBean?
用户能够使用JavaBean将功能、处理、值、数据库訪问和其它不论什么能够用java代码
创造的对象进行打包,而且其它的开发人员能够通过内部的JSP页面、Servlet、其
他JavaBean、applet程序或者应用来使用这些对象。
13:JavaBean的规则?
使用get和set方法定义属性
一个无參构造方法
无public实例变量
14:什么是jsp标准动作?包括那些?分别都是什么功能?怎样使用?
JSP页面中使用类似于XML的标记表示执行时的动作
jsp:userBean
jsp:setProperty
jsp:getProperty
jsp:parameter
jsp:include
jsp:forward
15:用代码示比例如以下标准动作的使用:useBean、getProperty、setProperty
<jsp:useBean
id="myForms"
class="com.base.mystruts.forms.MyActionForm" scope="session" />
<jsp:setProperty name="MyForms" property="name" />
<jsp:getProperty name="MyForms" property="id" />
16:描写叙述说明Bean的四种scope
Request
Session
Application
Page
17:描写叙述说明页面上的字段和Bean中属性的相应规则
id 指javabean的变量名
class指javabean类的全路径
scope指javabean的应用范围
name指所用到的javabean的变量名
property指javabean中的属性
18:描写叙述useBean动作的处理过程
使用id声明变量
试图在指定的范围内查找对象
假设没找到
创建一个类的实例
运行useBean标记体初始化对象
假设找到
将对象转换为类指定的类型
19:描写叙述forward动作的功能
使用脚本代码处理请求时。可用jsp:forward 动作产生一个不同的视图,
使用同一个request:
20:什么是Model 2结构。以及结构中各部分的功能
jsp+javabean+servlet
Model 2架构使用MVC模式。JSP页面充当视图,Servlet充当控制器
Servlet控制器:
验证HTML form数据
调用模型中的业务服务
存储请求(或会话)范围内的域对象
选择下一个用户的视图
JSP页面视图:
使用用户界面(在HTML中)
訪问域对象
21:怎样获得分发器?分发器的功能?
上下文对象中的分发器:
ServletContext context = getServletContext();
RequestDispatcher servlet = context.getNamedDispatcher("MyServlet");
servlet.forward(request, response);
请求对象中的分发器:
RequestDispatcher view = request.getRequestDispatcher("tools/nails.jsp");
view.forward(request, response);
能够将请求转发到还有一个jsp页面
Client request(1) aServlet
request(2) bServlet
requers(1)
RequestDispatcher
当从client发出请求到a 是request(1),a再请求b是request(2)就变成两个不同的请求。用RequestDispatcher来保持原来的请求
(在不同的servlet之间保持同一个请求时用RequestDispatcher)
RequestDispatcher rd = request.getRequestDispatcher(“string”);
Rd.forword(request);//前往下一个请求 到下一个servlet
22:描写叙述Jsp中引入另外页面的两种方法?
<%@ include%>
<jsp:include>
23:比較上述两种方法的特点
<%@ include%> 再编译期间把还有一个页面全然嵌入这个页面,能够说是一个页面
在这里能够共享变量
<jsp:include> 动态的再执行期间把还有一个页面增加这个页面,能够说是两个
页面,不能够共享变量
24:什么是自己定义标记
自己定义标记库是一个Web组件。
包含:
一个标记库描写叙述符文件
全部相关的标记处理器类
25:描写叙述使用自己定义标记的步骤,以及每步具体的工作
1.自己定义标记遵循XML标记规则
自己定义标记使用XML规则。
标记名属性,以及前缀都是大写和小写敏感;
标记嵌套规则;
2.须要在JSP页面和Web应用程序的部署描写叙述符中声明标记库
taglib
在部署描写叙述符中使用taglib元素声明web应用程序使用一个标记库。
在jsp页面中使用taglib指令表明要使用哪个标记库及对应的自己定义标记所
使用的前缀;
使用自己定义的空标记
使用自己定义的条件标记
使用自己定义的迭代标记
3.在JSP页面中可使用自己定义的空标记
getPepParam()标记:将命名的请求标志插入的输出中。
4.在JSP页面中使用自己定义标记。可有条件地运行HTML响应的某部分
heading标记:生成一个隐藏的Html table创建一个彩色且格式化过的页表头
5.在JSP页面中使用自己定义标记,可迭代运行HTML响应中的某部分
IterateOverErrors标记:对stutas中的全部异常现象进行迭代;
taglib
1.把类烤过去
2.把Taglib的描写叙述文件(*.tld)放在web-inf根文件夹下
3.在web.xml里配置
4.回到页面去,定义Taglib使用的前缀
5.直接使用,一定要结尾;
以下将解说web前端的技术知识点