Servlet基础

来源:互联网 发布:国产纪录片 知乎 编辑:程序博客网 时间:2024/06/04 19:02

Servlet基础

1.1 什么是Servlet?

Servlet是sun公司制订的一种用于扩展web服务器功能的组件规范。

1.2 如何写一个servlet?

编写Servlet的步骤

第1步 写一个java类

servlet只能使用java语言来编写
实现Servlet接口或者继承HttpServlet抽象类

第2步 编译

第3步 打包

建立一个如下的目录结构
– appname
—– – WEB-INF
————- classes 存放.class文件
————- lib 存放.jar文件,该文件夹可选
————- web.xml 部署描述文件
注:该目录结构可以使用jar命令打成一个.war为后缀的文件

第4步 部署

将第三步的整个目录结构或者是对应的.war文件拷贝到服务器特定的目录

第5步 启动服务器,访问servlet

http://ip:port/appname/servlet的url-pattern配置

1.3 servlet是如何运行的?

当用户向浏览器地址栏输入http://ip:port/hellowe/sayHello?name=zs

1)浏览器使用ip:port(端口号)连接服务器

2)浏览器将请求数据按照http协议打成一个数据包(请求数据包)发送给服务器

请求数据包的内容包含了请求资源路径(/hellowe/sayHello?name=zs),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。

3)服务器创建两个对象:请求对象(Request)和响应对象(Response)服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便servlet读取请求数据(因为servlet不用解析请求数据包,如果要解析,需要理解http协议)。请求对象是HttpServletRequest接口的一个实现。响应对象是HttpServletResponse接口的一个实现,响应对象由于存放servlet处理的结果。

4)依据请求资源路径找到相应的servlet配置,通过反射创建servlet实例。然后调用其service()方法。在调用service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参 数进行传递。在servlet内部,可以通过request获得请求数据,或者通过response设置响 应数据。

5)服务器从response中获取数据,按照http协议打成一个数据包(响应数据包),发送给浏览器。

6)浏览器会解析响应数据包,取出相应的数据,生成相应的界面。
这里写图片描述

HelloServlt类代码

package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlt extends HttpServlet {    public void service(HttpServletRequest request,            HttpServletResponse response)throws ServletException,            IOException{        //读取请求参数值        String qty=request.getParameter("qty");        /**         * 通常需要对请求参数值做一些检查,         * 比如,检查qty是不是一个合法的数字。         */        //处理        String greeting="";        //        for(int i=0;i<Integer.parseInt(qty);i++){            greeting +="<h1>hello myfirst Servlet!</h1>";        }        response.setContentType("text/html");        //设置服务器返回的数据类型        PrintWriter out=response.getWriter();        out.println(greeting);        out.close();    }}

web.xml代码
注意:
url-pattern要以“/”开头
servlet-name 要一致
servlet-class 完整的类名

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <servlet>        <servlet-name>helloServlt</servlet-name>        <!-- 完整的类名 -->        <servlet-class>web.HelloServlt</servlet-class>    </servlet>    <servlet-mapping>        <!-- 两个name要一致 -->        <servlet-name>helloServlt</servlet-name>        <!--以/开头 -->        <url-pattern>/hello</url-pattern>    </servlet-mapping></web-app>

这里写图片描述

0 0