Java Web 重点知识归纳总结

一、XML的作用
1.     1、XML是可扩展的标记语言。允许用户自定标签。
2.     2、它被设计的宗旨是“描述数据”,而非显示数据(相对于html来讲)
3.     3、XML的标准是由W3C(万维网联盟)指定的,目前使用的版本为1.0
4.     4、应用:作为配置文件
5.     方式一:*.properties。key=value的形式。无法描述层次关系
6.     方式二:xml作为配置文件。灵活,且能描述层次关系
7.    
8.    
9.     二、XML的基本语法(1~6)
10.     1、XML文档声明
11.     a、表明了这是一个XML文档;必须出现在第一行;
12.     b、属性:
13.     *version:指定使用的版本号。1.0
14.     *encoding:指定xml中出现的字符使用的编码。
15.     注意:保存到磁盘上的文件所使用的编码要与XMl中声明的编码一致。
16.     默认编码为:UTF-8
17.     standalone:是否是单独存在(是否依赖其他的文件)。yes|no
18.     2、XML的元素
19.     a、必须含有开始和结束标签
20.     b、合理嵌套
21.     c、必须且只有一个根元素
22.     注意:XML中不会忽略空格和换行
23.     d、严格区分大小写
24.     3、XML标签的属性
25.     a、属性的取值必须使用引号引起来
26.     b、同一个标签中的属性名称不能重复
27.     4、XML的注释
28.     语法:<!--这是注释-->
29.     a、注释要合理嵌套
30.     b、XML声明前不能有注释
31.     5、CDATA区
32.     是character data的缩写
33.     作用:被CDATA区包围的内容,会当做普通字符串处理
34.     语法:<![CDATA[
35.     这是普通文本内容
36.     ]]>
37.     6、特殊字符(转义字符)
38.     & &
39.     < <
40.     > >
41.     " "
42.     ' '
43.     7、xml的指令
44.     作用:用来指挥软件如何解析XML文档
45.     语法:必须以“<?”作为开头,以“?>”作为结尾。
46.    
47.     三、XML的约束之DTD
48.     1、概念:
49.     格式良好的XML文档:遵守XML语法的文档
50.     有效的XML文档:遵守约束的文档。
51.     有效的XML文档必定是格式良好的。但格式良好的不一定是有效的。
52.     2、约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等
53.     3、dtd文件的扩展名是dtd。保存到磁盘上时必须使用UTF-8编码
54.     4、DTD文档的编写方式
55.     方式一:直接写在XML文件中(不用考虑编码问题)
56.     语法:
57.     <!DOCTYPE 根元素 [
58.     DTD的声明
59.     ]>
60.     方式二:写在单独文件中(文件必须使用UTF-8)
61.     DTD文档在本地
62.     语法:<!DOCTYPE 根元素 SYSTEM "DTD文档的路径">
63.     DTD文档在网上
64.     语法:<!DOCTYPE 根元素 PUBLIC "DTD的名称" "DTD的URL地址">
65.     5、DTD的语法(看懂DTD)
66.     5.1定义元素
67.     语法:<!ELEMENT 元素名称 使用规则>
68.     使用规则:
69.     (#PCDATA):Parsed Character Data已解析的字符串。(普通文本)
70.     作用:指定元素的主体内容为普通文本
71.     EMPTY:指定该元素为一个空元素。即没有主体内容
72.     ANY:用于指示元素的主体内容为任意类型
73.     (子元素):指定该元素的孩子元素
74.     子元素如果用逗号分隔,必须按照顺序编写子元素
75.     如果子元素用“|”分开,说明任选其一
76.     元素的出现的次数:
77.     +:至少一次
78.     *:0次或一次或多次
79.     ?:0次或一次
80.     什么都不带:必须一次
81.    
82.    
83.     5.2定义元素的属性(定以前元素必须存在)
84.     语法:
85.     <!ATTLIST 元素名称
86.     属性名1 属性值类型 设置说明
87.     属性名2 属性值类型 设置说明>
88.     属性值类型:
89.     CDATA:指定该属性的取值为普通字符
90.     ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
91.     ID:表示属性的取值不能重复 设置说明:
92.     #REQURIED:必须的
93.     #IMPLIED:该属性不是必须的
94.     #FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"
95.     直接值:表示属性的取值为该默认值
96.    
97.     5.3定义实体
98.     定义实体就是为一段内容指定一个名称,使用时通过这个名称就可以引用其所代表的内容。 情况一:
99.     引用实体:在DTD中定义,在XML中使用
100.     语法:<!ENTITY 实体名称 "实体内容">
101.     在xml中引用:&实体名称;
102.     情况二:
103.     参数实体:在DTD中定义,在DTD中使用(单独的dtd文件中)
104.     语法:<!ENTITY % 实体名称 “实体内容”>
105.     使用方式(注意是在DTD中使用):%实体名称;

JavaWeb重点知识随堂笔记连载(第二天 XML解析方式及Schema)

106.     一、XML的数据解析
107.     1、DOM方式
108.     Document Object Model,文档对象模型。这种方式是W3C推荐的处理XML的一种方式。
109.     把XML文档当做一个树对待;对于增删改查非常地方便。
110.     缺点:构建此树,必须加载整个xml文档。导致内存溢出(XML文件很大)。
111.     org.w3c.*
112.     2、SAX方式(推)
113.     Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。
114.     优点:读取到文档的某一部分时就进行解析。占用内存小。
115.     缺点:只能读。
116.     org.sax.*;
117.     3、PULL方式(拉)
118.     这种方式不是官方标准。http://www.xmlpull.org
119.     优点:读取到文档的某一部分时就进行解析。占用内存小。
120.     缺点:只能读。
121.     org.xmlpull.*;
122.    
123.     二、XML的约束之Schema(看懂Schema)
124.     1、Schema约束本身就是一个xml文件,扩展名为xsd
125.     2、Schema文档的跟节点固定为schema
126.     3、根据Schema编写XML头部信息的步骤:
127.     a、查看Schema文档,找到根元素。
128.     ---------------------------
129.     <书架>
130.    
131.     </书架>
132.     ---------------------------
133.     b、思考:书架来自哪个名称空间
134.     schema文档中的根元素的targetNamespace指定了名称空间。
135.     XML中引入该名称空间即可。使用xmlns关键字
136.     ---------------------------
137.     <itheima:书架 xmlns:itheima="http://www.itcast.cn">
138.    
139.     </itheima:书架>
140.     ---------------------------
141.     c、思考:http://www.itcast.cn对应的xsd文件在何方?
142.     使用schemaLocation去指定:名称空间 xsd的路径
143.     ---------------------------
144.     <itheima:书架 xmlns:itheima="http://www.itcast.cn"
145.     schemaLocation="http://www.itcast.cn book.xsd">
146.    
147.     </itheima:书架>
148.     ---------------------------
149.     d、思考:schemaLocation来自何方?
150.     来自一个标准的名称空间,需要使用xmlns来声明:
151.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
152.     ---------------------------
153.     <itheima:书架 xmlns:itheima="http://www.itcast.cn"
154.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
155.     xsi:schemaLocation="http://www.itcast.cn book.xsd">
156.    
157.     </itheima:书架>
158.     ---------------------------
159.     e、根据schema的定义,完成剩余的标签编写。都以itheima开头
160.    
161.     4、xmlns声明关键字可以声明默认名称空间
162.     xmlns="http://www.itheima.com"
JavaWeb重点知识随堂笔记连载(第三天 Web入门&Tomcat)
1、     Web的基本概念
a、web资源的分类
静态资源:html、htm。用户看到的永远都是静态页面。css、js(客户端技术:运行在客户端)。
动态资源:运行在服务器端,主要功能是输出静态内容。(服务端技术:运行在服务器上)
b、用java语言编写的服务器端程序,称之为JavaWeb

2、JavaWeb的服务器
JavaEE:多种Java开发技术的总称。

a、容器:指软件服务器程序。实现了什么规范的服务器就称之为什么容器。
支持的服务多,称之为重量级服务器。
b、轻量级的服务器:Tomcat。支持JSP/Servlet规范。

http://www.apache.org

3、Tomcat的安装与启动遇到的问题解决
a、解压Tomcat进行安装时请不要放在有空格或中文的目录下。
b、启动Tomcat:Tomcat目录/bin/startup.bat.
c、验证是否成功:http://localhost:8080看到猫,证明成功!

启动Tomcat遇到的问题:
1、启动时一闪而过:需要配置环境变量JAVA_HOME指向JDK的安装目录即可。
2、端口被占用了:默认端口8080.Web中的默认使用的端口是80
http://www.itheima.com:80
Catalina_home环境变量指向Tomcat的安装目录。一般不建议配置。

环境变量:
JAVA_HOME:执行JDK的安装目录C:\jdk1.6.0_20
path:.....;%JAVA_HOME%\bin
保证能在任意目录下执行java命令
命令搜索顺序:内部命令
外部命令
当前目录下:exe com bat
依次从path环境变量中指定的目录下搜索。

环境变量的改变,当前窗口不起作用。需要开启新窗口。
classpath:.;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;
d、Tomcat的目录结构(应用厂商自己制定的)
bin:存放启动Tomcat的一些命令。
conf:Tomcat的配置文件所在目录。server.xml最为重要。
lib:Tomcat所需的jar包
logs:tomcat运行日志
temp:临时文件
webapps:存放JavaWeb应用的。默认目录。此目录中有几个文件夹,就说明当前Tomcat管理着几个JavaWeb应用
work:Tomcat的工作目录

4、JavaWeb应用的标准目录结构(SUN公司制定)
MyApp(应用名称)
html、htm、css、js
a\a.html
WEB-INF:必须有。且写法固定。(此目录中的资源,客户端无法直接访问)
classes:必须有。且写法固定。放编译后的class文件的。com.itheima.Class1.class(\WEB-INF\classes\com\itheima\Class1.class)
lib:必须有。且写法固定。存放当前应用用的jar包。
注意:应用中的lib中的jar只为当前应用服务。Tomcat中lib下的jar,所有应用共用。

类的搜索顺序:应用的classes目录\应用的lib中的jar\TOmcat的lib中的jar
web.xml:当前应用的配置文件。必须有。且写法固定。


5、如何部署应用到服务器上
a、直接将应用的目录拷贝到Tomcat/webapps目录中(开放式目录部署)
b、打成war包,拷贝到Tomcat/webapps目录中
进入应用的目录:c:/MyApp
执行 jar -cvf MyApp.war .

访问应用的资源url的写法:
访问MyApp应用目录下的index.html
http://localhost:8080/MyApp/index.html
6、Tomcat的组成结构
配置虚拟目录:Context代表一个web应用
方式一:Context元素是Host元素的子元素。(修改server.xml。不建议使用。该文件更改后,需要重启Tomcat才起作用)
<Context path="/MyApp" docBase="c:\MyApp"/>
path:虚拟目录名称。必须以/开头
docBase:应用的真是存放路径。
方式二:(推荐的方式。此种方式不用重新启动Tomcat)
在Tomcat安装目录/conf/[enginename]/[hostname]目录下建立一个[contextPath].xml配置文件
[enginename]:server.xml中引擎的名称生成的文件夹
[hostname]]:server.xml中引擎下的主机名称生成的文件夹
[contextPath]:新建的配置文件的主文件名就是应用的虚拟路径
在该文件中添加以下内容:
<?xml version="1.0" encoding="gbk"?>
<Context docBase="c:\MyApp"/>
案例:配置默认端口、默认应用、默认主页
默认端口:80(W3C规定。HTTp协议)
把8080改为80.修改server.xml,找到8080端口的连接器Connector.
默认应用:在Tomcat安装目录/conf/[enginename]/[hostname]目录下建立一个名字为ROOT.xml的配置文件。
(比较特殊,需要重新启动)
默认主页:修改应用中的web.xml
<welcome-file-list>
<welcome-file>a.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

