学习中。。。javaweb

01 Java基础加强

Ø  一、MyEclipse使用

Eclipse的工作空间必须起名为纯英文的。

JDK开发环境

JRE运行环境

java里边类的访问权限有两种:public和default,修饰符:abstract和final。

一、Java运行环境的配置

第一个问题说明:

编译器的版本过高而运行环境版本过低,会导致出现如下错误:

注意此时的JRE System Library为MyEclipse6.5

两种解决办法:

1)将编译器的版本降低

2)改变运行环境

先选中该工程—>Project—>properties—>java build Path—>libraries—>选中下边的JRE—>remove    —>add Library—>JRE System Library—>Next—>Alternate JRE—>制定JRE路径—>finish

完成以后,JRE System Library将变为jdk1.6.0_29

先选中该工程—>Project—>properties—>Java Compiler

此时即可看到java运行环境也是6.0,如下图所示:

最后在运行java程序则正常了。

总结1:

java build Path可修改编译器;Java compiler可修改运行时环境。

二、以断点的方式查看程序问题 Debug As

如果程序出现问题,最好以断点的方式去运行程序(Debug As)

双击左边部分,会出现一个小蓝点,这就是断点的标志。,如下图:

在要设置断点的地方双击行号左边部分,即可增加一个断点,然后 右键/Run—>Debug As—>Java Application—>在出现的对话框中选YES即可打开Debug视图(Perspective)

》》清除断点(Debug视图下右上角有一个Breakpoints窗口),点击下图中圆圈的叉便可全部删除断点(remove all breakpoints)。

快速查找方法:F5跳入(step into),如下图中红圈内的按钮,

F6图中右边一个按钮(表示跳过此步,执行下一步)

F7跳出此方法并返回开始处。

选中变量—>右键—>Watch就可以查看变量值

在Debug视图下,在增加断点—>Resume(下图中绿色三角按钮)—>即可直接定位到下一个断点处。

最终一定要关闭断点调试。

总结2:

F5:step into

F6:step over

F7:step return

Drop to frame:跳到当前方法的第一行

Resume:跳到下一个断点(如果没有下一个断点,则运行完此程序)

Watch:观察变量或表达式的值。

断点注意的问题:

1.调试完成后,要在breakpoints中清除所有断点

2.一定要结束运行断点的JVM

三、配置MyEclipse的快捷键

Window—>preferences—>输入key

²  alt+/ :内容提示

²  快速修复:ctrl+1

²  格式化代码:ctrl+shift+F

²  导入包:ctrl+shift+O

²  向前向后:Alt + 方向键

²  查看方法说明:F2

²  更为大写:Ctrl+shift+x

²  更为小写:Ctrl+shift+y

²  更换两行的位置:Alt+方向键

²  查看类的继承关系:ctrl+T

²  重置透视图:window—>Reset Perspective

²  列出所有的快捷键:Ctrl+shift+L

²  粘贴源码Attach Source

若源码以文件夹形式存放时,选External Folder;

若源码以文件形式存放,则选External File。

²  查看源码:

Ctrl+点击内容 或 ctrl+shift+T,会出现如下面板,然后在红框里边输入要查看的内容即可。

Ø  二、JDK5.0新特性

u  静态导入

import static 包名.类名.静态属性|静态方法|*

u  自动装箱、拆箱

eg.

Integer i=1;  //装箱(把基本类型自动转为对象装入i变量中)

int j=i;   //拆箱(把对象自动转为基本类型)

u  增强for循环

只能用在 数组、或实现Iterator、Iterable接口 的集合类上。

for(变量类型 变量:需迭代的数组或集合){

。。。}

因为Map没有实现Iterable接口,则Map不能直接使用for循环增强来遍历,方法:通过Iterator得到Map的每个key,在通过key,并通用map.get(key)得到key相应的值。

u  可变参数

Class类:

public  Constructor<T> getConstructor(Class<?>... parameterTypes)

Arrays类:

public static <T> List<T> asList(T... a)  T是对象类型

就是 传入数组的时候应传入对象数组

eg: int num[];不行 ,而 Integer num[];就可以,因为Integer修饰的为对象类型的数组,即每一个数组元素都是对象类型。

