什么是Servlet:
Servlet是在服务器端运行的Java程序,可以接收客户端请求并作出响应。
Servlet可以动态生成HTML内容对客户端进行响应。(客户端请求服务器,服务器运行Java代码生成HTML代码,响应给客户端。)
Servlet与JSP存在什么联系:
它们都是请求和响应给客户端。
不同点:
JSP是要先翻译.Java文件,在编译.class文件,后执行给服务器,在运行效率上要慢。
Servlet是在服务器运行Java代码生成HTML代码,响应给客户端。比JSP要快。
Servlet体系结构
HttpServlet继承GenericServlet类,实现Servlet接口和SservletConfing接口。
Servlet实现方法:
void init (ServletConfig config)
由 Servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作。
void service (ServletRequest req,ServletResponse res)
由 Servlet 容器调用,用来处理客户端的请求。
void destroy() 由 Servlet 容器调用,释放Servlet对象所使用的资源。
HttpServlet抽象类(处理HTTP协议的请求和响应):
public void service(ServletRequest req,ServletResponse res)
对GenericServlet类中service()方法的实现
protected void service(HttoServletRequest req,HttpServletResponse res)
接收HTTP 请求,并将它们分发给此类中定义的 doXXX( ) 方法。
protaected void doXXX(HttpServletRequest req,HttpServletResponse res)
根据请求方式的不同分别调用的相应处理方法,如doGet()、doPost()等
HttpServletRequest接口:
String getContextPath( )
返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分。
Cookie[ ] getCookies( ) 返回客户端在此次请求中发送的所有cookie对象。
HttpSession getSession( )
返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session。
String getMethod( )
返回此次请求所使用的HTTP方法的名字,如GET、POST。
String getHeader( String name) 返回指定的请求头信息。
Servlet的生命周期
实例化:Servlet容器创建Servlet的实例
初始化:该容器调用init( ServletConfig )方法
服务:如果请求Servlet,则容器调用service()方法
销毁:销毁实例之前调用destoy()方法
获取Servlet初始化参数
Servlet初始化参数配置:
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>demo.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>initParam</param-name>
<param-value>Hello Servlet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
获取初始化参数:
public void doGet ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
System.out.println("处理请求时,doGet()方法被调用。");
String initParam = getInitParameter( "initParam" );
System.out.println(initParam);
}