JavaWeb基础回顾:关于JavaWeb中Servlet的学习

在JavaWeb中,Servlet是一个重要的概念,然而之前只知道如何大致的使用,面试的时候才发现自己对Servlet的概念很模糊,导致在回答面试官“对Servlet的理解”时回答的很含糊。接着这篇博客,来对Servlet的概念做一下总结。

前言:Servlet是运行在Web服务器端的Java程序,可以生成动态的Web页面,属于客户与服务器响应的中间层。实际上,jsp在底层就是一个Servlet。 

认识Servlet:在运行jsp时,服务器底层将jsp会编译成一个java类,这个类就是Servlet。可以说,jsp就是Servlet,两者可以实现同样的页面效果,不过编写两者相比,jsp成本低的多。那么既然这样,Servlet还有什么学习的价值?Servlet属于jsp的底层,学习它有助于了解底层细节;另外,Servlet毕竟是一个java类,适合纯编程,如果是纯编程的话,比将java代码混合在HTML中的jsp要好的多。

编写Servlet:

1.首先,建立Servlet

这个过程需要让建立的Servlet类继承自javax.servlet.http.HttpServlet,重写HttpServlet的doGet()方法,在web.xml中配置Servlet,部署Servlet,最后测试Servlet

2.Servlet运行机制

给一个Servlet增加了一个构造函数,并在doGet函数中也打印一个标记。

第一次访问运行了构造函数和doGet函数,而第二次访问仅运行了doGet函数,这说明两次访问总共只创建一个对象

虽然只创建了一个对象,很多个用户同时访问的时候也不会造成等待。因为Servlet是采用的多线程机制,每一次请求,系统就会分配一个线程来运行doGet函数。但是这样也会带来线程安全问题,一般来说不要在Servlet内定义成员变量,除非这些成员变量是所有用户公用的。

Servlet生命周期

Servlet内的方法有以下几个:

init()方法,

doGet()/doPost()/service(),

destroy()方法

Servlet与jsp内置对象

①获得out对象

PrintWriter out=response.getWriter();

②③获得request对象和response对象

request和response对象只需将doGet或doPost方法中的参数当成对象使用即可

④获得session对象

HttpSession session=request.getSession();

⑤获得application对象

ServletContext application=this.getServletContext();

在Servlet中读取参数

1.设置参数

有些和系统有关的信息,如系统中的字符编码,或者数据库连接的信息,最好保存在配置文件中,在使用这些配置时,从配置文件中读取。web.xml文件设置参数,提供了好的方法。

①.设置全局参数,该参数所有的Servlet都可以访问

<context-param>
    <param-name>参数名(encoding)</param-name>
    <param-value>参数值(utf-8)</param-value>
</context-param>

②.设置局部参数,该参数只有相应的Servlet可以访问

<servlet>
    <servlet-name>Servlet名称(InitServlet)</servlet-name>
    <servlet-class>Servlet类路径(servlets.InitServlet)</servlet-class>
    <init-param>
        <param-name>参数名(driverClassName)</param-name>
        <param-value>参数值(sun.jdbc.odbc.JdbcOdbcDriver)</param-value>
    </init-param>
</servlet>

2.获取参数

获取全局参数的方法:

ServletContext application=this.getServletContext();

application.getInitParameter("参数名称");

获取局部参数的方法:

this.getInitParameter("参数名称");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值