servlet是javaweb三大组件之一(servlet,filter,listener)
servlet用来处理客户端请求的动态资源
servlet的任务有:
servlet接口方法:
- void init(ServletConfig)
- void service(ServletRequest,ServletResponse)
- void destory()
- ServletConfig getServletConfig()
- String getServlet()
实现servlet的接口(不方便)
实现GenericServlet类(不方便)
继承HttpServlet类(方便)
写一个类,实现servlet接口
实现service方法,输出system.out.printf(“hello”);
配置web.xml,设置指定访问路径:/myservlet
<servlet>
<servlet-name>xxxservlet-name>
<servlet-class>包.类名servlet-class>
<servlet-mapping>
<servlet-name>xxxservlet-name>
<url-pattern>/myservleturl-pattern>
<servlet-mapping>
servlet>
当用户访问localhost/day1/myservlet时会输出hello
servlet一个五个方法,但只有三个有生命周期‘
1.void init(ServletConfig)
2.void service(ServletRequest,ServletResponse)
3.void destory()
servletConfig是servlet中的init方法的参数类型,服务器会在调用init方法时传递servletConfig对象给init方法。
servletConfig对象封装了servlet在web.xml中 的配置细腻些,他对应元素,servletConfig功能有:
- String getServletName();获取servlet配置名,即标签的内容
- ServletContext getServletContext();获取servletcontext对象
- String getInitParameter(String name);获取初始化参数
- Enumeration getInitParameterNames();获取所有初始化参数的名称
在web.xml文件中,配置servlet时可以为servlet配置0-n个初始化参数,例如:
<servlet>
<servlet-name>xxxservlet-name>
<servlet-class>包.类名servlet-class>
<init-param>
<parma-name>p1param-name>
<parma-value>v1param-value>
init-param>
<init-param>
<parma-name>p2param-name>
<parma-value>v2param-value>
init-param>
servlet>
GenericServlet是实现servlet接口的方法类,但他是一个抽象类,他唯一的抽象方法就是service()方法
GenericServlet实现了servlet方法:
GenericServlet实现了servletconfig接口:
GenericServlet添加了init方法
该方法会被init(ServletConfig)方法调用
如果希望对servlet进行初始化,就应该覆盖init()方法
HttpServlet是GenericServlet的子类,它专注http请求
HttpServlet类的方法:
<url-pattern>
<url-pattern>是<servlet-mapping>的子元素,用来绑定servlet的访问路径
可以在一个url-pattern里给出多个路径,也就是说一个servlet可以有多个访问路径
还可以在里面使用通配符,即“*”
<url-pattern>/*url-pattern>表示匹配任何路径
<url-pattern>/do/*url-pattern>表示匹配以do开头的路径
<url-pattern>*.dourl-pattern>表示匹配以do结尾的路径
注意:通配符要么在开头,要么在结尾,不能在中间
必须以/开头
url-pattern>
ServletContext是servlet三大域对象之一
ServletContext在服务器启动时候创建,服务器关闭时销毁,一个javaweb只能创建一个ServletContext对象
1.功能分类
2.获取ServletContext对象
- 在HttpServlet可以通过以下方法获取ServletContext对象
- ServletContext sc = this.getServletContext();
- ServletContext sc = this.getServletConfig().getServletContext();
3.存取数据
4.读取web.xml中配置的应用初始化参数
<context-param>s>
<parma-name>p1param-name>
<parma-value>v1param-value>
context-param>
<context-param>
<parma-name>p2param-name>
<parma-value>v2param-value>
context-para>
servletContext.getInitParameter(“p1”)//返回v1
servletContext.getInitParameter(“p2”)//返回v2
servletContext.getInitParameterNames().//返回Enumeration,包含p1,p2
5.获取资源项目
String getRealPath(String path):获取资源真实名称
String path = servletContext.getRealPath(“/WEB-INF/a.jpg”);
返回值为/WEB-INF/a.jpg的真实路径,即磁盘路径
InputStream getResourceAsStream(String path):获取资源的输入流
InputStream in = servletContext.getResourceAsStream(“/WEB-INF/a.jpg”);
返回的是a.jpg输入流对象
SetgetResourcePaths(String path);获取指定目录下的所有资源路径
Setpaths = servletContext.getResourcePaths(“/WEB-INF”);
返回set字符串包含的所有:
/WEB-INF/lib/
/WEB-INF/classes/
/WEB-INF/web.xml
/WEB-INF/a.jpg
1.servlet的生命周期方法是:
2.HttpServlet缺省请求方法是Get
3.HttpServlet对get的请求处理方法是doGet()
4.servlet的子标签有
5.ServletConfig的作用是:
6.Http响应头Content-type用来说明数据的MIME类型
7.HttpServlet的理解
HttpServlet是GenericServlet的子类,实现了GenericServlet的抽象方法
8.请求转发与重新定向的理解
9.编写一个servlet可以通过哪些方式
1.编写servlet接口
2.继承GenericServlet的类
3.继承HttpServlet类
10.在HttpServlet中获取ServletContext有哪些方法:
通过ServletConfig类的getServletContext()方法;
HttpServlet类也提供了getServletContext()方法。