MVC
Struts框架,执行流程:
jsp :<form action ="url">
--------->ActionServlet :读取struts-config.xml文件
----------->找到匹配path
----------->找name:把数据放入form 根据validate的值 是否验证
----->验证form不通过返回input页面
----->验证form通过找type:执行action,把数据送到action 的excute方法里
------------->调用别的类中的方法处理,根据处理的结果使用mapping.findForward("aa")进入别的页面
------------------------------------------------------------------------------------------
view:
form :要extends ActionForm
有属性和相应的getXXX() setXXX()方法
使用validate()方法做验证:
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
ActionErrors err = new ActionErrors();//声明ActionErrors集合对象
if(name==null||name.length()<1){
err.add("name",new ActionError("name_error"));//添加具体的error
}
if(password==null||password.length()<6)
err.add("password", new ActionError("password_error"));
// TODO Auto-generated method stub
return err;//返回input页面
}
在页面里:<html:errors property="name"/>来显示错误信息
struts根据ActionErrors集合对象是否为空,来判断验证是否通过,如果为空则验证通过,否则验证没通过
ActionMessages ,ActionErrors , ActionMessage ,ActionError的关系:
ActionErrors继承ActionMessages,ActionError继承ActionMessage
ActionErrors可以存放多个ActionError,ActionMessages可以存放多个ActionMessage
DynaActionForm:
没有form类 ,不能进行validate验证
在struts-config.xml文件的
<form-beans >
<form-bean name="regForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="name" type="java.lang.String" />
</form-bean>
</form-beans>
从DynaActionForm中拿数据:
String name = (String)regForm.get("name");
String password = (String)regForm.get("password");
------------------------------------------------------------------------------------------
control:
struts的核心:struts-config.xml文件
<struts-config>
<data-sources >//连接数据源
<data-source key="aa" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="password" value="lxl" />
<set-property property="username" value="root" />
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />//在struts1.1中,property="driverClassName",在struts1.2中property="driverClass"
<set-property property="description" value="" />
<set-property property="url" value="jdbc:mysql://localhost:3306/newdb" />
</data-source>
</data-sources>
<form-beans >//form和DynaActionForm
<form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />
<form-bean name="regForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="name" type="java.lang.String" />
</form-bean>
<form-bean name="reg2Form" type="com.yourcompany.struts.form.Reg2Form" />
</form-beans>
<global-exceptions>//处理全局异常
<exception
key="aa"
path="/lesson1206/fail.jsp"//异常进入的页面
type="java.lang.Exception" />//异常的类型
</global-exceptions>
<global-forwards >//处理全局转发
<forward name="aa" path="/lesson1206/success.jsp" redirect="true"/>//redirect表示重定向,不能传送request范围内数据
<forward name="bb" path="/lesson1206/fail.jsp" />
</global-forwards>
<action-mappings >
<action
attribute="loginForm" 和loginForm相关联的Key/*在request.getAttribute("loginForm")中得到他所在的atction*/
input="/lesson1204/login.jsp"//输入页面
name="loginForm"//form的逻辑名到上面的</form-beans>里找具体的form类里
path="/login"//匹配请求的path
scope="request"//form的保存范围
validate ="false"//是否做验证,false不做验证,true做验证,但在动态表单里无效
type="com.yourcompany.struts.action.LoginAction">//action类
<forward//转发路径
name="bb"
path="/lesson1204/fail.jsp"
redirect="true" />
<forward name="aa" path="/lesson1204/success.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.lxl.struts.ApplicationResources" />//资源文件
</struts-config>
在action里查找dataSource:
DataSource ds = this.getDataSource(request,"aa");
Connection con=ds.getConnection();
------------------------------------------------------------
action:
要extends Action
public ActionForward execute(
ActionMapping mapping,//struts-config.xml文件中的action被封装为一个 mapping对象
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
UserManager um = new UserManager();
String name = loginForm.getName();//取得form中的数据
String password = loginForm.getPassword();//取得form中的数据
if(um.checkUser(name,password)){//调用javabean
return mapping.findForward("aa");//进入下一页面
}else{
return mapping.findForward("bb");//进入下一页面
/* return mapping.getInputForward();// 返回当前页面*/
}
----------------------------------------------------
国际化问题
1:处理汉字显示:
使用命令:native2ascii 原文件名 新文件名
把汉字转化为ascii码
对于中文,资源文件查找的顺序是:
ApplicationResources_zh_cn.properties-->ApplicationResources_zh.properties-->ApplicationResources.properties
其他语言也是找带相应后缀的文件再找ApplicationResources.properties
分享到:
相关推荐
Struts入门--按步骤一步步来就可以了 从网上搜了2个例子,感觉不错,所以共享出来,给入门者使用
struts2--struts入门
struts2-sitemesh_入门收集struts2-sitemesh_入门收集
struts2--1.入门程序
精通Struts ---基于MVC的Java Web设计与开发3,学习Struts入门文档
自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253
Struts1-2 和JSTL 帮助文档以及Struts入门的图书,可以轻松学习Struts,及Struts和Jstl标签库
starting-struts2-chinese.pdf学习struts的入门级宝典
Myeclipse开发struts+hibernate+spring新手入门---环境配置----项目开发示例 Myeclipse开发struts+hibernate+spring小记 开发前准备工作: 1、下载eclipse3.1版本 下载地址: 2、下载Myeclipse插件 下载地址: 3...
struts2的入门例子,含有国际资源文件。
struts框架入门学习---工程源码,希望对你有用,O(∩_∩)O~
struts入门与实践struts入门与实践.zip
Struts 1-2,帮助文档,及Jslt帮助文档,Webwork图书,可以帮助我们掌握新技术Struts2.0的帮手,并使我们了解和掌握Struts和Jstl标签库
Struts-入门.pdf
struts2的学习资料,初学着更能轻松入门
包括一个最简单的struts2入门示例,导入项目即可运行。 还有struts-2.3.24-all.zip即所有jar包,官方示例,官方文档。(除struts2-rest-showcase.war,struts2-showcase.war这两个文件,为了保证小于60m)
struts 入门与实践
NULL 博文链接:https://huangminwen.iteye.com/blog/1838209
关于STRUTS的一个PDF初级入门教程
解压后进入lib目录可以找到struts2.5所有jar包,进入“Struts2 入门\struts2基本jar包”目录可以找到基本入门jar包,包含如何配置strut2,如何访问web等