u  枚举和定义枚举

enum 一个枚举也可有构造函数、字段和方法

带抽象方法的枚举:在创建枚举的每个对象的时候,要实现枚举中的抽象方法。

枚举值相当于类的对象

枚举类的特性:

1.枚举类是一种特殊形式的java类;

2.其中声明的每一个枚举值代表枚举类的一个实例对象;

3.枚举的构造函数必须是私有的.

4.枚举类也可实现接口或继承抽象类。

5.JDK5.0扩展了switch语句,它除了可接收int,byte,short,char外,还可接收枚举类型。

6.若枚举类只有一个枚举值,则可当做单例模式使用。

//相当于用单例模式定义了一类

enum Only{  //class

    Only;    //Object

}

java.lang
类 Enum<E extends Enum<E>>

常用方法:

name() 名称 ,ordinal() 序号(从0开始),

valueOf(Class<T> enumType,String name),

values()此方法在JDK中没有,但每个枚举类都有该方法,它用于遍历所有枚举值。

u  反射技术

反射用在框架中。框架是基于配置文件的

一个类有多个组成成分,如:成员变量,方法,构造方法等。

反射就是加载类,并解剖出类的各个组成成分。

1.加载类:

//1. forName(className)-参数必须为完整类路径,但不包括后缀名.java。

Class c1 = Class.forName("javaSE.Person");

//2. getClass()

Class c2 = new Person().getClass();

//3. XXX.clsss

Class c3 = Person.class;

2.剖析类:

Class类中:

---得到public方法

getConstructor(Class<?>... parameterTypes)

getField(String name)

getMethod(String name,Class<?>... parameterTypes)

---得到所有方法,包括private方法

getDeclaredConstructor(Class<?>... parameterTypes)

getDeclaredField(String name)
getDeclaredMethod(String name, Class<?>... parameterTypes)
剖析出这些方法以后,有什么用?

构造函数--初始化,创建对象

字段--封装数据

方法--执行某个功能

反射类的构造函数

利用构造函数创建对象:

Constructor类中:newInstance(Object... initargs)

eg1. 对于public方法

eg2 :对于private方法

通过暴力反射可以使外界访问类中的私有方法。

反射类的方法

通过Class类中的方法getMethod(String name(方法名称),Class<?>... parameterTypes)得到该类中方法。

然后通过

java.lang.reflect

类 Method中的方法:Object invoke(Object obj, Object... args)

调用。

eg1:注意传入的参数

反射类的main方法

反射类的字段

字段--用来封装数据

u  javabean属性

v  内省(Introspector)操作javabean的属性

开发框架

内省操作JavaBean属性的两种方式:

1) 通过PropertyDescriptor类操作Bean的属性;

2) 通过Introspector类获得Bean对象的BeanInfo,然后通过BeanInfo类获取属性描述器(PropertyDescriptor),通过它可获取某个属性的get/set方法,然后通过反射机制调用。

用JavaBean封装用户数据,

字段提供了get/set方法时,称为属性。属性是根据有没有get,set方法来判断的。

java.beans

类Class Introspector中

getBeanInfo(Class<?> beanClass)//获取bean的属性,包括其从父类继承的属性

getBeanInfo(Class<?> beanClass,Class<?> stopClass)//仅仅获取bean自身的属性,去除它从父类继承的属性

接口Interface BeanInfo中

PropertyDescriptor[] getPropertyDescriptors()--属性描述器

类Class PropertyDescriptor中

方法getReadMethod(),getWriteMethod()得到属性的get/set方法

eg

v  使用beanUtils操作javabean

1) 阿帕奇开发了beanUtils框架操作bean的属性

接口,不可new对象,原因是:因为接口中有未实现的抽象方法

2) 日期转换两种方式:

方式1:注册日期转换器

方式2:

3) 用map集合填充bean的属性

u  泛型-Generic

v  泛型集合的存取

1) 对于list

2) 对于Map

v  注意点:

1) 泛型类型必须为引用类型,不能是基本类型;两边都定义泛型,则必须类型一致,若只一边定义,是允许的;

