| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Servlet规范 -> 正文阅读 |
|
[Java知识库]Servlet规范 |
一、Servlet规范介绍: 1,servlet规范来自于JavaEE规范中的一种 2,作用 1)在Servlet规范中,指定【动态资源文件】开发步骤(给人看的) 2)在Servlet规范中,指定Http服务器调用动态资源文件规则 3)在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则 二、Servlet接口实现类: 1,Servlet接口来自于Servlet规范下一个接口,这个接口存在Http服务器提供jar包 2,Tomcat服务器下lib文件有一个servlet-api.jar存放Servlet接口(javax.servlet.Servlet接口) 3,Servlet规范中认为,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类 三、Servlet接口实现类开发步骤 1,第一步:创建一个Java类继承HttpServlet父类,使之成为一个servlet接口实现类 2,第二步:重写HttpServlet父类两个方法。doGet或者doPost。 3,第三步:将Servlet接口实现类信息【注册】到Tomcat服务器 【网站】--->【web】--->【WEB-INF】---> web.xml <!--将Servlet接口实现类类路径地址交给Tomecat--> <Servlet> ? ?<!--声明一个变量存储servlet接口实现类类路径--> <servlet-name>test</servlet-name> ? ?<!--声明servlet接口实现类类路径--> ? ?<servlet-class>com.yth.controller.OneServlet</servlet-class> </Servlet> <!--需要设置简短请求别名,方便访问--> <servlet-mapping> ? ?<!--这里的变量名要与上边一致,表示给上述变量起别名--> <servlet-name>test</servlet-name> ? ?<!--设置别名--> ? ?<url-pattern>/one</url-pattern> </servlet-mapping> 四、Servlet对象生命周期: 1,网站中所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建。开发人员不能手动创建Servlet接口实现类的实例对象 2,在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时,自动创建这个Servlet接口实现类的实例对象 在手动配置情况下,要求Http服务器在启动时自动创建某个Servlet接口实现类的实例对象 <servlet> <servlet-name>test</servlet-name> ? ?<setvlet-class>com.yth.controller.OneServlet</setvlet-class> ? ?<!--填写一个大于0的整数即可--> ? ?<load-on-startup>30</load-on-startup> </servlet> 3,在Http服务器运行期间,一个Servlet接口实现类只能创建出一个实例对象 4,在Http服务器关闭时刻,自动将网站中所有的Servlet对象进行销毁 五、HttpServletResponse接口 1,介绍: 1):HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar 2):HttpServletResponse接口实现类由Http服务器负责提供 3):HttpServletResponse接口负责将doGet / doPost执行结果写入到响应体中交给浏览器 4):开发人员习惯将HttpServletResponse接口修饰的对象称为【响应对象】 2,主要功能: 1):将执行结果以二进制形式写入到【响应体】 PrintWriter out = response.getWriter(); out.print(result) 2):设置响应头中[content-type]属性值,从而控制浏览器使用对应编译器将响应体二进制数据编 译为【文字,图片,视频,命令】 response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); 3):设置响应头中【location】属性,将一个请求地址赋值给location,从而控制浏览器向指定服 务器发送请求 String result = "http://www.baidu.com"; response.sendRedirect(result); 六、HttpServletRequest接口 1,介绍 1):HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar 2):HttpServletRequest接口实现类由Http服务器负责提供 3):HttpServletRequest接口负责在doGet / doPost方法运行时读取Http请求协议包中信息 4):开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】 2,作用 1):可以读取Http请求协议包中【请求行】信息 String url = request.getRequestURL().toString(); ? String method = request.getMethod(); 2):可以读取保存在Http请求协议包中【请求头】或者【请求体】中请求参数信息 (浏览器以GET方式发送请求,请求参数保留在【请求头】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由Tomcat负责解码,Tomcat默认使用【UTF-8】) (浏览器以POST方式发送请求,请求参数保留在【请求体】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由request负责解码,request默认使用【ISO-8859-1】) @Override ? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ? ? ? ?//通知请求对象,使用utf-8字符集进行解码 ? ? ? ?req.setCharacterEncoding("utf-8"); ? ? ? ?//通过请求对象获得【请求体】中【所有请求参数名】 ? ? ? ?String value = req.getParameter("username"); ? ? ? ?System.out.println("从请求体中得到的参数值:" + value); ? } ? ? ?@Override ? ?protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ? ? ? ?//通过请求对象获得【请求头】中【所有请求参数名】 ? ? ? ?String userName = request.getParameter("username"); ? ? ? ?System.out.println("从请求头得到的参数值:" + userName); ? } 3):可以代替浏览器向Http服务器申请资源文件调用 七、请求对象和响应对象生命周期 1,在Http服务器接收到浏览器发送的【Http请求协议包】之后,自动为当前的【Http请求协议包】生成一个【请求对象】和一个【响应对象】 2,在Http服务器调用doGet / doPost方法时,负责将【请求对象】和【响应对象】作为实参传递到方法,确保doGet / doPost正确执行 3,在Http服务器准备推送Http响应协议包之前,负责将本次请求关联的【请求对象】和【响应对象】销毁 【请求对象】和【响应对象】的生命周期贯穿一次请求的处理过程中 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:59:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |