Servlet的几个重要对象
HttpServletRequest.
HttpServletResponse.
HttpSession.
ServletContext--> Application
HttpSession.invalidate()可以结束一个会话。
Enterprise Java Bean(EJB)组件是基于标准分布式对象技术。
XML文件常用作各种软件应用的配置文件。基于Struts框架中有两个重要的配置文件
Web.xml以及stuts-config.xml
WEB服务器用于处理HTTP请求,应用服务器可以提供和WEB应用相关的服务,如EJB容器就是一种处理业务逻辑和事物的应用服务器。
请求转发:Servlet类使用javax.servlet.RequestDispatcher.forword()方法来转发HTTP请求。
JAVA中常常使用大的对象比如request, response, system等获取一些接口的实例化对象。
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象,因此不能共享request范围内的共享数据。
Servlet类使用javax.servlet.RequestDispatcher.include()方法包含其他组件。
RequestDispatcher rd; rd = req.getRequestDispatcher("/header.jsp"); rd.include(req, res); rd = req.getRequestDispatcher("/main.jsp"); rd.include(req, res); rd = req.getRequestDispatcher("/footer.jsp"); rd.include(req, res); |
Struts实质上是MVC框架的一种应用,M是由实现业务逻辑的JavaBean或者EJB组件组成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。
通常Struts框架中的ActionForm Bean也被划分到视图模块中。Struts框架把用户输入的表单数据保存在ActionForm Bean中,把它传递给控制器。JSP文件使用Struts读取修改后的ActionForm Bean的信息。
模型表示程序的状态和业务逻辑,对应大型应用,业务逻辑通常由JAVABEAN或者EJB组件来实现。
ActionServlet 继承了javax.servlet.http.HttpServlet类,负责接收HTTP请求,根据配置文件struts-config.xml,把请求发给Action对象,ActionServlet会创建不存在Action对象。
(ActionForward Action.execute(); )
Action类负责调用模型的方法,更新模型的状态,并帮组控制应用程序的流程。对于小型的应用,Action类本身也可以完成一些实际的业务逻辑。
对大型的应用,Action充当用户请求和业务逻辑处理之间的Adaptor,目的是将请求与业务逻辑分开。业务逻辑有Java Bean或者EJB来完成。
在struts-config.xml中,每一个Action映射信息都通过一个<action>元素来配置,在内存中,每个<action>元素都对应一个org.apache.struts.action.ActionMapping类的实例。
Struts流程
当ActionServlet接收到一个客户请求时
1.检索与请求匹配的ActionMapping实例。
2.创建补存在的ActionForm对象,把客户提交的表单数据保存到ActionForm中。
3.按需使用ActionForm的validate()方法进行表单验证。
4.如果validate()方法返回Null或者一个没有ActionMessage的ActionErrors对象则表单测试OK。
5.ActionServlet根据ActionMapping的信息决定将请求传给下一个Action。创建不存在的Action实例,调用它的execute方法。
6. ActionForward Action.execute(),此对象指向JSP组件生成动态网页,返回给客户。
7.ActionForward对象指向的JSP组件生成动态网页,返回给客户。