1.Servlet概念
Servlet 运行在服务器端的Java程序,客户端能够通过设定的URL路径访问到这处Servlet。
Jsp页面其实也是一个Servlet。Servlet 能够接收到客户端的请求,并可以对请求做出处理,再响应给客户端。
Servlet 在第一次访问时才创建对象,对象创建后就一直存在于Tomcat服务器端的Serlvet容器中,不会销毁,一直要等到Web程序关闭或Tomcat服务器关闭,才销毁。第二次访问时,直接从Servlet容器中取对象使用。所以, Serlvet对象是一个单例模式。
init()方法是一个初始化方法,在Servlet对象创建时自动执行,可以在配置Servlet时,给一个参数值,在init()方法可以取到这些参数值。
Service()方法,是Servlet接收到请求后处理的方法,有多个方法,常用的是doGet和doPost这两个方法,doGet方法处理get方式的请求doPost处理post方式的请求。
destory() 方法是在Servlet销毁时才执行的方法。
2.servlet配置
Servlet 在3.0版本后支持了注解配置,早期只能在web.xml中进行配置。
xml配置
<!-- 配置Servlet -->
<servlet>
<!-- 逻辑名称 -->
<servlet-name>studentServlet</servlet-name>
<!-- Servlet类的全限定名 -->
<servlet-class>com.icss.servlet.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 逻辑名称 -->
<servlet-name>studentServlet</servlet-name>
<!-- 访问Serlvet的映射的URL路径 -->
<url-pattern>/student</url-pattern>
<url-pattern>/stu</url-pattern>
</servlet-mapping>
或者:注解配置,在Servlet类前加入
@WebServlet(urlPatterns={ "/student", "/stu" })
@WebServlet(value={ "/student", "/stu" })
3.Servlet的生命周期的相关方法
public class StudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
System.out.println("Servlet Init方法执行...");
}
public StudentServlet() {
System.out.println("Servlet 对象被创建...");
}
public void destroy() {
System.out.println("Servlet 被销毁");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doGet方法被执行..");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost方法被执行..");
}
}
执行结果:
4.Servlet API
request 请求是客户端发送到服务端,请求中包含了客户端所有的信息:
表单数据,URL路径,URL参数,SessionID,IP,浏览器相关信息…
System.out.println(request.getContextPath()); //项目在服务器的路径
System.out.println(request.getRealPath("/login.jsp")); //取文件在服务器的绝对路径