2) 泛型是给javac编译器使用的,用于限定集合的输入类型,编译器在源代码级别上,即挡住向集合中插入非法数据,当编译完带有泛型的java程序后,生成的class文件中将不再带有泛型信息,以此使程序的运行效率不受影响,此过程称为“擦除”。

3) 泛型的专业术语

以 ArrayList<E> 为例:

l  其中“<>”念做typeof;

l  E 称为类型参数变量

l  ArrayList<Integer> 的Integer称为实际类型参数

l  整个ArrayList<E>称为泛型类型

l  整个ArrayList<Integer>称为参数化类型(ParameterizedType)

v  自定义泛型方法和泛型类

1)自定义泛型方法

2)自定义泛型类

02,03 xml语言

u  XML概述

XML-Extensible Markup Language 可扩展标记语言,是w3c组织发布的。

XML技术用于解决什么问题?--数据关系的描述,用作软件的配置文件。

u  XML语法详解

一个XML文件分为如下部分:

v  文档声明

1. 最简单的 <?xml version="1.0"?>  ---不能包含全角字符

2. 用encoding属性说明文档的字符编码:

<?xml version="1.0" encoding="GB2312"?>

3. 用standalone属性说明文档是否独立:(IE不关注此属性)

<?xml version="1.0" encoding="GB2312" standalone="yes"?>

***工程名->右键->Properties->出现的窗口中Location即为工程路径

v  元素(标签)

XML元素就是XML标签     element对象=标签

格式良好的XML文档有且仅有一个根标签

XML标签中出现的所有空格和换行,都会被当做标签内容处理。

  命名规范

区分大小写;不能以数字或“_”开头;不能包含空格;名字中间不能包含“:”。

v  属性

一个标签可有多个属性,每个属性都有自己的名称和取值,属性值用单或双引号引起来。

<input name="test">     name属性名,"test"属性值。

v  注释 

 <!-- 注释内容 -->  XML声明之前不能写注释,注释不能嵌套。

v  CDATA区

<![CDATA[内容]]>对于CDATA区的内容,XML会将其原封不动的输出。

v  特殊字符

v  处理指令PI(Processing instruction)

指挥解析引擎如何去解析XML文档的内容

<?xml-stylesheet type=”text/css” href=”main.css”?>

u  XML约束

在XML技术中,可编写一个文档来约束一个XML文档的书写规范,称为XML约束。

两种约束技术:

1)XML DTD-Document Type Definition 文档类型定义

(1) DTD语法详解和分析:

ELEMENT 标签

I. 编写DTD约束的两种方式:

l  在XML文档内部:

l  在XML文档外部:book.dtd

在XML文件中引用DTD约束:

1.当引用的DTD文件在本地时:

2.当引用的文件是一个公共文件时,采用如下方式:

II. DTD约束语法细节

l  元素定义

DTD中使用ELEMENT声明一个XML元素,

格式:  <!ELEMENT 元素名称  元素类型>  --元素类型可以是类型或内容

l  属性定义

通过ATTLIST设置属性

格式:

<!ATTLIST 元素(标签)名

属性1 属性值类型 设置说明

属性2 属性值类型 设置说明

……

I.常用属性值类型:

CDATA(字符串) 、ENUMERATED 、ID(必须以字母或“_”开头)、 ENTITY

II.设置说明:

#REQUIRED :必须设置该属性

#IMPLIED :可选

#FIXED :说明该属性为固定值

l  实体定义ENTITY

用于为一段内容创建一个别名。

分为两种:

1.引用实体 :主要是在XML文档中引用

格式:

<!ENTITY 实体名 “实体内容”>

引用方式:&实体名;

eg.

dtd 文件中:

xml文件中,引用实体:

2.参数实体

DTD文件自身使用。

格式: <!ENTITY % 实体名 “实体内容”>

引用方式: %实体名;

l  PCDATA 可解析的字符数据(parsed character data)--字符串

l  CDATA 字符数据(character data)

2)XML Schema

1、XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,克服dtd局限性。

2XML SchemaDTD比较:

XML Schema符合XML语法结构;

DOM、SAX等XML API很容易解析出XML Schema文档中的内容;

