『壹』 struts工作原理与工作流程有什么区别
工作原理
在Struts2框架中的处理大概分为以下几个步骤
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的jsP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
工作流程
1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器
『贰』 struts2的action怎么获取jsp页面的表单值
举个例子你就好明白了。x0dx0a例如,首先,你写了一个ExampleBean里面有属性userName和password都是String类型,然后别忘了写他们的setter和getter方法,publicvoidsetUserName(StringuserName)等等。x0dx0a然后,写Action,在Action类中加入成员变量privateStringuName;privateStringuPwd;x0dx0a一定要再写上他们的Setter和Getter方法。publicvoidsetUName(Strings)等等。x0dx0a然后你在execute方法中创建一个bean对象。如:x0dx0aExampleBeanb=newExampleBean(this.getUName(),this.getUPwd());x0dx0a就可以创建这个bean对象了。x0dx0ax0dx0a具体传值流程是:首先你访问jsp页面,然后比如jsp页面上有一个登录框,你可以输入用户密码。x0dx0a
『叁』 Struts2中使用重定向防止表单重复提交后怎们在表单中保留已填的信息和表单验证后的错误信息
使用struts2标签就可以了。例如:
JSP页面
<form action="url">
<s:textfield name="userName"/>
<input type="submit">
</form>
然后后台Action需要:
private String userName;
//生成setter和getter
这样如无意外就OK了 你可以测试跳到其它页面或返回原页面 。
记得导入标签信息<%@taglib prefix="s" uri="/struts-tags" %>
『肆』 JSP身份证号码的正则表达式验证
这个简单,在jsp页面上写个脚本,首先第一步(你的字符串这里设为str):
用str.length来做参数判断是否为18位
2.截取字符串前十七个,用正则判断
3.最后一个再用正则判断
正则的脚本如下:(首先申明,未经测试)
function isNumber(str){
var rege=/[\d]/g;
var a=str.match(rege);
if(a==null)
alert('必须是数字');
}
function isNumberOrAlpha(str){
var rege=/[\da-zA-Z]/g;
var a=str.match(rege);
if(a==null)
alert('必须是数字或字母');
}
对于正则表达式,你可以在csdn网上找一本《精通正则表达式看》
『伍』 JSP Struts2如何邮箱验证
直接通过正则表达式验证即可:
<script language=javascript>
<!--
function checkform() {
if(addform.yx.value != '') {
if(!Isyx(addform.yx.value)){
alert("请输入正确的邮箱地址!")
addform.yx.focus();
return false;
}
}
}
function Isyx(yx){
var reyx= /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
return(reyx.test(yx));
}
//-->
</script>