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学习历程-(基于圣思园视频教程)相关推荐

  1. Web学习历程记录(七)——Tomcat

    Web学习历程记录--Tomcat Web 静态Web资源 指Web页面中供人们浏览的数据始终是不变的 动态Web资源 指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容 ...

  2. WEB学习路线2020完整版+附视频教程

    WEB学习路线2020完整版+附视频教程,适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是日益增多了,但是 ...

  3. Java for Web学习笔记(六七):Service和Repository(2)抽象分层例子

    小例子说明 Spring提供了很好的架构和很方便的工具,在作为工具使用的同时,也应注意正确使用spring的架构,虽然不是强制的,但是这是spring的精髓.用spring,也要用spring的框架. ...

  4. java小白的学习历程

    一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库( ...

  5. Java for Web学习笔记(三五):自定义tag(3)TLDS和Tag Handler

    JSTL的TLD 这是JSTL采用的方式.TLD(Tag Library Descriptor)描述tag和function,以及具体执行的java代码tag handler.Tag Handler是 ...

  6. Java for Web学习笔记(一零八):再谈Entity映射(1)数据转换

    timestamp或datetime的匹配 存放毫秒 在数据库中缺省的精度为秒,如果需要存放毫秒甚至更好,可以如下: CREATE TABLE Ticket (TicketId BIGINT UNSI ...

  7. Java for Web学习笔记(一一八):【篇外】Soap client

    使用Eclipse自动生成Soap Client的代码 在项目按右键,选择New -> Other ->Web Services -> Web Service Client,进入向导 ...

  8. ibatis java配置文件,ibatis学习-sqlMap.xml配置文件 | 学步园

    ibatis映射文件的书写: /p> PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis. ...

  9. Java springmvc web项目,基于maven的hello world入门级项目使用IntelliJ IDEA 2017版本

    IntelliJ IDEA使用教程 (总目录篇) 使用这个IntelliJ IDEA创建一个简单的Java web maven项目,我在前面的文章里面已经示范过了. 地址:IntelliJ IDEA ...

最新文章

  1. UVA11825 黑客的攻击 Hackers' Crackdown 状压DP,二进制,子集枚举
  2. 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
  3. macOS下安装ipython
  4. pythonic code_Pythonic Code (Part III)
  5. ICPC程序设计题解书籍系列之五:吴永辉:《数据结构编程实验》(第2版)
  6. 【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)
  7. STM8S单片机入门(前言)
  8. LabVIEW进制转换总结
  9. 服务器跳过系统自检,win7 64位旗舰版跳过开机自检功能直接进入系统的方法
  10. hp450 g8摄像头打开后黑屏
  11. 3d模型计算机教室,大学教室3d模型
  12. wireshark详细图文入门教程
  13. Qt配置OpenCV环境变量
  14. <汇编>七种寻址方式
  15. 对计算机排版的分析,计算机排版技术水平对报纸质量的影响分析
  16. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅amp;消费
  17. 吉他传入几弦几品,自动计算出音阶
  18. 第十届Flash开发者大会-深圳
  19. 学习从来都是孰能生巧的过程
  20. 滴滴欲垄断 还需跨过这三座大山

热门文章

  1. PL/SQL 记录与集合
  2. python连数据库如何不写明文密码_在Python中开发时保护MySQL密码?
  3. 如何用 Dall-E2 制作这些超可爱的柔软毛绒玩具
  4. UtoVR Player免费360VR视频播放器
  5. FTP登录特别慢的解决方式
  6. LVDS转MIPI 视频旋转芯片 POL8901 图像处理芯片
  7. 计算机专业岗位竞聘词,2017年计算机专业组长竞聘演讲稿(3000字)
  8. YL工作记录 (不断更新) -- 2020.04
  9. 【过滤器和拦截器有什么区别】
  10. JAVA服务器下载文件内容为空