XML Schema对名称空间支持的非常好;

XML Schema比XML DTD支持更多的数据类型,并支持用户自定义类型;

XML Schema定义约束的能力很强大,可对XML实例文档作出细致的语义限制;

XML Schema不能像DTD一样定义实体,比DTD更复杂,但Schema现在已是w3c标准。

3、.xsd扩展名

19,20未看

u  调整JVM

右键—>Run as->Open Run Dialog->Arguments 窗口中的VM Arguments中可配置JVM内存:在VM Arguments小窗口中输入 -Xmx 80m 代表设定JVM内存为80M。

1024b=1kb1024*1024=1Mb1024*1024*1024=1Gb

Exception in thread "main" java.lang.OutOfMemoryError: Java heap

space JVM内存溢出

以前:JVM 默认64M内存,若超过64M,则会抛出异常。

现在:The default value is chosen at runtime based on system configuration

u  DOM解析编程(CRUD)

CRUD : create,read,update,delete  增删改查

v  XML解析

XML解析方式有两种:dom 和sax

DOM:(Document Object Model)文档对象模型

SAX:(Simple API for XMl)

DOM和SAX解析方式的区别:

DOM解析的优点:对文档的CRUD较为方便,缺点:占用内存较大,故DOM解析文档不能太大。

SAX解析的优点:占用内存少,从上向下读,解析速度快,缺点是只适合做文档的读取,不适合做文档的CRUD。

  XML解析开发包:dom4j(最好),Jdom,Jaxp(sun)

1) Jaxp进行DOM解析:

Jaxp开发包:是J2SE的一部分,由javax.xml,org.w3c.dom,org.xml.sax包及子包组成。

在javax.xml.parsers包中,定义了几个工厂类,通过它们可以得到XML文档的DOM或SAX解析器,从而实现对XML文档的解析。

DOM方式解析XML文件:

l  遍历所有标签:

l  使用DOM方式对XML文档进行CRUD操作

***对于每个操作,都首先要得到DOM解析器,然后通过DOM解析器的parse(f)方法得到该文档的document对象。

l  C 增加

1.向XML文件中增加节点

2.向XML文件的指定位置增加节点

3.向XML文件的某节点增加属性

l  R 读取

l  U 更新

l  D 删除

1.删除节点

2.删除节点的属性

!!!***完成CRUD任何一个操作之后,都必须要进行的操作

把更新后的内存写回到XML文件中去,以完成真正的修改:

2) dom4j解析XML文档

1) 简介

dom4j是一个简单、灵活的开放源代码库。dom4j是一个非常优秀的Java XML API。

注意:一般情况下只需导入一个jar包就行了,但是有时解析XML文档时会抛出找不到类异常,此时应该将lib下的相应jar包导入。

查阅dom4j的文档:在docs文件夹中的index-打开->页面的左边栏 quick start -->然后右边的界面就是Dom4j的使用方法。

2) 乱码问题:

XML文档是什么编码就将格式化输出器设置成什么编码。

3) (增删改查)dom4j对XML文档操作

1、读取XML文档

2、增删改之前一般都要先得到document对象

3、增删改操作后必须进行的一步是更新内存

4、增加

在指定位置添加 list

5、删除

删除指定位置的节点

6、更改

修改第二本书的作者为aa

4) XPath提供XML文档数据

查看XPath Tutorial文档

XPath表达式

示例:

选择含有属性id且其值为'b1'的BBB元素

写法: //BBB[@id='b1']  ---!!!注意:值需加单引号!!!多个属性值时使用and连接。

示例:document.selectSingleNode("//user[@username='" + username

                + "' and @password='" + password + "']");

v  DOM编程做一个综合案例--jaxp进行dom解析

考生成绩管理系统

编程实现如下功能:

1. 用户操作:

添加用户:(a),删除用户 :(b),查询成绩(c)

请输入操作类型:

2.实现学生信息的添加:

添加学生:(a),删除学生 :(b),查询成绩(c)

请输入操作类型:a

请输入学生姓名:学生1

请输入学生准考证号:122133

请输入学生身份证号:12447577767767

请输入学生所在地:邯郸

请输入学生成绩:90