配置虚拟主机:Host
server.xml中的Host元素用于配置虚拟主机。
<Host name="主机域名" appBase="所有应用所在的文件夹路径"/>

配置SSL:https:Connector
HTTPS=http+SSL.默认的端口是443
JavaWeb重点知识随堂笔记连载(第四天HTTP协议&Servlet)

1.     第一部分、HTTP协议
2.     1、HTTP协议的组成
3.     请求部分
4.     GET / HTTP/1.1 请求行:位于请求的第一行
5.     Accept: */* 请求消息头:从第2行开始至第一个空行
6.     Accept-Language: zh-cn
7.     Accept-Encoding: gzip, deflate
8.     User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
9.     Host: localhost:8080
10.     Connection: Keep-Alive
11.    
12.     username=admin&password=123 请求正文:第一个空行之后的全部都是请求正文
13.     响应部分
14.     HTTP/1.1 200 OK 响应行:位于响应的第一行
15.     Server: Apache-Coyote/1.1 响应消息头:从第2行开始至第一个空行
16.     Accept-Ranges: bytes
17.     ETag: W/"7777-1322450448000"
18.     Last-Modified: Mon, 28 Nov 2011 03:20:48 GMT
19.     Content-Type: text/html
20.     Content-Length: 7777
21.     Date: Sat, 15 Sep 2012 01:47:06 GMT
22.    
23.     ..... 响应正文:第一个空行之后的全部都是响应正文
24.     浏览器显示的就是正文中的内容
25.    
26.     2、各组成部分详解
27.     请求部分
28.     GET / HTTP/1.1 请求方式 请求的资源路径 协议版本号
29.    
30.     GET:请求方式。常用的有GET、POST
31.     GET方式:默认方式。直接输入的网址。
32.     表单数据出现在了行中。url?username=abc&password=123
33.     特点:不安全;有长度限制(<1k)
34.     POST方式:可以通过表单form method="post"
35.     表单数据会出现在正文中。
36.     特点:安全;没有长度限制
37.    
38.     *Accept:浏览器可接受的MIME类型.MIME类型:文件系统中使用扩展名来区分不同文件类型的。
39.     在web中使用MIME类型来区分文件类型。(Tomcat\conf\web.xml中有所有的MIME类型,比如text/html)
40.     Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
41.     *Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
42.     Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
43.     *Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
44.     应用:防盗链;统计网站投放广告的效果
45.     *Content-Type: application/x-www-form-urlencoded提交的内容类型
46.     form表单的enctype="application/x-www-form-urlencoded"的默认值
47.     *If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件
48.     *****Cookie:这是最重要的请求头信息之一 。会话技术有关
49.    
50.    
51.     Warning: w1
52.     Warning: w2
53.    
54.    
55.     username=admin&password=123 请求正文:第一个空行之后的全部都是请求正文
56.     响应部分
57.     HTTP/1.1 200 OK 协议版本号 响应码 描述
58.     响应码:(实际用到的30个左右。其他都是W3C保留的)。
59.     描述:对响应码的描述
60.     常用响应码:
61.     200:一切正常
62.     302/307:请求的资源变更了
63.     304:资源没有被修改过
64.     404:资源不存在
65.     500:服务器程序有错
66.    
67.    
68.     *Location: http://www.it315.org/index.jsp指示新的资源的位置。配合响应码302/307来使用。
69.     302/307+Location:请求重定向
70.     Server:apache tomcat指示服务器的类型
71.     *Content-Encoding: gzip服务器发送的数据采用的编码类型
72.     Content-Length: 80 告诉浏览器正文的长度
73.    
74.     *Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型
75.     *Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒
76.     *Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件
77.    
78.     *****Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie会话技术有关
79.    
80.     *控制客户端不要缓存内容的
81.     Expires: -1
82.     Cache-Control: no-cache (1.1)
83.     Pragma: no-cache (1.0)
84.    
85.    
86.     ..... 响应正文:第一个空行之后的全部都是响应正文
87.     浏览器显示的就是正文中的内容
88.    
89.    
90.     --------------------------------------------------------------------
91.     第二部分、Servlet入门
92.     一、Servlet概述
93.     1、Servlet是SUN制定的一套开发动态Web页面的规范。它是JavaEE技术中的一种
94.     2、Tomcat服务器实现了Servlet规范。XX容器:实现了什么技术的服务器就称之为什么容器。
95.     二、如何编写一个Servlet:编写步骤
96.     1、建立标准的JavaWeb应用的目录结构
97.     FirstApp
98.     WEB-INF
99.     classes
100.     lib
101.     web.xml
102.     2、进入WEB-INF/classes目录下,编写一个类
103.     package com.itheima.servlet;
104.     import javax.servlet.*;
105.     import java.io.*;
106.     public class HelloServlet extends GenericServlet{
107.     public void service(ServletRequest req,
108.     ServletResponse res)
109.     throws ServletException,
110.     java.io.IOException{
111.     String data = "Hello World";
112.     res.getOutputStream().write(data.getBytes());
113.     }
114.    
115.     }
116.     3、编译该类。不要忘记设置classpath,把servlet-api.jar加进来
117.     set classpath=%classpath%;C:\apache-tomcat-6.0.35\lib\servlet-api.jar
118.     javac -d . HelloServlet.java
119.     4、映射Servlet。修改web.xml文件
120.     <?xml version="1.0" encoding="GBK"?>
121.     <web-app xmlns="http://java.sun.com/xml/ns/javaee"
122.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
123.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
124.     version="2.5">
125.     <servlet>
126.     <servlet-name>fuck</servlet-name>
127.     <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
128.     </servlet>
129.     <servlet-mapping>
130.     <servlet-name>fuck</servlet-name>
131.     <url-pattern>/fuck</url-pattern>
132.     </servlet-mapping>
133.     </web-app>
134.     5、部署当前web应用,拷贝到Tomcat\webapps目录下,并启动Tomcat
135.     6、访问:http://localhost:8080/FirstApp/fuck
136.    
137.     三、GenericServlet和HttpServlet抽象类
138.     1、如果直接实现了Servlet接口或者继承GenericServlet,需要实现service方法。
139.     2、如果是继承HttpServlet,不要覆盖service方法。
140.     原因:在HttpServlet的service方法中,有标准的HTTP请求处理。会根据用户的请求方式,分发给doXXX方法。(模板方法设计模式)
141.     而doXXX方法,给了一个错误的输出,且是protected类型的。
142.     所以:在继承HttpServlet编写Servlet时,应该覆盖掉doXXX方法。
143.     3、修改MyEclipse生成Servlet的模板
144.     a、关闭MyEclipse
145.     b、在MyEclipse的安装目录下搜索*wizard*(com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar)
146.     c、打开该jar包,templates目录下找Servlet.java的文件,该文件就是模板
147.     d、修改前先 备份
148.    
149.     细节:
150.     1、同一个Servlet可以被映射到多个地址上
151.     2、可以使用通配符*进行映射
152.     有两种写法:
153.     以"/"开头,以*结尾
154.     以"*"开头
155.    
156.     多个通配符匹配的原则:"/"开头的优先级高,找最匹配的。
157.     3、如果某个Servlet的映射为"/",那么该Servlet就是缺省Servlet,它负责在web.xml没有对应的url请求时的处理。
158.    
159.     四、Servlet的生命周期
160.     Servlet对象在创建时会执行init方法,第一次被访问时。
161.     destory方法会在释放对象时执行。
162.     service方法:每一次请求都会调用该方法。
163.     在web.xml中,注册Servlet时,如果配置了以下标签<load-on-startup>1</load-on-startup>(取值为一个正整数)
164.     那么Tomcat在加载该应用时,就会完成对该Servlet的实例化和初始化。
165.    
166.     出现的问题:线程安全
167.     1、尽量使用局部变量;实在是必须使用实例变量时,做同步处理,尽量包含少的代码。
168.     SingleThreadModel:实现该接口能解决资源竞争问题。具体处理办法,由服务器决定。
169.     a、把代码做了同步处理
170.     b、搞了一个对象池:Tomcat采取该方式
171.    
172.    
173.     五、ServletConfig接口
174.     代表某个Servlet的初始化参数。每个Servlet都有自己对应的ServletConfig对象。
175.     getInitParameterNames() :获取所有的参数名称
176.     getInitParameter(java.lang.String name) :获取指定参数的取值。
177.    
178.     参数和取值对应<init-param>标签
179.     <servlet>
180.     <servlet-name>ServletDemo5</servlet-name>
181.     <servlet-class>com.itheima.servlet.ServletDemo5</servlet-class>
182.     <init-param>
183.     <param-name>xxx</param-name>
184.     <param-value>yyy</param-value>
185.     </init-param>
186.     <init-param>
187.     <param-name>aaa</param-name>
188.     <param-value>bbb</param-value>
189.     </init-param>
190.     </servlet>
191.    
192.     六、ServletContext接口
193.     1、相当重要。代表当前JavaWeb应用。每一个JavaWeb应用都有自己的ServletContext对象。
194.     2、是一个域对象。(Map<String,Object>)可以通过以下方法存取该域
195.     Object getAttribute(String name)
196.     void setAttribute(String name,Object obj)
197.     void removeAttribute(String name)
198.     3、可以读取当前应用的全局参数
199.     web.xml
200.     <web-app>
201.     <context-param>
202.     <!-- 全局参数配置 -->
203.     <param-name>encoding</param-name>
204.     <param-value>ISO-8859-1</param-value>
205.     </context-param>
206.     </web-app>
207.     4、getRealPath(String path)
208.     获取当前JavaWeb应用中的任何资源。path必须以/开头,代表当前应用。
209.     5、实现请求转发
210.     ServletContext sc = getServletContext();
211.     RequestDispatcher rd = sc.getRequestDispatcher("/servlet/ServletContextDemo6");
212.     rd.forward(request, response);//转发
213.    
214.     a、转发前,会清空response的缓存。因此,转发前所有的response输出都无效。
215.     b、转发后,所有的输出也无效。
216.    
217.     注:转发前不要清空response对象的缓存。
218.    
219.     只有目标资源的输出才会显示。
220.     七、读取配置文件的三种方式
221.     xml、properties
222.     1、ServletContext.getRealPath(String path)
223.     可以读取当前应用中的任何资源。
224.     2、ResourceBundle读取*.properties的文件。
225.     只能读取类路径下的properties的配置文件。
226.     3、类加载器加载配置文件
227.     只能读取类路径下的所有的资源文件。
JavaWeb重点知识随堂笔记连载(第五天 请求和响应对象)

1.     一、HttpServletResponse概述
2.     1、作用:向客户端输出内容。
3.     2、具体方法:
4.     响应行:响应码;响应码描述;
5.     响应头:
6.     正文:流
7.    
8.     二、向客户端页面输出中文数据
9.     1、字节流
10.     data.getBytes("UTF-8")
11.     解决浏览器乱码问题:
12.     a、更改浏览器的编码(不可取)
13.     b、通知浏览器使用UTF-8解码。(响应头:Content-type=text/html;charset=UTF-8)
14.     response.setHeader("Content-Type", "text/html;charset=UTF-8");或者response.setContentType("text/html;charset=UTF-8");
15.     c、给客户端输出<meta>头
16.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
17.     2、字符流
18.     a、PrintWriter(JavaWeb中)默认查ISO-8859-1,可以通过HttpServletResponse.setCharacterEncoding(编码)更改默认编码
19.     不要忘记通知浏览器以相同的编码进行解码。
20.     b、HttpServletResponse.setContentType("text/html;charset=UTF-8")
21.     有2个作用:更改字符流的默认编码为UTF-8,同时通知了客户端解码码表
22.    
23.    
24.    
25.     三、HttpServletResponse应用案例:
26.     1、控制动态资源不要缓存
27.     2、控制静态资源的缓存时间
28.     3、文件下载:中文名称的文件下载
29.     4、定时刷新
30.     5、动态输出随机验证码图片
31.     四、HttpServletResponse的一些细节
32.     1、在同一个Servlet中,response的字节和字符输出流互斥。
33.     2、response的所有输出是输出到自己的缓存中的。容器从response对象的缓存中取出正文数据与响应头和响应码组织成HTTP协议的格式,然后再打给浏览器。
34.     3、response的输出流,容器会自动给你关闭。
35.    
36.     五、HttpServletRequest概述及常用方法
37.     1、该对象中包含了所有客户端带过的东东
38.    
39.     六、HttpServletRequest获取请求头
40.     七、HttpServletRequest获取请求参数(内省;BeanUtils框架)
41.     getParameter(name)方法
42.     getParameterValues(String name)方法
43.     getParameterNames方法
44.     getParameterMap方法 :key:请求参数名 value:请求参数值数组
45.     getInputStream:以流的形式获取正文数据
46.    
47.     八、请求参数的中文乱码问题:
48.     1、POST:
49.     客户端使用什么编码,就以什么编码传递请求参数。
50.     通知自己的处理程序,客户端提交过来的数据编码:request.setCharacterEncoding("UTF-8");(对get无效)
51.     2、GET:
52.     ISO-8859-1
53.     手工编码:new String(data.getBytes("ISO-8859-1"),"UTF-8");
54.     九、请求转发和重定向的不同
55.     请求重定向:(客户端行为)
56.     地址栏会变。发出了2次请求。
57.     response.setStatus(302);
58.     response.setHeader("Location", "/day05/servlet/RequestDemo5");
59.     或者
60.     response.sendRedirect("/day05/servlet/RequestDemo5");
61.    
62.     请求转发:(服务器行为)
63.     地址栏不会变。发出了1次请求。
64.     源资源(工商局) 目标资源(民政局):共享请求中的数据
65.    
66.    
67.     重点:
68.     ServletRequest也是一个域对象:Map<String,Object>
69.     十、各种表单输入域(中文请求参数)
70.     1、如果表单输入域的type为radio和checkbox,如果用户一个都不选,则不向服务器传递数据。
71.     2、如果选择了radio或checkbox的输入项中的其中一个,看他们有没有value,如果有,则传value的取值。如果没有,值为on。
72.    
73.     十一、请求转发和包含
74.     1、请求转发:(当前应用内转)
75.     方式一:
76.     ServletContext.getRequestDispatcher(String path):path必须以"/"开头,表示绝对路径
77.     方式二:
78.     ServletRequest.getRequestDispatcher(String path):path如果"/"开头,表示绝对路径;如果不以"/"开头,表示相对路径
79.    
80.     2、转发的细节:AServlet(源组件)--->BServlet(目标组件)
81.     **转发前会清空response的正文。
82.    
83.     转发页面上只会输出目标组件的输出,源组件的任何页面输出都无效。
84.    
85.     原则:转发前,不要刷新或关闭response的输出流。
86.     3、包含:RequestDispatcher
87.     AServlet(源组件)--->BServlet(目标组件):AServlet包含BServlet的输出内容
88.    
89.     目标组件所有设置的头都无效,正文有效。
90.    
91.     十二、各种URL地址的写法
92.     绝对地址:建议使用
93.     绝对路径的写法:何时需要加上应用名称"/day06"(如果地址给客户端用,要加上。如果给服务器端用,"/"就代表当前应用,即"/day06")
94.     <img src="path"/> 要加/day06
95.     <link type="text/style" href="path"/> 要加/day06
96.     <a href="path"/> 要加/day06
97.     <script type="text/javascript" src="path"/> 要加/day06
98.     <form action="path"/> 要加/day06
99.    
100.     getRequestDispatcher(String path): 不要加。"/"就代表了
101.     头:Refresh=2;URL=path 要加/day06
102.     ServletContext.getRealPath(String path): 不要加。"/"就代表了
103.    
104.     response.sendRedirect(String path): 要加/day06

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值