Servlet
什么是Servlet
Servlet是一个java类,它是一个运行在服务器端的使用java编写的程序,通常使用http协议来接受和相应客户端的请求。
Servlet的执行过程
web.xml的配置
url-pattern两种写法
- 以/开头的路径匹配
绝对匹配<url-pattern>/first/aaa/aaa</url-pattern>
模糊匹配<url-pattern>/*</url-pattern>
*匹配所有的字符串 - 以扩展名为结尾的
*.do<url-pattern>*.do</url-pattern>
*.action<url-pattern>*.action</url-pattern>
.后面的后缀名可以出现任何字母
/aaa.do<url-pattern>*.action</url-pattern>
注意:以扩展名形式的模糊匹配,前面不能加上/,如果加了 会报错, aaa.do这种写法前面要加上/,否则tomcat启动不了,以扩展名结尾的地址模糊匹配的话。前面不能有任意的字符串,若是绝对匹配的话可以出现任意字符串。
Servlet生命周期
- 构造方法:第一次请求的时候执行且只执行一次
- init():只执行一次,在servlet实例化以后就会执行
- service()
- doGet()
- doPost()
- 每次请求都会执行
- 作用:接受和响应客户端的请求,当服务器接受到客户端的请求时,会判断该请求是什么类型的请求(get和post),如果是get请求,service会将该请求分配给doGet来处理请求,如果是post,会分配给doPost来处理请求。
- 注意:Service方法一般情况下不会去重写,因为父类已经将该方法完善,不需要再进行重写。
- destroy()
- 在servlet被卸载之前,会执行,且只执行一次。
- 当程序卸载的时候,需要释放一些资源,这些资源可以放在此方法中。
生命周期(总)
记载Servlet(Tomcat加载)–>实例化(构造方法)–>初始化(init)–>service(根据请求分配处理方法)–>destroy()在服务器启动的时候实例化和初始化Servlet,需要在web.xml的servlet标签中加入如下语句。
<load-on-startup>1</load-on-startup>
客户端传递数据
- 将参数直接拼接到URL地址上,如http://localhost:8080/MyWeb/index?user=123&pass=123;
- 表单传递数据
get表单提交
表单的数据会拼接在URL地址上,如http://localhost:8080/MyWeb/index?user=123&pass=123;
post表单提交
提交的数据不会显示在URL上面比较安全。
服务器端的响应
- 通过PrintWriter
- 可以用流编写一个网页显示出来
- 可以用流编写js代码跳转一个网页
out.write(<script>location.href=\"http://www.baidu.com\"</script>");
- 可以用流编写一个网页显示出来
- 通过respnose.sendRedirect(“路径/网址”);
response.sendRedirect("http://www.baidu.com");