Servlet(javaEE 、javaWEB)
servlet -----> server + applet 意为用java编写的服务器端程序
它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用“响应/请求”的模式。
web开发的流程图:
Servlet的作用: ● 接受用户发送的请求 ● 调用其他的java程序来处理请求 ● 根据处理结果,服务器将响应返回给客户端
一般情况下javaweb中将架包都是放在的WEB-INF中的lib包里 右键选中所要的架包,然后选择Add as Library… 选项
重写父类的方法
构造方法 只被执行一次,只创建了一个对象,此对象由服务器创建的, 默认是在客户端第一次访问该servlet时创建servlet对象
init()方法 初始化 当servlet对象创建后,服务器会自动调用init()方法 完成一些初始化操作 init中加载时就拿到配置文件中的servlet的参数数据 如果我们没有需要初始化的操作,也可以是不用重写的,但是服务器依然会调用,调用父类的init()
service()方法 服务 为请求提供服务,每一次HTTP请求都会调用service(请求对象,响应对象)
destroy()方法 销毁 当servlet这个对象销毁的时候,服务器会调用destroy(), 让我们完成一些最终的操作,(例如保存日志…) 如果没有请求的话,这个方法也是可以不用写的,但是依然会调用,调用父类的destroy
页面执行时调用这个servlet中的语句
package com.student.firstweb.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DemoServlet extends HttpServlet {
public DemoServlet() {
System.out.println("DemoServlet构造方法");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
config.getInitParameter("name");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service");
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.student.firstweb.servlet.DemoServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>tom</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demourl</url-pattern>
</servlet-mapping>
</web-app>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的第一个web程序</title>
</head>
<body>
<a href="demourl">列表</a>
<form action="demourl">
账号:<input type="text">
密码:<input type="password">
<input type="button" value="保存">
</form>
</body>
</html>
页面发起请求,通过.xml访问到服务器中,调用到服务器中应调用到的代码。
只有第一次调用时才会调用init函数,在之后的买一次调用时,只访问到service函数,关闭服务器最后才会调用这个destroy函数
打开服务器中时,默认调用的MTML页面是默认为index.html网页页面
servlet的生命周期
1、实例化 构造方法:只被调用一次,只有第一次访问Servlet时或服务器启动时创建Servlet实例 2、初始化 init方法:只被调用一次,在Servlet实例创建好实例后立即执行,用于执行一些初始化Servlet的操作 3、服务 service方法:多次调用,每次请求都调用service方法,根据请求方式调用doGet()或doPost()方法。 4、消亡 destroy方法:只被调用一次,在服务器关闭时调用,执行一些操作。
|