1)创建一个Servlet接口的实现类
public class HelloServlet implements Servlet
2)在web.xml文件中配置和映射这个Servlet
//配置和映射Servlet
<servlet>
//Servlet注册的名字
<servlet-name>helloServlet</servlet-name>
//Servlet的全类名
<servlet-class> com.briup.javaweb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
//需要和某一个servlet节点的servlet-name子节点的文本节点一致
<servlet-name>helloServlet</servlet-name>
//映射具体的访问路径:/代表当前web应用的根目录
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<%@page import="com.briup.javaweb.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
Person person=new Person();
System.out.println(person.getInfo());
%>
</body>
</html>
3 Servlet容器:运行Servlet,jsp,Filter等的软件环境。
1)可以来创建Servlet,并调用Servlet的相关生命周期方法
2)Jsp,Filter,Listener,Tag。。。
4 servlet生命周期的方法
1)构造器:第一次请求Servlet时,创建Servlet的实例,调用构造器
这说明Servlet时单实例的
2) init方法:只被调用一次,在创建好实例后立即被调用。用于初始化当前Servlet
3)service:被多次调用 每次请求都会调用service方法实际用于相应请求的
4)destroy:只被调用一次,在当前Servlet所在的WEB应用被卸载前调用用于释放当前Servlet所占用的资源。
5 load-on-startup参数:
1)配置在servlet节点中:
<servlet>
//Servlet注册的名字
<servlet-name>secondServlet</servlet-name>
//Servlet的全类名
<servlet-class> com.briup.javaweb.SecondServlet</servlet-class>
//可以指定Servlet被创建的时机
<load-on-startup>-1</load-on-startup>
</servlet>
2)load-on-startup:可以指定Servlet被创建的时机 。若为负数,则在第一次请求时被创建
若为0或正数,则在当前WEB应用被Servlet容器加载时创建实例,且数字越小越早被创建
6 关于Servlet-mapping
1)同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以使同一个
Servlet的注册名
2)在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式。
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
OR
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意:一下的既带/又带扩展名的不合法
<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>/*.action</url-pattern>
</servlet-mapping>
7 ServletConfig:封装了Servlet的配置信息,并且可以获取ServletContext对象
1)配置Servlet的初始化参数 且节点必须在load-on-startup 节点的前面
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class> com.briup.javaweb.HelloServlet</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>1230</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
2)获取初始化参数
》getInitParameter(String name):获取指定参数名的初始化参数
》getInitParameterNames():获取参数名组成的Enumeration对象
String user=servletConfig.getInitParameter("user");
System.out.println("user"+user);
Enumeration<String> names=servletConfig.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("^"+name+":"+value);
}
}
3)获取Servlet的配置名称
String servletName=servletConfig.getServletName();
System.out.println(servletName);
8 ServletContext
1)可以由ServletConfig获取
ServletContext servletContext=servletConfig.getServletContext();
2)该对象代表当前WEB应用:可以认为ServletContext是当前WEB应用的一个大管家
可以从中获取到当前WEB应用的各个方面的信息。
①获取当前WEB应用的初始化参数
设置初始化参数:可以为所有的Servlet所获取,而Servlet的初始化参数只用那个Servlet可以获取
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
方法:
getInitParameter
getInitParameterNames
代码:
ServletContext servletContext=servletConfig.getServletContext();
String driver=servletContext.getInitParameter("driver");
System.out.println("driver:"+driver);
Enumeration<String> names2=servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name=names2.nextElement();
System.out.println("-->"+name);
}
②获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署的路径
getRealPath(String path)
String realPath=servletContext.getRealPath("/nate.txt");
System.out.println(realPath);
③ 获取当前WEB应用的名称:
getContextPath
String contextPath=servletContext.getContextPath();
System.out.println(contextPath);
④获取当前WEB应用的某一个文件对应的输入流
getResourceAsStream(String path):path的/为当前的WEB应用的根目录。
InputStream is2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
⑤ 和attribute相关的几个方法