Servlet的入门
五个方法:
1:销毁: destroy()
2:初始化: init (ServletConfig config)
3:获得其他对象 getServletInfo()
4:获得其他对象 getServletConfig()
5:为请求进行服务: service(ServletRequest req(请求),ServletResponse res(响应))
Servlet的入门: 编写类: public class ServletDemo1 implements Servlet{ @Override /** * 为用户处理请求和响应的方法. */ public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { res.getWriter().println("Hello Servlet..."); } ... } 配置(XML工程里配置): <!-- 配置Servlet --> <servlet> <!-- Servlet的名称 --> <servlet-name>test1</servlet-name> <!-- SErvlet的全路径 --> <servlet-class>com.itheima.a_servlet.ServletDemo1</servlet-class> </servlet> <!-- Servlet的映射 --> <servlet-mapping> <!-- Servlet的名称 --> <servlet-name>test1</servlet-name> <!-- Servlet的访问路径 --> <url-pattern>/ServletDemo1</url-pattern> </servlet-mapping> 访问: http://localhost:8080/day09/ServletDemo1
使用ServletRequest接收参数
String getParameter(String name(表单的参数名));---用于接收一个名称对应一个值的数据.
String[] getParameterValues(String name);---用于接收一个名称对应多个值的数据.
Map getParameterMap();---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.
Enumeration getParameterNames() ---用于获取表单中提交的所有的参数的名称.
Servlet的实现的关系
Servlet :接口
|
GenericServlet :通用的Servlet
|
HttpServlet :HttpServlet
编写一个类继承HttpServlet,重写doGet和doPost方法.
配置
Servlet的生命周期:
生命周期:就是一个对象从创建到销毁的过程.
Servlet生命周期:Servlet从创建到销毁的过程.
何时创建:用户第一次访问Servlet创建Servlet的实例
何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.
任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.
在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).
当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
Servlet的相关的配置:
启动时创建Servlet
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup> --- 传入正整数,整数越小,被创建的优先级就越高.
url-pattern的配置
url-pattern配置方式共有三种:
1.完全路径匹配 :以 / 开始 例如: /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
2.目录匹配 :以 / 开始 需要以 * 结束. 例如: /* ,/aaa/* ,/aaa/bbb/*
3.扩展名匹配 : 以 * 开始的 不能以 / 开始. 例如: *.do , *.action
错误的写法 : /*.do
如果访问地址:
完全路径匹配 > 目录匹配 > 扩展名匹配
开发中的路径编写:
相对路径:都是需要找位置相对关系.不能以 / 开始的.
./ 当前路径 ../上一级目录
使用相对路径访问:
绝对路径:不需要找位置相对关系. 以 / 开始的.
绝对路径中分为客户端路径和服务器端路径:
客户端路径一定要加工程名. /day09/ServletDemo6
服务器端路径不需要加工程名. /ServletDemo6
定时跳转:
response中设置响应头
addHeader(String name,String value); --- 针对一个key对应多个value的响应头.
addDateHeader(String name,long date);
addIntHeader(String name,int value);
setHeader(String name,String value); --- 针对一个key对应一个value的响应头.
setDateHeader(String name,long date);
setIntHeader(String name,int value);
例如:头信息: xxx:aaa
addHeader(“xxx”,”bbb”); -->xxx:aaa,bbb
setHeader(“xxx”,”bbb”); -->xxx:bbb
获得Servlet的配置信息
ServletConfig(了解)
代表当前的servlet的配置信息
* String getServletName(); ---获得Servlet在web.xml中配置的name的值.
* String getInitParameter(String name); ---获得Servlet的初始化参数的.
* Enumeration getInitParameterNames(); ---获得所有Servlet的初始化参数的名称.
ServletContext(重要)
ServletContext的作用:
* 1.用来获得全局初始化参数.
* 2.用来获得文件的MIME的类型.
* 3.作为域对象存取数据.
* 4.用来读取web项目下的文件.
ServletContext是一个域对象.
* 作用范围:整个web工程.
* 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.
* 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.
ServletContext的功能
功能一:读取全局初始化参数
geiInitParameter(String name)
geiInitParameterName()(枚举)
功能二:获得文件的MIME的类型
geiMimeType(String file)
功能三:作为域对象存取数据
范围:整个web项目.而且全局的对象.
创建:服务器启动的时候,服务器为每个web项目创建一个单独的ServletContext对象.
销毁:服务器关闭的时候销毁ServletContext.
功能四:读取web项目下的文件
传统方式读取文件:
使用的是相对路径,相对的JVM的路径.
但是现在是一个web项目,相对于JVM的路径的.现在JVM已经交给tomcat管理.
使用ServletContext读取
InputStream getResourceAsStream(String path); --- 根据提供路径读取文件返回一个文件的输入流.
String getRealPath(String path); --- 返回一个路径的磁盘绝对路径.