Struts 1.x 工作流程 附第一个Struts 1.x实例讲解
2015-10-07 16:17
447 查看
初次接触Struts,感觉类似于SSH框架之类的技术都很高大上。现在的商业市场上,太多的Web应用和网站采用SSH框架,不可否认,SSH框架之所以广为流传的一点就是,它的包装性很强,使用者只需在它提供的容器之中调用相应借口,并进行配置就可以搭建出各种高大上的网站。对于任何一个Struts框架初学者来说,多余接触惯了Java Web的MVC模式的应用开发,Struts显得并不陌生,也不困难。简而言之,Struts是对MVC模式的一种封装,一种打包,从而让使用者更容易的使用这种技术。
开门见山,先展示一个Struts框架上的实例:第一个Struts 1.x 实例 —— HelloWorld
新建项目,命名为HelloWorld;
右键,Myeclipse,Project Facets ,为新项目添加Strus1.3容器环境;
右键,new, Others,Myeclipse ,Web Struts 1.x ,新建Struts Form,Action & JSP;
按照指示添加helloForm, hello.jsp, helloAction;
注:图14.5:在Forward选项下添加一个Name为 success,Path为“/form/helloSuccess.jsp"的选项。Path必须以”/“开头,helloSuccess.jsp为HelloAction的输出页面。
添加成功后,可以查看到hello.jsp如下:
编辑helloSuccess.jsp如下:
HelloForm如下:
HelloForm相当于一个java Bean,它把表单封装成一个JavaBean对象,有利于数据的存储和传输。
web.xml如下:
struts-config.xml如下:
从这个视图中,可以看得出,Struts的大体工作流程即:
hello.jsp提交表单——>表单信息封装到HelloForm中——>经过Struts内部机制的控制——>携带表单信息跳转到helloSuccess.jsp
具体这个过程中,Struts采用的是何种机制来控制应用程序的工作呢?
可以看到struts-config.xml的源码如下:
完成HelloAction代码,如下:
到这里,第一个struts 1.x实例可以说已经完成了。运行,如下:
运行结果为:
若输入中文,会出现乱码,可以加入字符过滤器Filter,如下:
web.xml中配置如下:
从上面的实例可以看出,struts的工作流程如下:
开门见山,先展示一个Struts框架上的实例:第一个Struts 1.x 实例 —— HelloWorld
新建项目,命名为HelloWorld;
右键,Myeclipse,Project Facets ,为新项目添加Strus1.3容器环境;
右键,new, Others,Myeclipse ,Web Struts 1.x ,新建Struts Form,Action & JSP;
按照指示添加helloForm, hello.jsp, helloAction;
注:图14.5:在Forward选项下添加一个Name为 success,Path为“/form/helloSuccess.jsp"的选项。Path必须以”/“开头,helloSuccess.jsp为HelloAction的输出页面。
添加成功后,可以查看到hello.jsp如下:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <html> <head> <title>JSP for HelloForm form</title> </head> <body> <html:form action="/hello"> name : <html:text property="name"/><html:errors property="name"/><br/> <html:submit/><html:cancel/> </html:form> </body> </html>
编辑helloSuccess.jsp如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'helloSuccess.jsp' starting page</title> </head> <body> Hello,${ helloForm.name }.Welcome to Struts world. </body> </html>
HelloForm如下:
package com.zlg.struts.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; public class HelloForm extends ActionForm { private static final long serialVersionUID = 1L; private String name; public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub return null; } public void reset(ActionMapping mapping, HttpServletRequest request) { // TODO Auto-generated method stub } public String getName() { return name; } public void setName(String name) { this.name = name; } }
HelloForm相当于一个java Bean,它把表单封装成一个JavaBean对象,有利于数据的存储和传输。
web.xml如下:
<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> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </servlet>
struts-config.xml如下:
从这个视图中,可以看得出,Struts的大体工作流程即:
hello.jsp提交表单——>表单信息封装到HelloForm中——>经过Struts内部机制的控制——>携带表单信息跳转到helloSuccess.jsp
具体这个过程中,Struts采用的是何种机制来控制应用程序的工作呢?
可以看到struts-config.xml的源码如下:
<struts-config> <form-beans > <form-bean name="helloForm" type="com.zlg.struts.form.HelloForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="helloForm" input="/form/hello.jsp" name="helloForm" path="/hello" scope="request" type="com.zlg.struts.action.HelloAction" validate="false" cancellable="true"> <forward name="success" path="/form/helloSucess.jsp" /> </action> </action-mappings> <message-resources parameter="com.zlg.struts.ApplicationResources" /> </struts-config>
完成HelloAction代码,如下:
package com.zlg.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.zlg.struts.form.HelloForm; public class HelloAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HelloForm helloForm = (HelloForm) form; if(helloForm.getName() == null || helloForm.getName().trim().length() == 0){ return mapping.getInputForward(); } return mapping.findForward("success"); } }
到这里,第一个struts 1.x实例可以说已经完成了。运行,如下:
运行结果为:
若输入中文,会出现乱码,可以加入字符过滤器Filter,如下:
package com.zlg.struts.core; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter { private boolean enable; private String character; public void init(FilterConfig config) throws ServletException { character = config.getInitParameter("character") ; enable = config.getInitParameter("enable").trim().equalsIgnoreCase("true"); } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { if(enable==true && (character != null || !character.equals(""))){ req.setCharacterEncoding(character); resp.setCharacterEncoding(character); } chain.doFilter(req, resp); } public void destroy() { character=null; } }
web.xml中配置如下:
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.zlg.struts.core.CharacterEncodingFilter</filter-class> <init-param> <param-name>enable</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>character</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
从上面的实例可以看出,struts的工作流程如下:
相关文章推荐
- JQuery+Strusts1.x无刷新登录
- 交换机升级排障实例
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- sql2008启动代理未将对象应用到实例解决方案
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- C#学习进阶Hello World的17种写法代码分享
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- 初识JQuery 实例一(first)
- JQuery入门基础小实例(1)
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- 一个小助手批处理实例代码