------添加数据成功------

3.实现学生信息查询

添加学生:(a)  ,删除学生 :(b)   ,查询成绩(c)

请输入操作类型:c

请输入查询学生的准考证号:9898989

您查询的学生信息为:

姓名:啊,身份证号:878787878,准考证号:898989,地区:深入,成绩:90。

4.实现学生的删除功能

添加用户:(a),删除用户 :(b),查询成绩(c)

请输入操作类型:b

请输入要删除的学生姓名:张三

------成功删除-------

5.系统功能分析:

应该从底层向上层开发。

异常:

编译时异常Exception

运行时异常RuntimeException

写好所有的模块之后,首先应做测试,,,然后在使用。。。

面向对象想问题,遇到什么问题,就找相应的对象。

v  SAX(Simple API for XML)解析

缺点:使用DOM解析XML文档时,需要读取整个XML文档,在内存中构架代表整个DOM树的Document对象,从而再对XML文档进行操作,这种情况,若XML文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。

SAX解析允许在读取文档的时候,即可对文档进行处理,而不必等到整个文档装载完才对其操作。

SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器事件处理器

解析器可使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。

解析器采用SAX方式解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会调用事件处理器的一个方法,解析器在调用事件处理器的方法时,它会把当前解析到的XML文件内容作为方法的参数传递给事件处理器。

解析步骤:

自定义的Handler需实现ContentHandler接口或者继承此接口的已知子类均可。

ContentHandler中的几个重要方法:

1) characters(char[] ch,int start,int length)  接收字符数据的通知。

2) startElement(String uri, String localName,String qName,Attributes atts)           接收元素开始的通知。--开始标签

3) endElement(String uri,String localName,String qName)    接收元素结束的通知。--结束标签

方法:断点跟踪  Debug As ...

04 web开发入门

一、基础知识

WEB:网页,用于表示Internet主机上供外界访问的资源。

分为两种:

静态web资源 和 动态web资源。

在java中,动态web资源开发技术统称为Javaweb,java技术开发动态的web资源,即动态web页面。

二、WEB服务器

WebLogic是BEA公司的产品,支持J2EE规范(13门技术),交费。

WebSphere是IBM公司的,支持J2EE规范,交费。

apache开发的Tomcat服务器,支持全部jsp以及Servlet规范,免费。

不能讲apache-tomcat-6.0.30放到中文或者带空格的目录下。

一个机器里可以装多个服务器,不同的服务器产品会监听在不同的端口上。

互联网上常用协议的工作端口:  web服务器(基于http的):80,邮件发送(smtp):25,pop3:110,ftp:23,https:433 。

v  1. 常见的启动问题

Tomcat无法启动的可能原因:

(1)没有配置JAVA_HOME环境变量;

(2)8080端口被占用

(3)Catalina_home环境变量的设置问题

点击startup.bat的时候启动的服务器是Catalina_home环境变量指定的那个服务器。

apache-tomcat-6.0.36\conf\server.xml中的端口设置:

地址栏解析:

v  2. Tomcat目录结构

当Tomcat启动出现问题的时候,可以通过查看logs下的日志文件。

三、 WEB应用程序

v  3.1 web应用

WEB应用程序:供浏览器访问的程序,简称WEB应用

一个web应用由多个静态web资源和动态web资源组成。

组成web应用的文件通常会使用一个目录组织,这个目录称为web应用所在目录

虚拟目录的映射:Web应用开发好后,若想供外界访问,需要web应用所在目录交给web服务器管理

可在Tomcat服务器的server.xml配置文件中配置:

<Context path="/itcast" docBase="D:\news "/>

path:虚拟目录,实际不存在的目录。是web应用的对外访问路径。

修改了server.xml配置文件以后,必须重启Tomcat服务器!

在地址栏输入http://localhost:8080/itcast/a.html即可访问到news文件夹中的a.html文件。

本机 :localhost

8080:代表访问Tomcat服务器

itcast:虚拟目录,对应news这个web应用。

实际上这种配置是不好的,因为需重启服务器。

Context (上下文)代表web应用

注意:

从tomcat主页进去在Context处找到的定义配置文件的方法(5种)

