servlet相关的知识

目录

setvlet概念

servlet的工作原理

servlet中的方法

Servlet 容器

Servlet 生命周期

编写一个Servlet



setvlet概念

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器

servlet的工作原理

  1. 客户端发送请求至服务器

  2. 服务器启动并调用servlet

  3. servlet根据客户端请求生成响应并传给服务

  4. 服务器传送到客户端

servlet中的方法

Servlet技术的核心是Servlet,它是所有Servlet类必须直接或者间接实现的一个接口。在编写实现Servlet的Servlet类时,直接实现它。在扩展实现这个这个接口的类时,间接实现它

public interface Servlet { void init(ServletConfig var1) throws ServletException;

ServletConfig getServletConfig();
 
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
 
String getServletInfo();
 
void destroy();
}

Servlet 容器

Servlet容器是运行Servlet,JSP,Filter,Listener,Tag等的软件环境,也叫JavaWeb应用容器,或者Servlet/JSP容器。 Servlet,JSP等的生命周期方法都由容器来调用,换言之,Servlet容器负责管理它们的生命周期 目前最流行的Servlet容器软件包括: Tomcat:一个免费的开源Servlet容器,它是Apache软件基金会的一个顶级项目,由Apache、Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与与支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。

Servlet 生命周期

servlet只会初始化一次,也就是创建一个servlet对象而且指挥进行一次即init()方法,调用这个方法时,Servlet容器会传入一ServletConfig对象进来从而对Servlet对象进行初始化。

然后,调用service( )方法,每当请求Servlet时,Servlet容器就会调用这个方法。后续的请求中,Servlet容器只会调用service方法了。

最后,调用destroy()方法,当要销毁Servlet时,Servlet容器就会调用这个方法在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码。

public class MyFirstServlrt implements Servlet {

@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("Servlet正在初始化");
}
 
@Override
public ServletConfig getServletConfig() {
    return null;
}
 
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    //专门向客服端提供响应的方法
    System.out.println("Servlet正在提供服务");
 
}
 
@Override
public String getServletInfo() {
    return null;
}
 
@Override
public void destroy() {
    System.out.println("Servlet正在销毁");
}
}

编写一个Servlet

该html文件在最后点击提交按钮时,把表单所有数据通过Get方式发送到/form虚拟路径下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/form" method="get">
    <span>用户名</span><input type="text" name="username"><br>
    <span>密码</span><input type="password" name="password"><br>
    <input type="submit" name="submit">
</form>
 
</body>
</html>

接下来,我们就开始写一个Servlet用来接收处理表单发送过来的请求,这个Servlet的名称就叫做FormServlet:



public class FormServlet extends HttpServlet { private static final long serialVersionUID = -4186928407001085733L;

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
}
 
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     //设置响应的编码格式为UTF-8编码,否则发生中文乱码现象
    response.setContentType("text/html;charset=UTF-8");
    //1.获得请求方式
    String method = request.getMethod();
    //2.获得请求的资源相关的内容
    String requestURI = request.getRequestURI();//获得请求URI
    StringBuffer requestURL = request.getRequestURL();
    String webName = request.getContextPath();//获得应用路径(应用名称)
    String querryString = request.getQueryString();//获得查询字符串
 
    response.getWriter().write("<h1>下面是获得的字符串</h1>");
    response.getWriter().write("<h1>method(HTTP方法):<h1>");
    response.getWriter().write("<h1>"+method+"</h1><br>");
    response.getWriter().write("<h1>requestURi(请求URI):</h1>");
    response.getWriter().write("<h1>" + requestURI + "</h1><br>");
    response.getWriter().write("<h1>webname(应用名称):</h1>");
    response.getWriter().write("<h1>" + webName + "</h1><br>");
    response.getWriter().write("<h1>querrystring(查询字符串):</h1>");
    response.getWriter().write("<h1>" + querryString + "</h1>");


}
}

该Servlet的作用是,接收form登录表单发送过来的HTTP请求,并解析出请求中封装的一些参数,然后在回写到response响应当中去,最后在浏览器端显示。

最后一步,我们在XML中配置好这个Servlet的映射关系:

</servlet-mapping>
    <servlet>
        <servlet-name>FormServlet</servlet-name>
        <servlet-class>com.javaee.util.FormServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FormServlet</servlet-name>
        <url-pattern>/form</url-pattern>
 </servlet-mapping>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值