现在的位置: 首页 > 综合 > 正文

struts in action 学习之01表单提交处理流程

2013年01月06日 ⁄ 综合 ⁄ 共 2395字 ⁄ 字号 评论关闭

刚开始接触struts2感觉非常难一方面可能是因为我不够smart,还有就是struts2框架确实帮我们做了很多事情,但是这些事情我们都不知道,就像我做好事一样从不留名,但后来还是上了报纸。记得刚开始写jsp页面、搭建tomcat、写servlet代码时那是很有成就感的,因为我能写很多代码啦,而struts2的action,短短几行代码,就把以前感觉有成就感的事情全部毁灭啦。但是随之而来的是什么,是一些严格的条件,比如表单提交的名字,要和对应的properties的名字一致,刚开始还真不知道,所以说呢,不是基于所有平台的HelloWorld都是那么简单,当然你理解之后也会是很简单的。对struts的整体感受是:

your life is much less complicated,thought at first it minght not seem to ! 摘自(struts in action)

struts2表单提交的介绍

搭建环境的过程在实际项目的记录中已经有拉,就不多说拉。

既然讲到表单提交,那就要说下前台view界面的书写作为login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>表单的提交</title>
</head>
<body>
<s:form action="login">
<s:textfield name="name" label="UserName"></s:textfield>
<s:password name="pwd" label="UserPwd"></s:password>
<s:submit value="表单提交"></s:submit>
</s:form>
</body>
</html>

效果如下


3、处理这次request请求的是Login 这个action

package org.struts2.llp02;
import com.opensymphony.xwork2.ActionSupport;
public class Login extends ActionSupport {
private static final long serialVersionUID = 1L;
//与前台一样的变量
private String name;
private String pwd;
//必须提供get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String execute()
{
//测试代码
System.out.println("username====>"+getName());
System.out.println("userpwd=====>"+getPwd());
//name:lupenglian,pwd:lupenglian
if ((getName().equals("lupenglian"))&&(getPwd().equals("lupenglian"))) {
return SUCCESS;
}
else {
return INPUT;
}
}
}

4、struts.xml文件的配置

 <package name="default" namespace="/user01" extends="struts-default">
        <!-- 第一天写的 helloworld,今天写个表单提交,和查询 -->
        <action name="login" class="org.struts2.llp02.Login">
        <result name="success">/user01/welcom.jsp</result>
        <result name="input">/user01/login.jsp</result>
        </action>

</package>

5、运行结果


console输出相应的用户注册信息

然后action返回success,result指向welcom.jsp页面,显示相应的信息:


今天是第二天,继续学习。

6、处理流程

Reuest 请求到来,携带者name、pwd,这是以string数组的形式在基于http的流中传播,首先被配置在web.xml文件的struts拦截器拦截,也就是核心拦截器。

Struts框架的各种拦截器,实现是在struts-default.xml文件下有一个实现的默认的interceptor的stack,主要说下parama这个拦截器,他会把所有的信息装配到对应的bean当中去。

框架在你按下提交表单的时候,会创建相应的action、ActionContext、valuestack对象,form中有对应的action的信息,通过查询struts.xml文件获取信息,与此同时该action实例会被push到valuestack上.name、pwd等属性的值会通过相应的action提供的set和get方法,完成bean的赋值。

抱歉!评论已关闭.