五个地方可配置Context来管理web应用:

Context elements may be explicitly defined:

·         In the $CATALINA_BASE/conf/context.xml file: the Context element information will be loaded by all webapps. ---可在conf/context.xml中配置Context,此处配置的信息会被所有的web应用所共享。

·         In the $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host.

·         In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The name of the file (less the .xml extension) will be used as the context path. Multi-level context paths may be defined using #(多级访问路径定义时加#号即可), e.g. foo#bar.xml for a context path of /foo/bar. The default web application may be defined by using a file called ROOT.xml(缺省的web应用,访问时直接指定页面即可).

在conf\Catalina\localhost目录下新建一个以.xml为扩展名的文件,写入Context的配置即可,而文件名会被用作path虚拟路径。

若想把一个web应用弄成缺省的,则可以在apache-tomcat-6.0.36\conf\

Catalina\localhost目录下新建一个root.xml文件.

在server.xml中如何将自定义的web应用配置成缺省的?

<Context path="" docBase="D:\news "/> 将path设为空即可。

·         Only if a context file does not exist for the application in the $CATALINA_BASE/conf/[enginename]/[hostname]/, in an individual file at /META-INF/context.xml inside the application files. If the web application is packaged as a WAR then /META-INF/context.xml will be copied to $CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to match the application's context path. Once this file exists, it will not be replaced if a new WAR with a newer /META-INF/context.xml is placed in the host's appBase.

·         Inside a Host element in the main conf/server.xml.  ---将Context 放入server.xml中。

With the exception of server.xml, files that define Context elements may only define a single Context element.

v  3.2 虚拟目录的映射

让Tomcat自动映射:Tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录==Tomcat服务器webapps目录中的web应用,外界可以直接访问

*** WEB应用的组成结构

开发web应用时,不同的文件类型有严格的存放规则,否则会出错。

web.xml文件,必须放在WEB-INF目录中

通过web.xml文件把某个web资源配成网站首页。

v  3.3 配置虚拟主机(搭建网站)

l  在一个Tomcat服务器中可以放置多个网站,所谓配置虚拟主机,就是在Tomcat服务器中配置一个网站。

l  在web服务器中配置一个网站,需使用Host元素配置,

<Host name=”site1” appBase=”C:\app”></Host>

在Tomcat的server.xml文件中默认配置了的name=”localhost”。

l  配置的虚拟主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册。

l  配置多个网站

l  缺省虚拟主机

修改server.xml文件以后,必须重启Tomcat

一个网站可有多个web应用。

一个网站无法访问原因有两个:DNS服务器出错(IE无法把主机名翻译成IP)或网站出错。

一个网站必须在DNS上注册它的主机名和IP的对应关系才能被外界访问。

在DOS下输入ping www.sina.com可以查看连接性,同时也可以显示sina的IP地址。

在server.xml文件中:

<Host name=”www.sina.com” appBase=”C:\sina”>

<Context path=”/mail” docBase=”C:\sina\mail” />

</Host>

虽然配置了虚拟主机,但是无法被外界访问到。

当IE收到地址请求的时候,首先会去windows操作系统的Hosts文件查找是否有对应的IP,若有则直接访问该指定IP,若没有,则去DNS服务器查找对应IP。

如何才能在本机访问到自己配置的域名呢?

在本机的C:\Windows\System32\drivers\etc下的Hosts文件中可以写入域名和IP的对应,eg:192.168.2.10  www.sina.com 

域名

有的公司搞恶意竞争的时候会去修改用户的Hosts文件。

*** 把web应用配成缺省的:<Context path=”” docBase=”C:\mail”>

*** 把index.html页面配置成缺省的:web资源配置都要在web.xml

在WEB-INF文件夹中的web.xml文件中写入:

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

即可将index.html配置成缺省的web应用的缺省主页。

v  3.4 web资源访问流程

l  画图演示web资源的访问过程

ROSE 画图-访问交互图

l  打包web应用-war

命令符下:jar -cvf news.war news (注意war包和原引用名的位置)

--将news应用打包成war包。

将war包放入Tomcat的webapps目录下,服务器会自动将war解析成web应用。

