程序的架构和Servlet

一、程序的架构

1、C/S架构

C/S架构是一种客户端/服务器的工作模式,由C :客户端和S:服务器组成。

2、B/S架构

B/S架构是一种浏览器/服务器的工作模式,又叫做请求/响应模式。B是浏览器,S是服务器。

一般常用的都是B/S架构,比较方便,降低程序的开发和维护成本。

B/S架构的工作原理:

1) 客户端(浏览器)可以接受用户的输入。

2)客户端把请求消息发送到服务器端,等待服务器端响应。

3)服务器端对数据进行处理,使用服务器端技术,JSP等,对请求进行数据处理。

4)返回响应:服务器端向客户端发送响应,并由浏览器解释执行,展示到用户界面。

URL:全称Uniforn  Resource  Locator ,是Internet上标准的资源地址,又叫做统一资源定位符。

二、Servlet

1、什么是Servlet?

Servlet是一种独立于平台和协议的服务器端JAVA应用程序,通过Servlet可以生成动态的Web页面。

作用:就是交互的浏览和更新数据,并且生成动态的页面进行展示。

使用Servlet处理Web请求,主要有以下步骤:

a、服务器接收从客户端发送的请求。

b、服务器请求信息发送至Servlet。

c、Servelt处理后,生成响应的内容。

d、服务器将响应返回给客户端。

2、Servlet API

Servlet 是server 以及applet两个单词的合成,是一种服务器端的java应用程序。

注意:只有当服务器端使用ServletAPI时,才能算是一个Servlet。

ServletAPI又叫做Java Servlet应用程序接口,其中包含了很多的接口和类。

3、Servlet生命周期

Servlet容器,是用来装载Servlet对象的一种容器,否则管理Servlet的一类组件。

Servlet生命周期是指Servlet从创建到销毁的过程。有以下几个过程。

a、加载和实例化。客户端请求

b、初始化。容器调用init()方法

c、提供服务,处理请求。容器调用service()方法。

d、销毁。调用destroy()方法,服务器停止运行。

4、Servlet的使用

创建Servlet的方式:

  • 实现Servlet接口
  • 继承GenericServlet类
  • 继承HttpServlet类(一般常用)

创建Servlet之后,重写doGet,doPost方法,这两个方法都是用来处理表单提交的数据,分别对应get,post提交方式。

5、Servlet的部署和运行

Servlet的部署

首先需要对web.xml文件进行配置

<!--如下设置登录的servlet-->
  <servlet>
    <servlet-name>loginServlet</servlet-name>    <!--定义的Servlet应用名字-->
    <!-- 定义的servlet应用名字对应的具体servlet文件-->
    <servlet-class>cn.web.servlet.LoginServlet</servlet-class>
  </servlet>

  <servlet-mapping>    <!--地址映射-->
    <servlet-name>loginServlet</servlet-name> <!--定义的Servlet映射名字,和Servlet名字一致-->
    <url-pattern>/login</url-pattern>    <!--映射地址-->
  </servlet-mapping>

注1: web容器的配置文件一般放置在根目录下的WEB-INF文件夹中,文件名为web.xml。

6、Servlet跳转的两种方式

转发和重定向,区别如下:

 <1>、转发:
                a. 使用request请求对象跳转
                b. 具体的跳转方法: 
                    getRequestDispatcher("目标地址").forward(请求, 响应);
                c. URL地址显示: 原地址
                d. 请求对象: 跳转前后的请求对象是同一个请求对象,1个请求, 请求中的数据保留
                e. 跳转发起位置: 服务器

<2>、重定向:
                a. 使用什么对象发起跳转: response响应对象
                b. 具体的跳转方法: sendRedirect("目标地址");
                c. URL地址显示: 目标地址
                d. 请求对象: 跳转前后的请求对象是不同的请求对象,2个请求, 请求中的数据不保留
                e. 跳转发起位置: 客户端

7、通过后台的Servlet如何获取页面数据?
        通过请求对象request获取页面参数
        方法1: request.getParameter("页面参数名");    获取指定名称的页面参数(单个), 返回值类型String
        方法2: request.getParameterValues("页面参数名");   获取指定名称的页面参数(复数), 返回值类型String[]
        注: 数据传递默认字符集为iso-8859-1, 一旦传递中文一定要处理乱码
            根据数据传递方式的不同处理方式也不同.
            post格式: 必须在参数获取之前执行相关代码才有效. 一次处理所有数据都有效
                1) 处理请求中的中文乱码
                request.setCharacterEncoding("utf-8");
                2) 处理响应中的中文乱码
                response.setCharacterEncoding("utf-8");
                3) 处理响应页面的字符集编码格式
                response.setContentType("text/html;charset=utf-8");
            get格式: 只能在数据获取之后逐一处理
                          如:new String(s.getBytes("ISO-8859-1"),"UTF-8");    将字符串打散成字节,重新拼接成utf-8的编码格式。
            注: 在代码中先进行了post格式的处理, 不影响get格式的处理.但反之则不能。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值