web后台知识点整理

时间:2022-11-17 15:03:47

五、JEE  

适用于创建服务器端的大型的软件服务系统

1. JEE : JAVA  PLATFORM  ENTERPRISE  DEDITON

.是一个规范集、技术集、框架集(API集)

一种技术对应一种或多种规范

     框架是能够完成一定功能的半成品

    1.优点:完成一定的功能、提供一个经良的应用程序架构

   2.框架都是以接口的形式出现

    3应该了解框架完成的功能、框架的API接口、框架的功能是怎么实现的

.C/S B/S 模式

     a.   C/S client/server 客户端也参与程序的运行与计算(富客户端、瘦客户端)

 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.工具供应商 提供开发组件所使用的工具(Jbuildereclipse) 

7java技术分布(设计架构 模块内部设计)

   1.表现层 Servlet、 Jsp、 JavaBean、 Taglib

   2.逻辑层 EJB(SessionBean)

   3.数据层 ( JDBC EJBEntityBean))

   4.服务 JTAJAVA事务架构) JTSJAVA事务服务) JAASJAVA授权与验证服务) 

   5.分布式通讯 RMIIIOP+JNDI JAXP JAVA 的 XML 架构

      JAVAMAIL(邮件服务)、JMS(消息服务)、IDLCJCAJAVA连接器框架 (成))                    

8JEE的体系结构: 是一种组件的体系结构

    1.组件    : 能够完成一定功能的封状体(独立的功能的集合)

                 不能单独运行必须运行在容器上

                 web组件 ejb组件

2.体系结构: 应用组件之间的关系  

3.容器    : 提供组件的运行环境,并对组件进行管理(一段程序)

            管理组件的生命后期

不能单独运行必须运行在服务器上

程序通过上下文来调用容器(context

容器通过回调的方法来调用组件

            web容器 ejb容器

4.服务器  :提供容器的运行环境,提供大量的JEE基础服务             

                web服务器(只提供web服务)

                jee服务器(提供webjee服务)

9部署描述  :(用xml来描述)

               组件向容器描述自己,使容器能够认识组件

               容器通过回调的方法来调用组件

               回调:由程序实现的方法,程序自己不调,由容器自动调用的方法

10JAVA 关于XML 的 API

               JAXPJava  API for  xml prasing )解析xml文件以便读写    

               JAXB (Java  API  for  xml Binding ) 映射技术

                    JAVA 数据映射到xml文件

11webservice :提供web服务 (功能的重用 同样的功能只存在一份)

 

   机制如下:

          

1. 服务器注册uddi,来展示自己的功能

2. 客户端通过uddi来寻找自己想要的功能

3. uddi返回信息给客户端

4. 客户端通过webservice来调用服务器的方法,在调用时封装了RPC、RMI、JNDI(SOAP)

5.  调用是屏蔽了客户端与服务器端的差异,通过统一的rmi来进行通讯

 12、RMI远程方法的调用机制

    例如:A主机有B()方法,C主机有D()方法,A 想调用C主机的D方法

         webservice 又出现不同的版本    集成技术     SOA

 

13、JAVA的体系结构

  

14、学习方法

  1.规范(熟记) 2.熟悉API   3.多练   4.多想

六、servlet

1:什么是B/SC/S

 Browser/Server浏览器/服务器(瘦客户端)     Custom/Server 客户端/服务器(胖客户端)

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:什么是servletservlet主要做什么?

网络服务的请求和响应方式

通过WEB浏览器调用servlet的方法,主要是在服务端写动态代码与服务器端交流;

4servlet cgi相比的优点?servlet的缺点

优点:

 性能(线程比进程更快)

 可伸缩

 Java强健且面向对象

 Java平*立

缺点:

   处理代码(业务逻辑)与HTML(表现逻辑)混合在一起

5:常用的servlet包的名称是?

javax.servlet

javax.servlet.http

6:描述servlet接口的层次结构?

Servlet

--genericServlet

--HttpServlet

--自己的servlet

ServletRequest

ServletResponse

7:对比get方法和post方法?

get方法: 请求对服务器没有负面影响,Form数据量小,数据的内部应在url中可见;

              明文传输,安全度低

post方法:请求的数据过程改变服务器的状态,Form数据量大,数据的内部应在url

