介绍:
servlet是一个小应用程序
作用: 处理从客户端发送的请求及服务端的响应。
开发步骤:Servlet是sun公司提供的一门⽤用于开发动态web资源的技术。
Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。
HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了⼀些与HTTP协议处理⽅方法,它比Servlet接口的功能更为强大。因此开发⼈人员在编写Servlet时,通常应继承这个类,⽽避免直接去实现Servlet接口。
HttpServlet在实现Servlet接⼝时,覆写了service⽅方法,该⽅法体内的代码会⾃动判断用户的请求方式,如为GET请求,则调⽤HttpServlet的doGet⽅方法,如为Post请求,则调⽤doPost⽅方法。 因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,⽽不要去覆写service方法。
三种创建方式:
1、实现接口
public classTestServlet implements Servlet {
@Override
publicvoid destroy() {
}
@Override
publicServletConfig getServletConfig() {
returnnull;
}
@Override
publicString getServletInfo() {
returnnull;
}
@Override
publicvoid init(ServletConfig arg0) throws ServletException {
}
@Override
publicvoid service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
}
}
2、继承HttpServlet
亲求方式:
protected voiddoGet(HttpServletRequest request, HttpServletResponse response)
protected voiddoPost(HttpServletRequest request, HttpServletResponse response)
方法参数说明:
request.getParameter("name");//根据key值获取参数
request.getServerName();//获得服务器名字
request.getProtocol();//获得协议
request.getServerPort();//获取服务端口号
request.getCharacterEncoding();//获取字符编码格式
request.getMethod();//获取的请求方式
request.getReader();//获得BufferReader对象
request.getInputStream();//获得输入流
request.getRemoteAddr();//客户端ip地址
request.getRemoteHost();//客户端主机名
request.getRemotePort();//客户端端口号
request.getRemoteUser();//客户端用户
response.getOutputStream()//获取字节输出流对象,利用该对象可将数据以字节方式写出
response.getWriter();//获取字符写出流对象,利用该对象可将数据以字符流的方式写出
response.setCharacterEncoding("utf-8");//设置响应编码格式,如果以字符流响应必须设置,防止乱码
字符流比字节流快。
os.write()//将数据写出
os.flush();//写出数据一定要刷一下
os.close();//流一定要关闭
3、继承GenericServlet
public classThirdServlet extends GenericServlet {
privatestatic final long serialVersionUID = 1L;
@Override
publicvoid service(ServletRequest request, ServletResponse response)
throwsServletException, IOException {
}
}
4、配置servlet
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>cn.banwxf.MyServlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
servlet-class:按住ctrl如果变成连接说明该类路径真确
url-pattern:不能使用大写,是访问的地址
例:http://192.168.56.2:8080/MyProject/myservlet
Servlet的生命周期
public void init(ServletConfig) ; 初始化方法
publicservice(ServletRequest,ServletResponse) ; 服务方法
public destroy() ; 销毁方法
默认情况下,servlet对象在第一次请求的时候调用构造函数创建, 创建之后自动调用带参的init方法,然后调用service方法.destroy方法在停止服务器或者停止应用的时候调用。整个过程中,init方法和destroy方法只会调用一次,而service方法会反复调用。