1. HTML(Hyper Text Markup Language):超文本标记语言,后缀为htm或html。
2. CSS(Cascading Style Sheets):层叠样式表,用于定义HTML或XML的显示,常用后缀为css。样式表的优先级:浏览器默认<外部CSS(head中引用)<内部CSS(head标签中定义)<行内CSS(在一个HTML元素中)。
|-CSS语法规则三部分组成:选择器(标签选择器、类选择器、id选择器)、属性和值,如下:
selector{property:value}
|-如果value为多个单词,用引号引起来;如果property为多个属性,用分号;隔开。
|-使用类属性class实现同一标签的不同效果,如h1.left{p:v}
|-使用如下语法选择类:.class{p:v}
|-可以通过 id选择器选择,格式如下:#id{p:v},p#green{p:v}选择p元素中id为green的元素。
|-注释采用的是/**/
|-CSS的引用:
|-外部样式表:在head标签中使用link引用
<link rel=”stylesheet” type=”text/css” href=”mycss.css”>
|-内部样式表:在head中使用<style>定义
<style type=”text/css”>center{align:center}</style>
|-行内样式:直接定义在元素上,通过style定义
<p style=”color:red;margin-left:20px”>AAA</p>
|-对于多种样式的定义,限定的时候采用具体的方式,即那种方式更具体就采用过来,这样内部、外部、行内都采用。
3. HTTP(Hyper Text Transfer Protocol):超文本传输协议,是应用层协议,使用请求/响应模式的,无状态(服务端可以接受同一客户端的多次请求)的协议。
|-浏览器与服务器通信过程(HTTP 1.0),每次请求响应后都要关闭,维持多个连接。
|-客户端发起连接
|-客户端发起请求
|-服务器响应请求
|-服务器关闭连接
|-在HTTP1.1后,采用持续连接作为行为。浏览器建立连接后并得到回应后,可以继续发送请求并接受回应。
浏览器与服务器通信(HTTP1.1)通信(维持一个连接):
|-建立连接
|-发起第一次请求
|-…
|-发起第N此请求
|-回送第一次请求
|-回送第N次请求
|-发送关闭请求
|-服务器关闭连接
4. HTTP请求包括三部分:请求行、消息包头、请求正文,以下的命令可以在Telnet中使用。
|-请求行:方法名 请求uri 协议版本 CRLF(回车换行)
格式:Method Request-URI HTTP-Version CRLF
例子:Get /test.html HTTP/1.1 CRLF
方法:当我们通过浏览器访问时,默认使用的是Get方法。
1、对HTML请求而言,Get、Post都是用来从服务器上获得数据。
2、对于表单而言,method有两种方法Get、Post向服务器提交表单,默认为Get。Get将表单中数据的按照variable=value的形式,添加到act
GET和POST之间的差别:
1. 浏览器地址呈现的结果不同
2. 真正的原因在于向服务器发送请求时形式不同。Get将请求参数以URL的方式传递到服务器;Post将参数封装在form数据体中,以请求体的方式发送到服务器中。
|-状态行:HTTP-Version Statur-Co
其中Reason-Phrase=200表示客户端请求成功,=404表示请求资源不存在。500表示内部错误。
5. 启动Tomcat(不安装版本)需要配置环境变量。Tomcat无法运行EJB,得使用JBOSS、WEBLOGIC等。
a) CATALINA:职位Tomcat的安装目录
b) JAVA_HOME:值为JDK的安装目录(bin的上一级目录)
c) PATH:值为$CATALINA/bin
在Tomcat中的server.xml中配置Web项目。
<Context path=”/WebName” docBase=”D:\address” reloadable=”true”/>
6. web.xml(deployment descriptionor):部署描述符。
7. Servlet是服务器端的编程,Servlet类没有main方法。
a) 继承自HttpServlet(抽象类,但是没有抽象方法)。
b) Servlet写法:
public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(“text/html”); PrintWriter out = resp.getWriter(); out.println(“<html><head><title>HelloWorld</title></head>”); out.println(“<body>Hello World!”</body></html>); out.flush(); } |
c) 配置web.xml:
<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>com.test.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld></url-pattern>f |
8. Servlet:Java中嵌入HTML代码;JSP:HTML中嵌入Java代码;
9. 关于GET和POST(不是form中get和post):
|-通过浏览器上传文件时,一定要使用POST的方式而不能使用GET的方式。
|-通过在浏览器中输入网址的方式来访问服务器资源时,全部使用的是GET方法请求的。
10. JSP(Java Server Page):在HTML中加入Java代码,代码写在<%%>中。所有的程序操作都是在服务器端执行,客户端看到的都是执行的结果。这样即使浏览器不支持java也能访问JSP网页。以前的Applet是在客户端执行,要求浏览器支持JRE。
11. JSP执行过程(都在服务器端执行,JSP最终转换成Servlet):
1. 客户端请求JSP(*.jsp)
2. JSP Parser将JSP页面编译成Servlet的Java文件(*.java),如果已经有客户端请求过,则跳过2,3步,直接跳到4,执行class文件。
3. Servlet分析器JSDK编译成class文件(*.class)
4. 执行class文件并返回响应
12. JSP指令:
a) 编译指令:<%@ %>
i. Page: language、imp
ii. Include:在当前页面插入一个静态的页面。
iii. Taglib:用于引入定制的标签库
b) 其他常用指令 :
i. <jsp:forward page=”” />:页面跳转,跳转后该页面后面的代码不再执行。内部实现使用return退回。
ii. <jsp:param name=”” value=””>:用于<jsp:forward>之间,用于传递页面之间的参数
iii. <jsp:include page=””>:包含静态或者动态文件。也可以使用<jsp:param>传送参数。
c) 脚本语法:<% %>中
i. 注释:HTML注释(<!-- -->发送到客户端)、隐藏注释(<%-- --%>不发送给客户端)
ii. 声明:<%! Declaration%>。采用声明的方式声明的变量在产生的java代码中位于类成员变量中,而采用脚本端产生的变量是局部变量。Servlet是单实例的,这样成员变量的值只有一个,每个用户都会访问它,而脚本段中的值是局部变量,每个用户访问的时候各有一份,互不影响。因此,每次刷新,采用声明方式产生的变量值都发生变化,而脚本段中的保持不变。
iii. 表达式:<%= msg %>
iv. 脚本段:<% java co
d) 动作语法:例如<jsp:forward>等。
13. JSP内置对象(9种ROSEAPPRC):
1. request:请求对象。Javax.servlet.ServletRequest的子类,作用域为Request。代表来自客户端的请求。常用的方法为getParameter、getParameterNames和getParameterValues。getParameter方法是getParameterValues方法的特例,表示请求参数值只有一个,如果请求参数值有多个,就要使用getParameterValues方法,该方法常用语多选框的取值。较为常用的还有getAttribute(name)(以对象的形式返回特定名称的属性值,)和setAttribute(“name”,value)(设定对象的属性值)。这样可以进行请求的转发。客户端请求A,A通过setAttribute和forward传到B,B使用getAttribute获得A的请求。getParameter获取的是客户端的信息,getAttribute获取、设置的是服务器端的信息。
2. response:响应对象。代表对客户端的响应。不常用,要向客户发送字符串,直接使用out就行了。
3. pageContext:页面上下文。代表的是当前页面的属性,Web容器常用,编程人员不常用。
4. session:会话对象。代表服务器与客户端的会话,当需要在不同的JSP页面中保留客户信息的情况下使用。引入session的根本原因是HTTP是无状态的协议。常用方法有setAttribute()、getAttribute()。Session的存活周期是会话周期,比request生命长。
5. application:应用程序对象。负责提供应用程序在服务器中运行的一些全局信息。Application是存活范围最大的对象,只要服务器没有关闭,application对象就会一直存在。在整个服务器的运行过程中,application对象只有唯一的一个,为所有用户共享。
6. out:输出对象。代表向客户端发送的内容。Out是带缓冲区的,需要flush推出缓冲数据。
7. config:配置对象。提供配置信息,获取servlet初始化时参数。
8. page:页面对象。代表JSP产生的类对象。
9. exception:异常对象。JSP运行过程中产生的异常。只能在加入了<%@page isErrorPage=”true”>的页面中使用。
Request、session和application这三个对象的范围是逐步增加的:request只是一个请求的范围内,session是在浏览器的窗口范围内,不关浏览器就存活(不太准确!!!);application则是在整个服务器的运行过程中。
14. HttpServletRonpse对象的sendRedirect(String location)方法称作重定向。SendRedirect=”/mytest.jsp”表示Servlet容器中的根来请求,即在http://localhost:8080下面寻找mytest.jsp; SendRedirect=”mytest.jsp”表示寻找当前请求的uri目录下的mytest.jsp;如果location地址前加/,表示对于Servlet容器的请求。调用senRedirect后,服务器向客户端发送响应要求客户端重新发送请求到新地址。
1. RequestDispatcher的forward(rquest,resopnse)方法称作请求转发。
请求转发和重定向的区别:
1. 请求转发,整个过程处于同一个请求中。之前传过来的参数通过getParam可以取出来。
2. 重定向。调用senRedirect后,服务器向客户端发送响应要求客户端重新发送请求到新地址。实际上客户端会向服务端发送两个请求。
3. RequestDispatcher是通过HttpServletRequest对象的getRequestDispatcher方法得到的,属于请求对象的方法。
4. sendRedirect是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
16.表单的确认:
1.客户端验证:减少服务器负载、缩短用户等待时间、兼容性难
2.服务端验证:统一确认、兼容性强、服务器负载重
17. 使用JavaS
function validate() { Var username = document.getElementById(“username”); Alert(username); Return true; } 或者 Var validate = function() {} |
在form中设置调用 <form on 通过返回值的真假确定是否将表单提交给服务器。 |
18. MVC模式(Model-View-Controller):运用的典范是Swing。
|-Model:完成业务逻辑
|-View:呈现网页内容
|-Controller:控制请求处理
19. JavaBean:
标准的JavaBean特性:
1. JavaBean是public
2. JavaBean有一个不带参数的构造方法
3. 每个属性有setter和getter
JSP访问JavaBean的语法:
1. 导入JavaBean类<%@ page imp
2. 声明JavaBean对象:<jsp:useBean id=”” class=”” scope=””>
3. 访问JavaBean属性:
a) 取值:<jsp:getProperty name=”id” property=”属性”>。此句等价于<%id.getName()%>
b) 赋值:<jsp:setProperty name=”id” property=”属性” value=””>或者<jsp:setProperty name=”id” property=”属性” param=”Hello”>此Hello是从网页中传入的参数(?Hello=10,param的值就是10,用于动态赋值)。
20. JavaBean的存活范围:通过scope指定
1. page(默认值):当前页面
2. request:请求过程中
3. session:会话
4. application:整个服务器的应用程序
20. Servlet:主要功能是完成于其他Java资源的通信。每一个Servlet都必须实现Servlet接口,GenericServlet是个通用的、不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们定义的Servlet只需继承HttpServlet父类即可.HttpServlet是针对HTTP协议的扩展,这样对于其他协议进行扩展。
Servlet方法中定义了一个service方法,HttpServlet对该方法进行了实现,实现方式就是将ServletRequest和ServletResponse转换为HttpServletRequest和HttpServletResponse。转换完毕,就会调用HttpServlet类中自己定义的service方法,service方法首先获取请求的方法名,然后根据方法名调用对应的doXXX方法,比如说请求方法为GET,那么就调用doGet方法。如果重写services,doGet和doPost如果不写就不会自动调用了。
21. 对于Tomcat来说,它将客户传递过来的参数放到HashTable中。某些Servlet在web.xml中只有<servlet>而没有<servlet-mapping>,这样我们没法通过url访问该servlet,这种servlet往往通过<load-on-startup>子元素让容器在启动的时候自动加载他们,并且调用其init方法完成一些全局性的初始化工作。
22. Servlet的多线程同步问题:Servlet本身是单实例的,这样当有多个用户同时访问某个servlet时,会访问该唯一的servlet实例中的成员变量,如果对成员变量进行写入操作,那么会导致servlet的多线程问题。解决方案是:去除实例变量,使用局部变量。
23. Servlet核心是javax.servlet.Servlet接口,所有Servlet都必须实现这个接口,此接口定义如下的方法:
Init():用于初始化Servlet对象,正常情况下调用一次。
Services():负责相应客户端请求
Destroy():Servlet退出生命周期时释放占用的资源。
24. Servlet的API
Servlet由两个包构成:
1.javax.servlet:定义所有servlet通用的接口和方法
2.javax.servlet.http:定义采用http协议的servlet-HttpServlet。
常用接口如下:
1. ServletRequest:该接口封装了客户端的请求信息,提供诸如getInputStream、getAttribute、getRemoteHost等方法。HttpServletRequest实现了ServletRequest接口。
2. ServletResponse:提供了返回相应的方法。例如,getOutputStream,getWriter。HttpServletResponse实现该接口。
25. Servlet的生命周期。
1. 初始化阶段-调用init方法
Servlet容器在以下时刻装载Servlet:
1. Servlet容器启动时自动加载某些Servlet
2. Servlet容器启动后,客户首次向Servlet发出请求
3. Servlet的类文件被更新后,重新装在Servlet
Servlet被装载后,Servlet容器创建一个Servlet的实例并调用Servlet的init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。
2. 响应请求阶段-调用services方法
客户请求到达服务端,服务器创建特定请求的ServletRequest和ServletResponse对象,并调用services方法。
3. 终止阶段-调用destroy方法
当web请求终止或者是servlet容易终止时,调用destroy方法,释放资源。
26. 自定义servlet的步骤:
1. 扩展HttpServlet抽象类
2. 重写doGet和doPost方法
3. 获取Http请求信息。例如通过HttpServletRequest的getParameter方法
4. 生成HTTP相应。例如使用HttpServletResponse的getWriter方法获取writer,然后使用该writer的println方法向客户端返回数据流。
27. Cookie:服务器在用户的硬盘上存放用户的信息。Cookie包含key/value。使用response.addCookie添加cookie。
28. Servlet和JSP的比较
1. 都能动态生成网页
2. Jsp优点是 擅长网页的制作,比较直观,但是不易检查和排错。
3. Servlet擅长处理流程和业务逻辑。但是生成动态网页不直观。
29. HttpServletRequest和HttpServletResponse由Servlet容器创建,对于每个Http请求,Servlet容器都会创建一个HttpServletRequest。响应时创建HttpServletResponse。ServletContext由Servlet容器创建,对于每个Java Web应用,在启动时,Servlet容器都会创建一个ServletContext。
30. request的getAttribute和getParameter方法有何不同?
1. 前者返回Object对象,后者返回String对象。
2. 当两个Web组件(例如jsp页面)为连接关系时,通过getParameter来获取请求参数。
3. 当两个Web组件为转发关系时,通过getAttribute来转发组件的参数关系。
4. getParameter会从客户端获取数据放到服务端。
5. getAttribute和setAttribute在web容器中(服务端)传递数据。
31. Web服务器跟踪客户的状态:
1. 建立含有跟踪数据的隐藏字段
2. 重写包含额外参数的URL
3. 使用持续的Cookie
4. 使用Servlet API中的Session。
33. Session用于跟踪客户的状态。在session中,客户可能多次访问同一个网页资源,也有可能访问不同的资源。
Session运行机制:
1. 当一个Session开始时,Servlet容器将为每一个创建一个HttpSession对象,在该对象中可以存放客户状态信息。
2. Servlet容器为HttpSession分配一个唯一标示符,称之为Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。
3. 每次客户发出HTTP请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息。
Session是位于服务端的,Cookie一般是位于客户端的。
HttpSession接口常用方法:
1.getId():返回Session的ID
2.invalidate():使当前的Session失效,Servlet容器会释放HttpSession对象占用的资源。执行注销操作时使用。
3.setAttribute将一对name./value属性保存在HttpSession对象中
4.getAttribute根据name返回value。
5.isNew判断是否是新创建的Session,是返回true
6.setMaxInactiveInterval设定Session可以处于不活动状态的最大时间间隔。超过这个时间,session自动失效。
Session的生命周期:
1. 当客户第一次访问Web应用中支持session的网页时,创建一个新的Session。
2. 接下来当客户浏览这个Web应用的不同网页时,始终处于同一个Session中。
3. 默认情况下,Jsp网页都是支持session的,也可以通过以下语句显示声明支持Session。
<%@ page session=”true”>
Session结束生命周期的情况:
1. 客户端关闭(不一定全部能够结束session,可以借助javas
2. Session过期(达到了过期时间)
3. 服务器调用HttpSession的invalidate方法
Session可以存放对象,服务端的jsp或者servlet通过请求获得session,Session的id由Cookie存放。Session和Cookie的联系与区别:
32. Servlet过滤器Filter:
Filter是在Java Servlet规范2.3中定义的,用于在Servlet被调用之前检查Request对象,在Servlet调用之后检查Response对象。对Servlet容器的请求和响应对象进行检查和修改。Filter负责过滤的Web组件是Servlet、JSP或者HTML文件。
所有的Servlet类必须实现javax.servlet.Filter接口,这个接口含有3个过滤类必须实现的方法:
Init():Filter的初始化方法。Servlet容器创建Servlet过滤器实例后调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。
doFilter():完成实际的过滤操作。当客户端访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。
destroy():Servlet容器在销毁过滤器实例前调用该方法,在这个方法中可以释放Servlet过滤器占用的资源。
Fileter遵循链式处理原则,可以一个Filter接着另一个Filter。
33. 监听器Listener:可以监听客户端的请求、服务端的操作等。常用的监听接口有:
1.ServletContextAttributeListener:监听对ServletContext属性的操作。
2.ServletContextListener:监听ServletContext。创建ServletContext是激发contextInitalized方法;销毁ServletContext是激发contextDestroyed方法。
3.HttpSessionListener:监听HttpSession的操作。当创建一个Session时,激发sessionCreated方法;当销毁一个session时,激发sessionDestroyed方法。
4.HttpSessionAttributeListener:监听HttpSession中的操作。当session增加一个属性时,激发attributeAdded方法;当session删除一个属性时,激发attributeRemoved方法;当session属性被重新设置时,激发attributeReplaced方法。
34. 监听器Listener:可以监听客户端的请求、服务端的操作等。常用的监听接口有:
1.ServletContextAttributeListener:监听对ServletContext属性的操作。
2.ServletContextListener:监听ServletContext。创建ServletContext是激发contextInitalized方法;销毁ServletContext是激发contextDestroyed方法。
3.HttpSessionListener:监听HttpSession的操作。当创建一个Session时,激发sessionCreated方法;当销毁一个session时,激发sessionDestroyed方法。
4.HttpSessionAttributeListener:监听HttpSession中的操作。当session增加一个属性时,激发attributeAdded方法;当session删除一个属性时,激发attributeRemoved方法;当session属性被重新设置时,激发attributeReplaced方法。
35. EL(Expr
语法:${expr}
举例如下:
1. 获取bean属性:${bean.attribute}
2. 获取Session、page等属性:${sessionScope.attribute}
默认对象:
1. pageContext:pageContext对象
2. pageScope:包含page范围的属性和值的map
3. requestScope:包含request范围的属性和值的map
4. sessionScope:包含session范围的属性和值的map
5. applicationScope:包含application范围的属性和值的map
6. param:相当于request.getParameter,map类型
7. paramValues:相当于request.getParameterValues,map类型
8. header:单个header相关属性值
9. headerValues:多个header相关属性值
10. cookie:cookie名和值的map
36. 自定义标签步骤:
1. 创建标签的处理类。扩展javax.servlet.jsp.tagext.TagSupport或者javax.servlet.jsp.tagextBodyTagSupport类。主要方法:
i. doStartTag:遇到自定义标签起始标志时调用
ii. doEndTag:遇到自定义标签的结束标志时调用
iii. setValue/getValue/removeValue设置/获取/删除value
2. 创建标签库描述文件tld
3. 在jsp文件中引入标签库
37. JavaS
1. Java是sun公司的,JavaS
2. Java代码在传递到客户端前必须经过编译,是编译型的语言。JavaS
3. Java采用强类型变量检查,JavaS
4. Java是与HTML无关的格式,必须通过HTML中引用外媒体那样进行装载。JavaS
5. Java是静态绑定的,java对象在编译时进行检查。Javas
目前常用的JavaS
38. JavaS
1. 格式:<script>document.write(“Hello”)</script>或者<script language=”JavaS
2. 变量:在函数中使用var定义的是局部变量,在函数中不加var定义的变量是全局变量。在函数外定义的变量是全局变量。变量类型只有五种:Undefined、Null、Boolean、Number以及Stirng。
3. 特殊的常用语句:
i. with:为一段程序建立默认的对象。with(<对象>){<语句>}
ii. for…in:重复执行指定对象的所有属性
4. 默认对象:
i. 日期对象:var d = new Date();
ii. 数组对象:var a = new Array(3);数组长度属性为length
iii. 字符串对象:var s = new String(“Hello”);
5. 重要的内置对象:
i. 窗口对象:windows
ii. 屏幕对象:screen
iii. 事件对象:event
iv. 历史对象:history
v. 位置对象:location
vi. 文件对象:document带便当前HTML对象,是又<body>标签组构成的。
vii. 表单对象:forms
6. 在JavaS
39. Ajax(Asynchronous JavaS
//在js的动作funciton中 var xmlHttpRequest=null; if(window.activeXOvject)//ie浏览器 { xmlHttpRequest = new ActiveXOvject(“Microsoft.XMLHTTP”); } else if(window.XMLHttpRequest)//非ie浏览器 { xmlHttpRequest = new XMLHttpRequest(); } if(null != xmlHttpRequest) { xmlHttpRequest.open(“GET”,”AjaxServlet”,true);//请求方法,请求的服务器资源,以异步方式发送请求 //以回调函数的方法处理信息 xmlHttpRequest.on //向服务器端发送数据 xmlHttpRequest.send(null);//get方法不需要参数,post方法需要将待发送的信息作为参数 } |
function ajaxCallBack { if(xmlHttpRequest.readState==4)//4表示请求发送成功并返回了相应 { if(xmlHttpRequest.status==200)//相应状态 { var responseText = xmlHttpRequest.responseText;//还有responseXML属性,用于获取返回的xml文件 document.getElementById(“div1”).innerHTML = responseText; } } } |
Java Web基础到此为止,jquery未看!