Servlet入门

来源:互联网 发布:图片软件排行 编辑:程序博客网 时间:2024/06/07 18:54
一.什么叫Servlet?
  1. Servlet是运行在服务器端的一个java小程序,主要功能处理来自服务器端http请求与响应.
   
 2.如何通过Eclipse开发Servlet
   步骤:
   1.  创建一个类必须继承HttpServlet类 HttpServlet类(不属于JDk中的类是,javax.servlet.xxx包下的类)
   2.  重写service(HttpServletRequest request,HttpServletResponse response) // 处理请求
   3. 在web.xml中配置Sevlet 参考代码如下:
      <servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>org.xiaoyi.javaweb.web.servlet.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>MyServlet</servlet-name>
  <url-pattern>/mytest</url-pattern>
  </servlet-mapping>
  
  注意:1.<servlet>下面的<servlet-name>的内容必须与<servlet-mapping>下面的<servlet-name>相同(大写敏感)
            2.在配置url-patter 必须 / 
            3.<servlet-class> 对应servlet的路径正确
  
  备注:http://localhost:9090/javaweb_lesson4/mytest?uname=chenxinjie 访问servlet路径

  在实际开发中,我们通常重写
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
或者
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("=====doGet========");

}
注意:
来分别处理http的get请求和http的post请求,但主要重写了doGet()方法和doPost()方法,不能重写service()方法

二.Servlet的生命周期:


Servlet的生命周期是从该servlet创建到注销的整个过程,整个过程中servlet会执行以下的过程:

  • 调用init () 方法进行初始化。
  • 调用service() 方法来处理客户端的请求。
  • 调用 destroy() 方法终止(结束)。
  • 最后由 JVM 的垃圾回收器进行垃圾回收。

1、Init()方法:

该方法只在创建servlet时候调仅调用一次,以后不再调用该方法,当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

2、Service()方法:

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

3、destroy()方法:

该方法只在该servlet注销之前调用一次,且在servlet的生命周期中只会调用一次



1.在默认的配置下:
Servlet的生命周期:
当服务器启动完成,Servlet的生命周期未开始
当第一次请求对应Servlet的时候,此servlet依次完成 实例化 -->初始化 -->处理请求(doget()或dopost())
当地n次(n>1) 请求servlet的时候,servlet仅仅只会执行 处理请求的方法
当正常停止服务器,执行destroy()方法

2.在web.xml配置,如下
  <servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>org.xiaoyi.javaweb.web.servlet.MyServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>
  
  黑体配置表示servlet是在服务器启动就完成实例化和初始化
  

  服务器在管理Servlet是采用单例设计模式(仅仅实例化一个Servlet对象)

.Servlet表单数据

在很多的情况下,我们需要在浏览器,Web服务器和后台程序之间传递数据。浏览器使用两种方法可将这些信息传递到Web服务器,分别为Get方法和Post方法。

1.1、Get方法:

Get方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用?字符分隔,如下所示:

http://www.test.com/hello?key1=value1&key2=value2

GET方法是默认的从浏览器向Web服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用GET方法.GET方法有大小限制:请求字符串中最多只能有1024个字符。

这些信息使用QUERY_STRING头传递,并可以通过QUERY_STRING环境变量访问,Servlet中使用doGet()方法处理这种类型的请求

1.2、Post方法:

另一个向后台程序传递信息的比较可靠的方法是POST方法。POST方法打包信息的方式与GET方法基本相同,但是POST 方法不是把信息作为URL中?字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,您可以解析和使用这些标准输出。Servlet使用doPost()方法处理这种类型的请求。

Servlet 读取表单数据

Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:

  • getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
  • getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
  • getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。
0 0
原创粉丝点击