一、什么是servlet
servlet是sun公司制订的一种用来扩展web服务器功能的组件规范。(server+Applet=Servlet意为服务器端的小程序)
二、web.xml模板
1.一个web.xml中可以配置多个Servlet
eg.
<servlet>
<servlet-name>servlet 的名字 1</servlet-name> //servlet 的逻辑名
<servlet-class>servlet 类全名 1</servlet-class> //类的完全限定名
</servlet>
<servlet-mapping>
<servlet-name>servlet 的名字 1</servlet-name> //要和 servlet 标签中的相同
<url-pattern>指定 servlet 相对于应用目录的路径</url-pattern>
//servlet 的访问路径
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>//指定默认的欢迎页面
</welcome-file-list>
***三、
(1)Servlet的运行过程
eg.在浏览器地址栏输入:
http://ip:port/appname/hello?name=zs
a.浏览器会依据 ip,port 连接服务器,将请求资源路径(上面地址)存放到请求数据包
b.Servlet 引擎会将请求数据包中的数据封装到Request 对象(请求对象)当中,方便 Servlet 获取数据;
还会创建 Response 对象(响应对象),方便 Servlet 将处理之后的结果返回给客户端。
c.Servlet 引擎依据/appname 找到对应的应用。依据应用所对应的 web.xml,找到url-pattern 元素。
接下来,依据 servlet-class 元素指定的类名,创建 Servlet 实例。
d,Servlet 实例可以通过 Request 对象获取请求参数值。也可以通过 Response 对象输出结果。
e.Servlet 引擎从 Response 对象中获取结果,生成响应数据包。
f.浏览器解析服务器返回的响应数据包,生成相应的界面。
(2)Servlet 容器如何处理请求资源地址
step1:依据 appname,找到对应的应用;然后,依据 web.xml 中的 url-pattern 与/abc匹配。
step2:匹配过程----a.精确匹配
b.通配符匹配:即使用"*","*"代表任意的字符串。
c.后缀匹配:以"*."开头,后面加上任意的字符串,比如"*.do"。匹配任意以.do 结尾的请求。
step3:如果匹配不成功,此时,会查找对应的资源,,认为这是一种静态资源;
若找到,则返回,找不到,返回 404。
四.get/post
get 请求一般用于向服务器请求资源。不安全。
post 请求一般用于向服务器提交数据。
五.表单处理
获取表单数:
String request.getParameter(String paraName); //paraName 对应的参数名不存在,返回 null。
String[] request.getParameterValues(String paraName);
Map request.getParameterMap(); //返回所有的请求参数与请求参数值对。
六.重定向
定义:服务器向浏览器发送一个状态码 302 及一个消息头 location(location 的值是一个地址),浏览器会立即向 location 所指定的地址发送一个新的请求。
语法:response.sendRedirect(String url);
注意:在重定向之前,不能够有任何的输出;如果 response 缓存当中有数据,在重定向之前,会自动清空。
七.异常处理
1步:throws 系统异常
2步:在 web.xml 中,配置一个错误处理页面
eg.
<error-page>
<error-code>500</error-code>
<location>/error.html</location>
</error-page>