JSP+JavaBean两层结构的开发应该是比较熟悉的,也比较好理解。

但是,有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行Servlet,把调用JavaBean的结果嵌入到页面中返回给用户的浏览器。

JSP+JavaBean+Servlet三层结构的实质是多了一个Controller:Servlet来分发客户端浏览器的请求。如果把起控制器作用的Servlet的作用理解为对客户端的请求进行预处理对理解Servlet将有很大的帮助。通过web.xml配置文件可以找到用户请求和特定的Servlet的对应关系,每个Servlet都有一个特定的Servlet对象与之对应,所以说处理用户请求的就是一个继承自HttpServlet的Servlet对象。

            

<!-- JSPC servlet mappings start -->

<servlet>

<servlet-name>ms1</servlet-name>

<servlet-class>news.FirstAction</servlet-class>

</servlet>

<servlet>

<servlet-name>ms2</servlet-name>

<servlet-class>news.DetailAction</servlet-class>

</servlet>

<!-- JSPC servlet mappings end -->

<servlet-mapping>

<servlet-name>ms1</servlet-name>

<url-pattern>/newsmain</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>ms2</servlet-name>

<url-pattern>/newsDetail</url-pattern>

</servlet-mapping>

如上面所示的摘自web.xml的一段配置servlet,第一部分主要用来配置Servlet与具体的Servlet对象关联,第二部分主要用来配置请求由哪个Servlet处理,Servlet名字的关联,处理请求就与具体Servlet处理对象关联起来,比如说,客户端浏览器发来/newsmain的请求,它由ms1 servlet进行处理,通过ms1就能找到相对应的serlet对象news.FirstAction,即/newsmain->ms1->news.FirstAction,这也就是配置文件的意义所在。到现在懂得了用户/newsmain请求会被news.FirstAction类的对象进行处理,所以说,要看懂程序就要看懂FirstAction的作用是什么就行了。比如说下面是FirstAction的一个实现。

            

public final class FirstAction extends HttpServlet {

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

DB db = new DB();

HttpSession session = req.getSession();

try {

session.setAttribute(Constants.NEWS_LIST_KEY, News

.SearchNewsTitle(db));

} catch (Exception e) {

e.printStackTrace();

}

db.close();

String target = "/P43_News/newsMain.jsp";

resp.sendRedirect(target);

}

}

通过这个实现可以看到,当服务器收到客户端请求执行News.SearchNewsTitle(db)的操作,然后把返回值通过session.setAttribute放到session里,然后通过resp.sendRedirect(target)间接转移到newsMain.jsp,这样在newsMain.jsp里通过session.getAttribute函数就可以得到存储在session里的对应值。

回过头来就容易看出JSP+JavaBean两层结构和JSP+JavaBean+Servlet三层结构的不同了,两层结构必须把预处理放在JSP中进行,比如说News.SearchNewsTitle(db),三层结构先把预处理在Servlet里进行了,然后相当于把这个处理结果通过Session返回给JSP,让JSP更关注于界面的显示。

转载于:https://www.cnblogs.com/sunshinerains/archive/2009/05/08/1452779.html

JSP+JavaBean+Servlet工作原理实例讲解相关推荐

  1. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  2. java和jsp交互 structs_Struts与jsp+javabean+servlet区别

    采用Struts框架技术和直接使用jsp+javabean技术开发各有什么优势?各自的缺点又是什么? 在Javaweb开发领域存在2种开发模式, 模式一,jsp+javabean 模式二,jsp+ja ...

  3. Tomcat Servlet 工作原理

    文章目录 Tomcat Servlet 工作原理 Servlet Tomcat解析Context容器过程及如何构建Servlet Servlet容器启动过程 Web应用初始化工作 创建Servlet实 ...

  4. JSP+JavaBean+Servlet技术(MVC模型)

    一,Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这 ...

  5. 详解JSP 中Spring工作原理及其作用

    详解JSP 中Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.Dispat ...

  6. Servlet系列学习笔记1 --- Servlet工作原理和生命周期

    目录 一.Servlet API概述 二.Servlet工作原理 三.Servlet接口 四.Servlet的生命周期 五.ServletRequest 六.ServletResponse Servl ...

  7. servlet工作原理_Servlet 生命周期、工作原理

    Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Ser ...

  8. JSP/Servlet 工作原理

    Servlet Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器. Servlet 运行在 Ser ...

  9. JSP/Servlet工作原理

    当客户端浏览器向服务器请求一个 Servlet 时,服务器收到该请求后,首先到容器中检索与请求匹配的 Servlet 实例是否已经存在. 若不存在,则 Servlet 容器负责加载并实例化出该类 Se ...

  10. Servlet 工作原理解析

    2019独角兽企业重金招聘Python工程师标准>>> 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servle ...

最新文章

  1. oracle 开始一个事务,oracle的启动与关闭原理-事务commit或者rollback
  2. 文末惊喜福利 | 盘点2021主流架构创新实践
  3. EM算法理解的九层境界
  4. 《C++入门经典(第6版)》——1.3 创建您的第一个程序
  5. MongoDB自动备份全过程实录
  6. PHP7 php_memcache.dll下载
  7. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(2)
  8. 几个ubuntu16.04镜像下载地址
  9. HDU-2024c语言合法标识符
  10. Android动画类型
  11. python官网的软件-python软件怎么用
  12. python不是内部或外部命令
  13. bash的操作环境及环境设定
  14. 【数字信号调制】基于matlab GUI数字信号调制仿真系统【含Matlab源码 336期】
  15. Libra客户端使用
  16. 抓包工具 Fiddler 使用介绍
  17. 抖音起名号项目详细步骤拆分,不懂话术怎么办?
  18. ASEMI快恢复二极管US1M参数,US1M恢复时间,US1M压降
  19. C ++ 扑克牌洗牌
  20. 数据库之Oracle笔试面试题收集(来自网络)

热门文章

  1. 帮一个同学解决get请求的ajax上传数据,数据放在data里
  2. further occurrences of HTTP header parsing errors will be logged at DEBUG level.
  3. bnuoj4220素数难题
  4. asp.net cookies
  5. ASP.NET对IIS中的虚拟目录进行操作
  6. Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数
  7. linux修改max user processes limits
  8. 安装TensorFlow-gpu
  9. 清微智能获近亿元天使轮融资,专注研发超低功耗芯片...
  10. java实现Excel数据导出