struts串
- 格式:rtf
- 大小:126.34 KB
- 文档页数:11
struts串.txt我自横刀向天笑,笑完我就去睡觉。
你的手机比话费还便宜。
路漫漫其修远兮,不如我们打的吧。
一 Java EE编程分层表现层,业务层,数据层。
表现层,也就算用来显示数据,接受数据的。
JSP,Servlet业务层,是处理核心业务的程序 EJB,JDBC(Hibernate)数据层,也就是数据库,用来存放数据。
Oracle,SQLServerMVC框架Model,模型层,这一层一般是进行数据库访问,并且封装对象,这一层中也存放在访问数据库取出信息封装成对象的类,也就是实体类的信息,可以使用JDBC或者Hibernate实现这一层的功能。
操作数据的业务处理层。
Ctrl,控制曾,用来相应请求和调用写好的相应的访问数据库的方法,这一层是用来控制请求的响应的,现在我们是使用Servlet来实现这一层.是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。
View,表现层,他只用来显示数据和收集必要数据,收集数据的一般是form表单,不过要保证数据的正确性要是用JavaScript验证信息,用jsp来表现、显示数据,(采集和显示数据,为业务层提供数据,表现业务层输出的数据,只关心数据的类型,不管新数据的来源)。
MVC框架的实现模型模型一:JSP+JavaBean,JSP既充当控制,又充当视图,以页面为核心,JSP使用jsp:useBean,他不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用JavaBean的方法才能实现。
模型二:JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。
StrutsMVC框架Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。
Struts提供了一些组件使用MVC开发应用程序:Model:Struts没有提供model类。
这个商业逻辑必须由Web应用程序的开发者以JavaBean 或EJB的形式提供View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。
此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP 中。
Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。
Action控制器中提供了model的逻辑接口。
二写基于struct的web应用的步骤1,创建一个符合标准的web应用的结构,也就是一个有WEB-INF文件夹的应用文件夹,在应用中需要使用到Struts的一些jar文件,要放到WEB-INF的lib文件夹下,这些jar文件都在struts的zip文件中的/struts-1.2.9-bin/lib下还有struts-1.2.9-bin/contrib/struts-el/lib下的standard.jar、jstl.jar和struts-el.jar。
2,在web.xml中配置Struts的核心控制器ActionServlet,并指明Struts的配置文件的所在位置WEB-INF下,在struts的文件中有一个样板的web.xml文件,使用这个web.xml文件来部署应用就可以了,这个样板在struts的zip文件中的struts-1.2.9-src.zip文件中的web/examples/WEB-INF/web.xml就是样板文件。
部署应用看struts是否发布成功。
<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>3,写jsp页面和业务,实体,和自定义控制器类Action,自定义Action是要继承于Action 类例:import org.apache.struts.action.*;import javax.servlet.http.*;public class LoginAction extends Action{public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception{if(request.getParameter("username").equals("admin")&&request.getParameter("passwd").equals("123")){ return mapping.findForward("success");}return mapping.findForward("fail");}}在struts-config.xml文件中的配置,解析配置文件中,配置文件的action标签就会被映射成ActionMapping对象。
<struts-config><form-beans><form-bean name="xxx" type="ActionForm的类全名"><form-bean name="LoginForm" type="basic.LoginForm"></form-beans><action-mappings><action path="/basic/login" type="alan.struts.basic.LoginAction"name="xxx" scope="request|sessio(默认值)"><forward name="success" path="/basic/success.jsp"/><forward name="fail" path="/basic/fail.jsp" redirect="false"(重定向,默认false)/></action><action path="action的路径,在form的action中写的那个路径" type="action的类全名"><forward name="在自定义的Action中使用的findForward方法的参数" path="跳转页面的路径"/><forward name="xxx" path="xxx/xxx.jsp"/></action></action-mappings></struts-config>ActionForm是可以自动将表单中的数据封装成对象,当然,一个自定义ActionForm也是要遵守Struts规范的,也就是要继承于ActionForm,并在以上的struts-config.xml进行配置。
ServletController(ActionServlet和自定义的Action),配置Ctrler需要配置struts-config.xml,通过客户端form的action来查找调用相应的action,自定义action 中的mapping对应的是配置文件中的forward标签,通过forward的path属性来跳转到相应的路径。
三 Struts预定义的Action类1. DispatchAction类(org.apache.struts.actions.DispatchAction)DispatchAction类是Action类的子类,他提供了有实现的execute方法。
我们写的自定义Action类,可以继承DispatchAction类,但不要覆盖execute方法,可以在自定义类中写反回值和参数表都与execute方法相同的方法,可以通过在struts-congfig.xml中为这个action的配置中添加一个参数,来判断调哪一个方法,实际上DispatchAction类就是通过反射机制,通过form中参数调用了自定义Action中的方法,当然这些方法的定义要符合规范,使用继承DispatchAction类的自定义的Action类,也就会共享同一的Action路径。
例:public class MyAction extends DispatchAction{ActionForward add(ActionForm form,HttpServletRequest request,HttpServletResponse response ActionMapping mapping) throws Exception{return mapping.findForward("sucess")}}struts-config.xml:<action path="/add" type="MyAction" parameter="methodName"><!--parameter属性是和form中隐藏域的名字相对应的--><forward name="sucess" path="/sucess三.jsp"/></action>from表单:<from action="add.do" method="post"><input type="hidden" name="methodName" value="add"/><!--使用隐藏域为struts传递要调用自定义Action中方法的方法名,是通过与struts-config.xml中action标签中的parameter和name属性相对应来获取隐藏域的value。