Servlet基础

来源:互联网 发布:成都市场不需要php了么 编辑:程序博客网 时间:2024/06/05 15:17

网络应用程序的架构

 (1)主机/终端

   特点:主机负责所有的计算(处理业务),终端只负责输入输出(不做任何计算)

   优点:可靠,安全,i/o能力强。

   缺点:昂贵,扩展困难。

 (2)client/server

   1)两层的client/server(客户端+数据库)

   特点:使用数据库来充当服务器(大量的业务处理逻辑是使用数据库特定的编程语言来写的)。客户端提供界面和少量的业务逻辑处理。

  缺点:可移植性差(特定的编程语言)。不适合大型应用(要求客户端与数据库服务器建立一个持续连接)

  2)三层的client/server(客户端+应用服务器+数据库)

  特点:所有的业务处理都由应用服务器来做。

  优点:可移值性好(一般应用服务器都是由java语言来写的)。适合开发大型的应用。

  缺点:客户端需要单独安装和维护。开发复杂。TCP/IP协议有粘包和拆包问题。

 

 (3)browser/web server

  特点:使用浏览器来充当客户端,使用web服务器来充当应用服务器,使用标准化的http协议来通信。

  优点:开发相对简对(不需要开发通信模块,不需要自定义协议)。不需要单独安装客户端了。

 

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

 (1)扩展web服务器功能

    web服务器收到请求之后,可以调用servlet来处理。

 (2)组件规范

  a,什么是组件?

     符合规范,并且实现了部分功能的软件模块。组件一般需要部署到相应的容器里面才能运行。但是其并不依赖于特定的容器,只要容器相同符合规范,类型相同即可。

  b,什么是容器?

    符合规范,提供组件的运行环境的程序。

    tomcat提供了一个servlet容器。

 

如何写一个servlet?

step1,写一个java类,实现Servlet接口或者继承HttpServlet抽象类。

step2,编译。

step3,打包,即创建一个具有如下结构的文件夹

appname

   WEB-INF

       classes(.class文件)

       lib(可选,.jar文件)

       web.xml(部署描述文件)


step4,部署,将step3创建好的整个文件夹拷贝到服务器特定的文件夹下面

          比如,tomcat一般可以拷贝到webapps下面。

step5,启动服务器,访问http://ip:port/appname/url-pattern

例:http://localhost:8080/web01/hello

 

创建java

1. package web;

2. 

3. import java.io.IOException;

4. import java.io.PrintWriter;

5. import javax.servlet.ServletException;

6. import javax.servlet.http.HttpServlet;

7. import javax.servlet.http.HttpServletRequest;

8. import javax.servlet.http.HttpServletResponse;

9. 

10. public class HelloServlet extends HttpServlet {    

11.     protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {

12.     String uname = req.getParameter(“uname”);//获取uname的参数值

13.         resp.setContentType("text/html;charset=utf-8");//告诉浏览器,服务器返回的数据类型,并设置编码集

14.         PrintWriter out = resp.getWriter();

15.         out.println("<h1>Hello Servlet"</h1>);

16.         out.close();

17.     }

18. }

注意:若response.setContentType中未设置chartset属性,那么out.println在输出中文时会默认使用“iso-8859-1”编码集,设置了编码集则使用指定的编码集。


创建部署文件

1. <?xml version="1.0" encoding="UTF-8"?>

2. <web-app version="2.5" 

3.     xmlns="http://java.sun.com/xml/ns/javaee" 

4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

7.   <servlet>

8.       <servlet-name>helloServlet</servlet-name>

9.     <!--要写完整的类型-->

10.       <servlet-class>web.HelloServlet</servlet-class>

11.   </servlet>

12.   <servlet-mapping>

13.     <!--注意上下文的name要一致-->

14.       <servlet-name>helloServlet</servlet-name>

15.       <url-pattern>/sayHi</url-pattern>

16.   </servlet-mapping>

17. </web-app>

 

使用myeclipse来开发servlet

step1,启动myeclipse,配置tomcat

step2,创建一个web工程。

 

servlet是如何运行的?

比如,在浏览器地址栏输入http://ip:port/firstweb/hello?uname=tom

step1,浏览器依据ip,port建立连接。

step2,浏览器将相关数据(如请求资源路径,请求参数)打包,然后发送请求。

step3,服务器解析请求数据包,然后将解析之后的数据保存到request对象上,同时,服务器还会创建一个response对象。

step4,服务器创建servlet对象,然后调用该对象的service方法(服务器会将之前创建好的request,response作为参数传递进来)

step5,service方法里面,通过request对象来获得请求数据(比如,请求参数值),然后进行相应的处理,最后将处理结果写到response对象上。

step6,服务器从response对象上取之前保存的处理结果,然后打包,发送给浏览器。

step7,浏览器解析响应数据包,然后依据解析的结果生成新的页面。

 

 

 

0 0
原创粉丝点击