1、Servlet规范介绍
-
servlet规范是来自JAVAEE规范中的一种
-
作用
-
在Servlet规范中,指定【动态资源文件】开发步骤
-
在Servlet规范中,指定HTTP服务器调用动态资源文件规则
-
在Servlet规范中,指定HTTP服务器管理动态资源文件实例对象规则
-
2、servlet接口实现类
-
Servlet接口来自Servlet规范下一个接口,这个接口存在HTTP服务器,提供jar包
-
Tomcat服务器下lib文件有一个servlet—api.jar存放Servlet接口(javax.servlet.Servlet接口)
-
Servlet规范中任务,http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类
3、Servlet接口实现类开发步骤
-
第一步:创建一个java类继承HTTPServlet父类,使之成为一个Servlet接口实现类
-
第二步:重写HTTPServlet父类中的两个方法:doGet和doPost
-
浏览器——(get)——>oneServlet.doGet()
-
浏览器——(post)——>oneServlet.doPost()
-
-
第三步:将Servlet接口实现类信息【注册】到Tomcat服务器
【网站】——>【web】——>【web-inf】——>web.xml
<!--将Servlet接口实现类 类路径地址交给Tomcat--> <servlet> <servlet-name>OneServlet</servlet-name><!--声明一个变量存储servlet接口类类名字--> <servlet-class>myweb.OneServlet</servlet-class><!--存放Servlet类接口地址--> </servlet> <!--设置简短请求别名--> <servlet-mapping> <servlet-name>OneServlet</servlet-name> <url-pattern>/one</url-pattern><!--设置别名时,必须以“/”开头--> </servlet-mapping>
4、Servlet对象生命周期
-
网站中所有的Servlet接口实现类的实例对象,只能有http服务器负责创建,开发人员不能手动创建Servlet接口实现类的实例对象
-
在默认情况下,http服务器接受到对于当前Servlet接口实现类第一次请求时,自动创建这个Servlet接口实现类的实例对象
在手动配置情况下,要求http服务器在启动的时候自动创建某个Servlet接口实现类的实例对象
例:
<servlet> <servlet-name>OneServlet</servlet-name><!--声明一个变量存储servlet接口类类名字--> <servlet-class>myweb.OneServlet</servlet-class><!--存放Servlet类接口地址--> <load-on-startup>30</load-on-startup><!--填写一个大于0的整数即可--> </servlet>
-
在http服务器运行期间,一个Servlet接口实现类只能创建一个实例对象
-
在http服务器关闭时刻,自动将网站所有的Servlet对象进行销毁
5、HttpServletResponse接口
-
介绍
-
HTTPServletResponse接口来自于Servlet规范中,在Tomcat中存在于servlet-api.jar
-
HTTPServletResponse接口实现类由http服务器负责提供
-
HttpServletResponse接口负责将doGet/doPost方法执行结果写入到【响应体】交给服务器
-
开发人员将HTTPServletResponse接口修饰的对象称为【响应对象】
-
-
主要功能
-
将执行结果以二进制形式写入到【响应体】
-
设置响应头中【content-type】属性值,从而控制浏览器使用对应编译器将响应体中的二进制编译为【文字,图片的具体信息】
-
设置响应头中【location】属性,讲一个请求地址赋值给location,从而控制浏览器向指定服务器发送请求
-
6、HttpServletRequest接口
-
介绍
-
HttpServletRequest接口来自Servlet规范中,在Tomcat中存在servlet-api.jar
-
HttpServletRequest接口实现类由Http服务器负责提供
-
HttpServletRequest接口负责在doGet/dopost方法运行时读取Http请求协议包中的信息
-
开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】
-
-
作用
-
可以读取http请求协议包中【请求行】信息
-
可以读取保存在http请求协议包中【请求头】或者【请求体】中请求参数信息
-
可以代替浏览器向Http服务器申请资源文件调用
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取请求协议包的URL String url = request.getRequestURL().toString(); //获取请求协议包的method(请求方式) String method = request.getMethod(); //获取请求协议包的uri /** * URi : 资源文件精准定位地址,在请求行中并没有URI属性 * 实际URI中截取一个字符串,这个字符串格式“/网站名/资源文件名” * URI用于让HTTP服务器对被访问的资源文件进行定位 */ String uri = request.getRequestURI(); System.out.println("URL :"+url); System.out.println("method :"+method); System.out.println(
-