学习笔记——JavaWeb Servelt

学习笔记——JavaWeb Servelt


1.什么是Servlet

如果说JaveWeb程序是一块手表,那么Servlet就是其中齿轮。一个个Servlet实现程序中的不同功能,最终构成整个程序。在MVC设计模式中,Model是JavaBean,View是Jsp页面,而Controller就是Servlet。同时,Jsp的前身就是Servlet。Jsp页面是通过Servlet的“制作”出来的。

可以说,Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过请求-响应编程模型来访问的驻留在服务器内存里的Servlet程序。


2.Servlet的生命周期

Servlet的生命周期如下:
装载—》初始化init()—》service()-》终止destroy()。

装载:

所有的Servlet都从装载入服务器开始。

装载有三种情况:

1.使用<loadon-startup>标签设置服务器启动时加载。

2.在serlvet被访问时加载。

3.当servlet文件被修改时,服务器自动加载。


Tip:

第一种情况下,须在web.xml中添加如下代码,其中<loadon-startup>标签中的数值越小,装载的优先度越高。

  <servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>servlet.MyFirstServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>



初始化init:

装载之后,自动运行init方法,该方法只运行一次,用于初始化其中的servlet中的一些变量。
public void init() throws ServletException {
  // 初始化代码...
}


service:

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{
}


终止destroy:

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

 public void destroy() {
    // 终止化代码...
  }



3.如何编写一个Servlet

1.继承HttpServlet

public class HelloServlet extends HttpServlet

2.重写doGet()或者doPost()方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//你的代码
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//你的代码
}

3.在web.xml中注册Servlet

    <servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>servlet.MyFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyFirstServlet</servlet-name>
        <url-pattern>/servlet/MyFirstServlet</url-pattern>
    </servlet-mapping>

或者使用注释注册Servlet
@WebServlt(name="MyFirstServlet", urlPatterns={"/servlet/MyFirstServlet"})
public class MyFirstServlet extends HttpServlet {
     //你的代码
}

web.xml中的urlPattern和注释中的urlPatterns中的链接地址,是servlet在服务器中的虚拟地址。最前的 / 号表示项目根目录,然后是serlvet包的MyFirstServlet类。这样,客户端就能通过这个虚拟地址访问Servlet类,并传送数据。

4.初始化Servlet参数

在web.xml中设置初始化变量
<servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>servlet.MyFirstServlet</servlet-class>
        <init-param>
            <param-name>变量名</param-name>
            <param-value>变量值(之后在serlvet中获取到的是String对象)</param-value>
        </init-param>
    </servlet>

在注释中设置初始化变量
@WebServlet(
        displayName = "MyFirstServlet" , //描述  
        name = "MyFirstServlet", //servlet名称  
        urlPatterns = { "/servlet/MyFirstServlet" }, //url
        initParams = { @WebInitParam(name = "username", value = "张三") ,@WebInitParam(name="password", value="123")}
)//初始化参数  
获取初始化变量
public class MyFirstServlet extends HttpServlet {

    private String username;
    private String password;
    @Override    
    public void init(ServletConfig config) throws ServletException {       
        //获取初始化信息:       
        username = config.getInitParameter("username");
        password = config.getInitParameter("password");
    }

}  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值