中不可见,安全度高;

8:归类描述HttpServletRequest接口都完成那些功能

1.读取和写入HTTP头标 

2.取得和设置cookies

3.取得路径信息 

4.标识HTTP会话。

9:归类描述HttpServletResponse接口都完成那些功能

HttpServletResponse加入表示状态码、状态信息和响应头标的方法,它还负责对URL中写入一Web页面的HTTP会话ID进行解码。

10:描述Service方法所完成的基本功能?默认是在那里实现的?

service方法是在servlet生命周期中的服务期,根据HTTP请求方法(GETPOST等),将请求分发到doGetdoPost等方法

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

Tomcatwebapps目录下新建一个文件夹作为web程序的根

在根下新建一个名为WEB-INF的文件夹,里面建立一个web.xml的文件、一个classes的文件夹、一个lib文件夹

按照servletDTD配置web.xml文件

把编译好的servletclass文件复制到classes目录下

lib文件存放程序所需要的jar

12:为何servlet需要部署描述?

 servlet需要配置web.xml文件来使容器认识servlet程序

13Servlet基本的描述应该是?请写出来

<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方法(GETPOST

语法:

<FORM ACTION=’servlet-URL’ METHOD=’{GET|POST}’>

{HTML form tags and other HTML content}

</FORM>

15:如何接受request中的参数

String userName = (String)request.getParameter("userName")方法

16:如何接受requestheader的值

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真正处理客户端传过来的请求的方法,由web容器调用,

根据HTTP请求方法(GETPOST等),将请求分发到doGetdoPost等方法

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 + "'");

}

24ServletConfig接口默认在那里实现的

GenericServlet类实现ServletConfig接口

25:什么是ServletContext?有什么作用?

Servlet上下文 

ServletContext对象是Web应用的运行时表示,可通过其实现Web应用中的资源共享

26:如何访问ServletContext接口?是在那里实现的?

Servlet通过getServletContext()方法访问

GenericServlet类实现

27ServletContext接口的功能包括?分别用代码示例

只读初始化参数: 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>

32web应用中如下错误码示什么意思:400401404500

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) 

 

 

   当客户端第一次请求时,服务器创建一个sessionrequest绑定,用响应对象response来返回sessionid 放到客户端的cookies中存储下来,下次在发送请求时,直接根据sessionid来检索服务器的会话(每次请求都会将所有的cookies带到服务器端)

 

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的后面追加额外的数据

服务器将此标识符与其存储的有关会话数据相关联

http://host/path/file;jsessionid=123

41:描述web应用的4种认证技术

BASIC – Web浏览器接收用户名和口令,将其以明码方式发送给Web服务器

DIGEST – Web浏览器接收用户名和口令,使用加密算法将此数据发送给Web服务器

FORM – Web应用提供发送给Web浏览器的HTML form

CLIENT-CERT – Web容器使用SSL验证用户,服务端和客户端的链路保护

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 结合javahtml在服务端动态生成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错误页面"中可用

9page指令的功能,写法、并示例,并描述它的如下属性的功能和用法:importsessionbuffererrorPageisErrorPageContentTypepageEncoding

import       import 定义了一组servlet类定义必须导入的类和包,值是一个由

逗号分隔的完全类名或包的列表。

 session      session 定义JSP页面是否参与HTTP会话,值可以为true(缺省)

false

buffer       buffer 定义用于输出流(JspWriter对象)的缓冲区大小,值可以为

noneNkb,缺省为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、其

JavaBeanapplet程序或者应用来使用这些对象。

13JavaBean的规则?

使用getset方法定义属性

一个无参构造方法

public实例变量

14:什么是jsp标准动作?包含那些?分别都是什么功能?如何使用?

JSP页面中使用类似于XML的标记表示运行时的动作

jsp:userBean

jsp:setProperty

jsp:getProperty

jsp:parameter

jsp:include

jsp:forward

15:用代码示例如下标准动作的使用:useBeangetPropertysetProperty

<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的变量名

classjavabean类的全路径

scopejavabean的应用范围

name指所用到的javabean的变量名

propertyjavabean中的属性

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

 

            当从客户端发出请求到request1),a再请求brequest2)就变成两个不同的请求,用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前端的技术知识点