一、get提交和post的提交的区别:
- 从安全看 get < post 因为get 会把提交的信息显示到地址栏
- 从提交内容看 get < post ,get 一般不要大于2k,post理论上无限制,但是在实际 开发中,建议不要大于64k
- 从速度看 get>post
- get可以保留uri中的参数,利于收藏
二、servlet的细节问题
1. 一个已经注册的Servlet可以被多次映射即:
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<!-- servlet的注册名 -->
<servlet-name>MyServlet1</servlet-name>
<!-- servlet类的全路径(包名+类名) -->
<servlet-class>com.hsp.servlet.MyServlet1</servlet-class>
</servlet>
<!-- 对一个已经注册的servlet的映射 -->
<servlet-mapping>
<!-- servelt的注册名 -->
<servlet-name>MyServlet1</servlet-name>
<!-- servlet的访问路径 -->
<url-pattern>/MyServlet1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServlet1</servlet-name>
<url-pattern>/hsp</url-pattern>
</servlet-mapping>
2 . 当映射一个servlet时候,可以多层比如:
<url-pattern>/servlet/index.html</url-pattern>
从这里还可以看出,后缀名是 html 不一定就是 html,可能是假象.
3 . 使用通配符在servlet映射到URL中:
- 第一种格式 .扩展名 比如 .do *.ss
- 第二种格式 以 / 开头 同时以 /* 结尾 比如 /* /news/*
通配符练习题:
(1)Servlet1 映射到 /abc/*
(2)Servlet2 映射到 /*
(3)Servlet3 映射到 /abc
(4)Servlet4 映射到 *.do
问题(面试题):
- 当请求URL为“/abc/a.html”,“/abc/”和“/”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。 - 当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
Servlet引擎将调用Servlet3。 - 当请求URL为“/abc/a.do”时,“/abc/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet1。 - 当请求URL为“/a.do”时,“/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。 当请求URL为“/xxx/yyy/a.do”时,“/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用Servlet2。
在匹配的时候,要参考的标准:看谁的匹配度高,谁就被选择
- *.扩展名 的优先级最低
三、getWriter()和getOutputStream()的区别
- getWriter() 用于向客户机回送字符数据
- getOutputStream() 返回的对象,可以回送字符数据,也可以回送字节数据(二进制数据):
OutputStream os=response.getOutputStream();
os.write("hello,world".getBytes());