l  配context元素的reloadable元素,让Tomcat自动加载更新后的web应用

Context代表web应用。

<Context path=”” docBase=”C:\mail” reloadable=”true” />

小的web应用可配置此项,大的web应用最好别配置,否则容易内存溢出等问题。

context.xml中为全局配置。

l  Tomcat的体系结构配置https连接器  公钥  私钥

·keytool -genkey -alias tomcat -keyalg RSA为网站创建数字证书

Tomcat体系结构:

一个应用可占多个端口

连接器

engine引擎

***** 软件密码学基础和配置Tomcat服务器

对称加密:不好

非对称加密:公钥加密的数据私钥解,私钥加密的数据公钥解。

CA的数字证书,数字签名

SSL

配置server.xml文件中的Connector查阅Tomcat的文档

https://localhost:8555  访问加密的网站

若浏览器被劫持了,U盾-实际上是银行的证书

Tomcat服务器的管理平台

Tomcat Manager--配置用户名和密码

在conf目录下的tomcat-users.xml中配置:

打开Tomcat的主页,点击左边栏中的Tomcat Manager,输入用户名tomcat,密码tomcat,即可进入Tomcat Web Application Manager管理界面。

WAR file to deploy部署war文件

四、Http协议

v  (1) 使用telnet程序连上web服务器,

并使用Http协议获取某个页面(aa这个web应用下的1.html文件)

http协议用于定义客户端与web服务器通讯的格式。

在win7下不能使用telnet,那么如何重新开启telnet服务呢?

1、如果你直接到控制面板的管理工具里德服务项里去找telnet的话,那是徒劳无功的,因为默认根本就没有这一服务。可通过如下方式。“控制面板”-->“程序”-->“打开或关闭windows功能”,在里面可以看到许多服务项,选择“telnet服务器”和“telnet客户端”确定即可。这样你再回“服务项”或者services.msc里面就可以看到telnet啦

2、通过“控制面板”-->“管理工具”-->“服务”或者services.msc进入服务项列表之后,找到telnet,可以看到它是被禁用的,此时你需要在“禁用”处右键选择“属性”并在里面将“禁用”改为“手动”,然后再启动状态栏右键选择“启动”。这样你机器的telnet服务就启动啦。

3、windows7 无法启动telnet 服务 错误1068 如何解决?

右键 计算机 —> 管理 —>服务,找到服务telnet, 右键—>属性—>依赖关系 就可以看到你所要的和其他服务的依赖关系了!打开相关依赖的服务即可解决服务不能启动的情况。

telnet是windows自带的网络客户端软件,可用它连接网络上的任何一台服务器。

v  (2)为IE安装HttpWatch,查看浏览器通过HTTP协议获取某个页面。

v  (3)Http协议

1.简介

Http是hypertext transfer protocol(超文本传输协议),它是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器直接交换数据的过程。

2.Http协议的版本

·http/1.0 只能获取一个web资源

·http/1.1 可获取多个web资源

eg.

一个web页面中,使用img标签引用了2副图片,当客户端访问服务器的这个web页面时,客户端总共会访问2次服务器,即向服务器发送了2次Http请求。

如:

<img src=”1.jpg”>

<img src=”2.jpg”>

此段代码IE会向服务器发送2次请求,所以一般会将图片合并在一句里边,减少访问次数。

3.http请求细节

概念: 客户端连接上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求。

HTTP请求的格式如下所示:

<request-line>
<headers>
<blank line>
[<request-body>]

在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。

一个完整的http请求包括:

一个请求行、若干请求头、实体内容。

请求行中的GET称之为请求方式,请求方式有:

POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT

常用的Get,Post

默认情况下是GET请求。

都用于向服务器请求某个web资源,区别主要在数据传递上:

若请求方式为GET方式,则方式在请求URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔;

GET方式:不安全,在URL地址后附带的参数是有限制的,其数据容量通常不能超过1k。

<a href=”/2.html?username=aa”>dian</a>带数据的超链接

POST方式:安全,可在请求实体内容中向服务器发送数据,并且传送的数据量无限制。

4. http请求头(消息头)和各字段详解

5.飞

相关推荐