Java EE开发第十一章:3.servlet的体系结构以及常用方法
来源:互联网 发布:大盘指数算法 编辑:程序博客网 时间:2024/06/05 14:38
前言:主要介绍servlet的体系结构,servlet的生命周期、servlet的配置对象、servlet的上下文、获取文件的路径。
-------体系结构-----
1.Servlet:接口-->GenericServlet:抽象类-->HttpServlet:抽象类-->自定义servlet
2.servlet常用方法:
void init(ServletConfig config):初始化
void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
void destroy():销毁
ServletConfig getServletConfig() :获取当前servlet的配置对象
3.GenericServlet常用方法:
除了service方法没有显示,其他都实现了
空参的Init() 若我们自己想对servlet进行初始化操作,重写这个init()方法即可
4.HttpServlet常用方法:
service做了实现,把参数强转,调用了重载的service方法
重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法
doGet和doPost方法
-----生命周期-------
1.serlvet是单实例多线程, 默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作。并调用一次service方法,每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑, 当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作。
2.Demo:
配置:
<servlet> <description></description> <display-name>LifeServlet</display-name> <servlet-name>LifeServlet</servlet-name> <servlet-class>com.fly.c_life.LifeServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>LifeServlet</servlet-name> <url-pattern>/life</url-pattern> </servlet-mapping>java代码:
import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/** * servlet的生命周期 */public class LifeServlet implements Servlet {/** * 初始化方法 * 执行者:服务器 * 执行次数:一次 * 执行时机:默认第一次访问的时候 */@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("初始化:我是init");}/** * 服务, * 执行者:服务器, * 执行次数:请求一次执行一次, * 执行时机:请求来的时候 */@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {System.out.println("服务:我是service");}/** * 销毁 * 执行者:服务器 * 执行次数:只执行一次 * 执行时机:当servlet被移除的时候或者服务器正常关闭的时候 */@Overridepublic void destroy() {System.out.println("销毁:我是destroy");}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}}3.运行截图:
初始化:
服务:
销毁:
------servlet配置对象------
作用和方法:1.获取当前servlet的名称。
2.获取当前servlet的初始化参数。
3.获取全局管理者。
4、String getServletName():获取当前servlet的名称(web.xml配置的servlet-name)
5、String getInitParameter(String key):通过名称获取指定的参数值
6、Enumeration getInitParameterNames() :获取所有的参数名称
7、初始化参数是放在 web.xml文件
8、servlet标签下子标签 init-param
9、getServletContext():获取全局管理者
10、servletconfig是由服务器创建的,在创建servlet的同时也创建了它,通过servlet的init(ServletConfig config)将config对象传递给servlet,由servlet的getServletConfig方法获取
Demo:
配置:
<servlet> <description></description> <display-name>SConfigServlet</display-name> <servlet-name>SConfigServlet</servlet-name> <servlet-class>com.fly.d_config.SConfigServlet</servlet-class> <init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SConfigServlet</servlet-name> <url-pattern>/sconfig</url-pattern> </servlet-mapping>
java代码:
import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * servletconfig对象的常用方法 */public class SConfigServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取servletconfigServletConfig config = this.getServletConfig();// 获取当前servlet的名字String servletName = config.getServletName();System.out.println("名字:" + servletName);// 获取初始化参数String user = config.getInitParameter("user");System.out.println("获取单一的值user:" + user);System.out.println("/////////////////////////");Enumeration<String> names = config.getInitParameterNames();while (names.hasMoreElements()) {String name = (String) names.nextElement();System.out.println("参数名字:" + name);}}}运行:
-------上下文-------
1、理解:上下文(全局管理者),一个项目的引用.代表了当前项目。当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象。当项目被移除的时候或者服务器关闭的时候servletcontext销毁。
2、作用:.获取全局的初始化参数、共享资源(xxxAttribute)、获取文件资源、其他操作
3、获取servletcontext:方式1:getServletConfig().getServletContext();方式2:getServletContext()
4、常用方法:
1.了解String getInitParameter(String key):通过名称获取指定的参数值Enumeration getInitParameterNames() :获取所有的参数名称 在根标签下有一个 context-param子标签 用来存放初始化参数<context-param><param-name>encoding</param-name><param-value>utf-8</param-value></context-param>2.xxxAttribute3.String getRealPath(String path):获取文件部署到tomcat上的真实路径(带tomcat路径)getRealPath("/"):D:\javaTools\apache-tomcat-7.0.52\webapps\day09\InputStream getResourceAsStream(String path):以流的形式返回一个文件4.获取文件的mime类型 大类型/小类型String getMimeType(String 文件名称)5、demo:
配置:
<servlet> <description></description> <display-name>ScontextServlet</display-name> <servlet-name>ScontextServlet</servlet-name> <servlet-class>com.fly.e_scontext.ScontextServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ScontextServlet</servlet-name> <url-pattern>/scontext</url-pattern> </servlet-mapping>
java代码:
import java.io.IOException;import java.io.InputStream;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * ServletContext的常用方法 */public class ScontextServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1获取全局管理者ServletContext context = this.getServletContext();// 获取初始化参数String encoding = context.getInitParameter("encoding");System.out.println("初始化参数:" + encoding);// 获取文件的真实路径// String path = context.getRealPath("/");// 项目目录下String path = context.getRealPath("/1.txt");System.out.println("path:" + path);//以流的形式返回一个文件InputStream is = context.getResourceAsStream("/1.txt");System.out.println("is:" + is);//获取文件的mime类型System.out.println("/////////////////");String mimeType = context.getMimeType("1.jpg");System.out.println("mimeType:"+mimeType);}}
------获取文件的路径------
1、通过类加载器获取文件:2.txt 放在classes目录下无论是java项目还是web项目都可以
类.class.getClassLoader().getResource("2.txt").getPath()
2、Demo:
配置文件:
<servlet> <description></description> <display-name>PathServlet</display-name> <servlet-name>PathServlet</servlet-name> <servlet-class>com.fly.f_path.PathServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>PathServlet</servlet-name> <url-pattern>/path</url-pattern> </servlet-mapping>
java代码:
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class PathServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String path = PathServlet.class.getClassLoader().getResource("2.txt").getPath();System.out.println("path:" + path);String pt1 = PathServlet.class.getClassLoader().getResource("/2.txt").getPath();System.out.println("pt1:" + pt1);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}public static void main(String[] args) {String pt = PathServlet.class.getClassLoader().getResource("2.txt").getPath();System.out.println("pt:" + pt);}}
-------完-----
- Java EE开发第十一章:3.servlet的体系结构以及常用方法
- Java EE开发第十一章:1.servlet的准备知识
- Java EE开发第十一章:2.初始servlet
- Java EE开发第十一章:4.servlet的综合小项目之实现账户密码的登陆
- java EE开发之Servlet第十一课:反射基础三
- Java EE 5 开发指南 - 第三章 Java Servlet技术
- java EE开发之Servlet第六课:神奇的Ajax
- Java EE 6体系结构的变革
- Java EE 6体系结构的变革
- Java EE 6体系结构的变革
- Java EE开发中Eclipse ee Servlet不能自动在web.xml里写入的问题
- Java EE多层体系结构
- Java EE体系结构
- Java EE体系结构
- java EE开发之Servlet第一课
- Java EE开发第七章:JDBC开发之C3P0连接池的使用(常用)
- Java EE开发第十章:tomcat的搭建以及web项目的创建
- java EE开发之Servlet第二课:Servlet的三个hashMap
- 安卓常用工具类
- 22个免费的数据可视化和分析工具推荐
- Genymotion错误:An error occured while deploying the file.
- JS-----------------进度条
- XXX网址
- Java EE开发第十一章:3.servlet的体系结构以及常用方法
- 当你在浏览器中输入 google.com 并且按下回车之后发生了什么?
- win10安装oracle 11g 时出现INS-13001环境不满足最低要求
- 搜索引擎solr和elasticsearch
- 函数模板与类模板
- linux上安装memcached步骤
- 为什么占位符,可以防止sql注入漏洞?
- 搜索引擎选择: Elasticsearch与Solr
- python 接收反弹shell