圣思园java.doc_Java Web学习历程-(基于圣思园视频教程)
JavaWeb
[北京圣思园Java Web培训视频]_001.HTML常见标签深入详解
HTML是一种弱标签,可以不用成对出现。浏览器引擎对此标签智能,一般都能正确解析。HTML标签都是死的,只需要知其意,用的时候再去查即可。
html属性值可以用双引号、单引号,或者不用引号,直接写属性值。
2011/8/2 23:53:09
标签默认type为text。
样式表应用规则(优先级从低到高):浏览器默认、外部样式表、内嵌样式表、行内样式表。
2011/8/3
HTTP是一种基于请求、响应的无状态协议。HTTP 1.0/1.1,1.1中引入了持续连接的机制。
URL格式:protocol://hostname(IP Address):[port][abs_path],一般情况下我们只需输入域名,浏览器会我们默认添加上http://,80端口。当没有abs_path时,必须以“/”形式给出,通常下这个工作也是浏览器为我们添加了。
使用Telnet工具可以看到浏览器请求/响应的慢动作。
TomCat是用纯Java语言编写的。TomCat使用前一定要配置环境变量,Java_Home。//CATALINA_HOME
2011/8/7
终于接触到JSP、servlet了。接触得越多,越有点消化不了。
2011/8/7
MyEclipse中集成了一个Tomcat服务器,但是我们一般不同它,将它disable。然后手动配置一个外部的Tomcat,将外部Tomcat“形式上”集成到MyEclipse中,以后对Tomcat启动、关闭都在MyEclipse中操作即可。
Tomcat中conf目录中server.xml文件是服务器的配置文件,我们在部署项目(Web Application)时可以对它进行配置。Context即上下文,path属性为逻辑地址(上下文路径),docBase属性为物理地址,将docBase映射为path路径。
JSP一般是不需要配置web.xml文件的,servlet是必须配置web.xml文件。对于JSP文件修改后不需要重启服务器,对于servlet修改后必须要重启服务器,可以通过reloable为ture设置服务器检查到文件修改后自动重载。
我们可以将servlet看作是嵌套了HTML代码Java类,将JSP看作是嵌套了Java代码的HTML页面。
2011/8/8
get和post方法的本质区别是请求格式不同,查询字符串(query string)在get方法中是和url中地址一起发送给服务器的,而在post方法中查询字符串是作为请求体一起发送给服务器的。
2011/8/14
JSP
HTML页面中嵌入Java代码,加入新标签(),在该标签中可以写任何Java代码,这些Java代码都是在服务器端执行,可以将结果响应给客户端。
JSP和Servlet在本质上是一样的。JSP文件在被客户端请求时,服务器调用Jsp Parser将Jsp编译成Servlet源文件(一个Java类),然后服务器调用JDK将对应Servlet编译成Servlet字节码,JVM执行字节码。从该过程可以看出JSP文件会被解析成Servlet,所以JSP和Servlet在本质上相同。
JSP源代码中包含两部分:JSP元素和Template data。模版数据即原始的HTML标签,jsp引擎不会处理模版元素,直接将模版元素响应给客户端。JSP元素就是标签()中的Java代码,JSP引擎会对其进行处理。
JSP中注释:普通HTML注释(),会发送到客户端。JSP注释(隐藏注释)(),不会发送到客户端。
编译器指令(directive):page指令,include指令。。包含指令中file属性,file=“相对路径/绝对路径"。
JSP内置对象9个:request、response、pageContext、session、application、out、config、page、exception。
out.println换行指发送给客户端的HTML源代码换行,out.print指HTML源代码不换行。
标签指浏览器解析html源代码呈现出来的内容换行,这是两个不同概念。
2011/9/18
Web应用部署方法:1、直接配置tomcat安装目录下的conf目录中的server.xml文件,在倒数第四行上加上。path属性即上下文路径,是映射到docBase物理路径的逻辑路径。注意:path不是Web项目名,可以任意命名。path必须以“/”开头。docBase中的物理路径可以直接为反斜线“\”。
2、通过MyEclipse中“Deploy MyEclipse J2EE Project to Server...”方式。
3、直接将Web应用文件夹复制到tomcat安装目录下的webapps目录下,Web应用文件夹叫什么名字,在浏览器中URL的端口后就输入什么名字,也就是上下文路径。
2011/9/20
request、session、application这3个对象的生命周期(有效范围)是逐个增加的,request只在一个请求范围内,application是在整个服务器运行过程中。
表单验证:客户端验证、服务器端验证,可以直接输入URL进入服务器端验证,从而绕过客服端验证,所以服务器端验证必须要有。
JS脚本中获取表单中标签方法:1、通过标签id属性(id属性只能在前端(JS)中使用),username = document.getElementById(id),“username.value == "",username.value.length == 0”,这两种方法可以验证用户名为空。如果表单没有写action,则默认提交给自己。表单默认提交方法为get。
2、通过标签name属性(既可以在前端使用,也可以在服务器端使用),username = document.getElementByName(name)[0],username为一个数组,取出第一个元素。
类型为checkbox的标签元素有checked属性,为一个布尔值。
getElementByTagName("input"),通过标签名获得标签对象。有了标签对象就可以反过来获得标签对象的所有属性:name、value、id等。
3、通过表单名字(name),找到表单,在通过表单中的标签名字(name)找到特定标签,即可定位到具体标签。然后再“.value、.value.length”等具体验证。
JavaBean
JavaBean本质上是一个Java类。JSP侧重生成动态网页,JavaBean侧重事务处理。
JSP--->>JSP+JavaBean--->>JSP+Servlet+JavaBean,后者即为MVC(Model,View,Controller)设计模式。
View即为一个结果呈现,也就是JSP页面,Controller即一个一个Servlet,Servlet去调用不同的Model(Java类)。模型跟数据库打交道。Servlet不跟数据库打交道。
JavaBean是一个public类,有一个不带参数的构造方法,通过setXXX设置属性、通过getXXX获得属性。为什么要满足这三个条件?因为可以通过反射机制调用set、get方法。
JavaBean规则:
1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
getXxx(),用来获取属性xxx。
setXxx(),用来修改属性xxx。
2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。
3. 类中方法的访问属性都必须是public的。
4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。
---摘自百度百科
JSP中访问JavaBean语法:导入JavaBean类,声明JavaBean对象,访问JavaBean属性。
2011/9/21
id为beanInstanceName,即JavaBean对象的一个引用。class为JavaBean类的完全限定名。
,property即bean对象的具体成员变量,name即为id值,也就是一个具体的bean对象,value即将要设置的值。。
JavaBean的范围:scope(生命周期),page(默认值),request,session,application。page即当前页面,存活范围最小,当前页面结束即结束JavaBean对象。
bean为request作用域时,同一个request中的不同jsp页面可以共享bean对象,request消失bean消失。1、在别的页面中通过request.getAttribute("id/name")获得上个页面的bean对象。2、直接,。
JavaBean中对于boolean类型变量可以定义get方法或者is方法,不必一定要get方法,也只有boolean类型变量为特例。
2011/9/23
表单在没有写action属性时,提交给当前页面,在没有写method属性时,默认以get方法提交,get方法提交表单时,表单中的value值都是随同URL一起提交。提交的URL格式为:url+"?name=value&name=value&..."。
处理乱码:统一所有编码,包括请求和响应。客服端到服务器的请求字符编码默认为ISO-8859-1,服务器对JSP呈现字符编码为utf-8。
修改tomcat服务器web.xml默认编码。
Servlet
Servlet(接口)---实现类:GenericServlet(抽象类),GenericServlet直接子类:HttpServlet(抽象类)。
HttpServlet类中:service方法和doXXX方法的关系:“There's almost no reason to override the service method.”,从客服端来的请求首先是到达service方法,然后通过service方法发到相应的doXXX方法。该service方法是从GenericServlet类中继承下来的方法,tomcat源码中的实现是:首先将ServletRequest(Response)强转为HttpServletRequest(Response),然后调用自身的另一个protected型service方法。
自身的service方法在实现时:首先获得请求方法名字,然后根据方法名字调用对应的doXXX方法,比如说请求方法为GET,就去调用doGet方法,注意:请求方法名字为大写GET,这是HTTP协议所要求。
在HttpServlet中提供的doGet、doPost方法都是直接返回错误信息,所以我们需要在自己定义的Servlet类中重写这些方法。
request中的setAttribute方法在底层实现就是用的一个HashMap,即键值对,setAttribute(String name,Object obj),当name重复时覆盖原先的obj。在getAttribute时,如果name不存在就返回一个null。
ServletRequest接口的ServletInputStream常用于文件上传,ServletResponse接口的ServletOutputStream常用于文件下载。
Servlet的生命周期:初始化阶段(init方法),响应客户请求(service方法),中止阶段(destroy方法)。
在servlet的整个生命周期内,init方法只会被调用一次。
servlet类被tomcat装载后,首先会创建一个实例,而且只会创建一个实例,因为它是单实例的,多线程的。所以servlet是单例模式的一个具体使用。
web.xml中的中添加子元素,元素内容设置为数字,按照数字的先后顺序在启动tomcat服务器时自动加载这些servlet。
2011/9/240:59:09
关于tomcat的Web Application部署另外方法:通过tomcat自带的web应用(manager)来实现deploy,该应用还可以start、stop、reload、undeploy每个应用。
tomcat自带的web应用有5个:“/”、“/docs”、“/examples”、“/host-manager”、“/manager”。在tomcat的web.xml文件中手动部署应用时,Context元素的path属性的值就是在webapps目录中的文件夹名字。有一个web应用是例外:ROOT文件夹对应的path值为“/”。
“undeploy” web应用后,tomcat会将webapps中的应用文件夹和war文件同时删除,这是不可恢复性的操作。
当servlet容器启动一个web应用时,它会为web应用创建唯一一个ServletContext对象。
Servlet/JSP多线程同步问题
Servlet单实例多线程,对于成员变量,所有线程共享成员变量,就可能在多用户(多线程)情况下出现成员变量紊乱问题。
解决同步问题方案:1、取消成员变量,使用局部变量,2、实现SingleThreadModel接口(不推荐),3、使用同步代码块(synchronized{})(不推荐)。
“ A cookie, a small amount of information sent by a servlet to a Web browser, saved by the browser, and later sent back to the server. A cookie's value can uniquely identify a client, so cookies are commonly used for session management. ”
服务器通过请求、响应来读取cookie、发送cookie。
Session
当客服端第一次向服务器发出请求时,server会创建一个session,并将session以cookie的形式响应给client,当client再次向server发出请求时,也会同样将存放有session信息的cookie一同发送个server,server在接收到request时首先会检查request中的cookie并匹配服务器中存在的session以判断发出当前request的client是否已经存在。
默认情况下:tomcat会在接受到一个请求时,检查到request中没有session信息时会自动创建一个session,然后创建一个Cookie对象,name为这种格式:“JSESSIONID”,value为一个128位二进制数(16进制表现形式)的随机字符串。
在谷歌浏览器中测试:禁用cookie后,很多网站根本无法登陆,现在的网站的登陆功能基本上都是基于cookie的session。
默认情况下,JSP网页都是支持session的。也可以通过显示声明页面支持session:。
Filter(过滤器)
过滤器对请求进行预处理,然后交接给Servlet,Servlet对请求处理完后将响应交接给过滤器,过滤器再对响应进行收尾处理,然后再发送给客户端。
过滤器中一定要调用doFilter方法,以便将请求传到过滤器链中的后续过滤器,不然的话请求就会在此处停止,客服端根本就接受不到响应,因此什么内容也没有。
filter的使用需要在web.xml文件中手动配置,IDE并不会自动给我们自动生成配置。filter是一个非常特殊的servlet,它在servlet容器启动时由servlet容器自动加载它,并生成它的一个对象。
任何一个过滤器一旦出现错误,都会导致web应用启动失败,因为过滤器是随web应用启动时加载的。
串联过滤器工作流程,按照web.xml文件中元素的先后顺序形成filter链。
Listener(监听器)
ServletContextListener、ServletContextAttributeListener。“the implementation class must be configured in the deployment descriptor for the web application.”,。
监听器是利用观察者模式来实现的。
2011/9/25 1:06:20
HttpSessionListener、HttpSessionAttributeListener。
EL(Expression Language)表达式语言
语法:${exp},EL默认对象(内置对象):pageContext、pageScope、requestScope、sessionScope、applicationScope、param。
EL只能在JSP中使用,这些内置对象(隐含对象)就像request、session、application对象一样,只是简化了先前的写法。
jsp自定义标签
自定义标签的处理类必须继承javax.servlet.jsp.tagext.TagSupport类、或者javax.servlet.jsp.tagext.BodyTagSupport类,前者是后者的直接父类。
步骤:1、创建标签处理类,2、创建标签库描述文件,3、在JSP文件中引入标签库,然后插入标签。
标签库描述文件后缀名为:“.tld”,tag library descriptor,它是一个xml格式的文件。该文件必须放在WEB-INF文件夹中。
2011/9/25 15:22:31
JavaScript
JS程序库:jQuery、dojo、ExtJS。
var定义变量关键字,语句结束对于分号写与否不强求。变量:全局变量、局部变量。
在一个函数内不用var声明一个变量的话,它就是一个全局变量,加上var后就是一个局部变量。定义在函数外的变量一定是全局变量。
with语句,with(对象){语句组}。for(变量 in 对象){语句组}。
JS中内置对象(默认对象、隐含对象):Date、Array。
2011/9/25 22:40:42
圣思园java.doc_Java Web学习历程-(基于圣思园视频教程)相关推荐
- Web学习历程记录(七)——Tomcat
Web学习历程记录--Tomcat Web 静态Web资源 指Web页面中供人们浏览的数据始终是不变的 动态Web资源 指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容 ...
- WEB学习路线2020完整版+附视频教程
WEB学习路线2020完整版+附视频教程,适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是日益增多了,但是 ...
- Java for Web学习笔记(六七):Service和Repository(2)抽象分层例子
小例子说明 Spring提供了很好的架构和很方便的工具,在作为工具使用的同时,也应注意正确使用spring的架构,虽然不是强制的,但是这是spring的精髓.用spring,也要用spring的框架. ...
- java小白的学习历程
一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库( ...
- Java for Web学习笔记(三五):自定义tag(3)TLDS和Tag Handler
JSTL的TLD 这是JSTL采用的方式.TLD(Tag Library Descriptor)描述tag和function,以及具体执行的java代码tag handler.Tag Handler是 ...
- Java for Web学习笔记(一零八):再谈Entity映射(1)数据转换
timestamp或datetime的匹配 存放毫秒 在数据库中缺省的精度为秒,如果需要存放毫秒甚至更好,可以如下: CREATE TABLE Ticket (TicketId BIGINT UNSI ...
- Java for Web学习笔记(一一八):【篇外】Soap client
使用Eclipse自动生成Soap Client的代码 在项目按右键,选择New -> Other ->Web Services -> Web Service Client,进入向导 ...
- ibatis java配置文件,ibatis学习-sqlMap.xml配置文件 | 学步园
ibatis映射文件的书写: /p> PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis. ...
- Java springmvc web项目,基于maven的hello world入门级项目使用IntelliJ IDEA 2017版本
IntelliJ IDEA使用教程 (总目录篇) 使用这个IntelliJ IDEA创建一个简单的Java web maven项目,我在前面的文章里面已经示范过了. 地址:IntelliJ IDEA ...
最新文章
- UVA11825 黑客的攻击 Hackers' Crackdown 状压DP,二进制,子集枚举
- 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
- macOS下安装ipython
- pythonic code_Pythonic Code (Part III)
- ICPC程序设计题解书籍系列之五:吴永辉:《数据结构编程实验》(第2版)
- 【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)
- STM8S单片机入门(前言)
- LabVIEW进制转换总结
- 服务器跳过系统自检,win7 64位旗舰版跳过开机自检功能直接进入系统的方法
- hp450 g8摄像头打开后黑屏
- 3d模型计算机教室,大学教室3d模型
- wireshark详细图文入门教程
- Qt配置OpenCV环境变量
- <汇编>七种寻址方式
- 对计算机排版的分析,计算机排版技术水平对报纸质量的影响分析
- 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅amp;消费
- 吉他传入几弦几品,自动计算出音阶
- 第十届Flash开发者大会-深圳
- 学习从来都是孰能生巧的过程
- 滴滴欲垄断 还需跨过这三座大山