6动态方法调用.doc
文本预览下载声明
5.动态方法调用.docx
Struts1框架提供了DispatchAction,从而允许一个Action内包含多个处理逻辑。
Struts2同样提供了这种处理多个请求的Action
比如:在一个页面上有登录和注册两个按钮,两个按钮都是提交到同一个Action进行业务处理。但处理的逻辑又完全不一样,这个时候我们就需要动态的改变URL来实现
首先我们要在JSP页面做点手脚,
先看JSP页面的代码:
%@ page language=java contentType =text/html; charset=UTF-8 pageEncoding=UTF-8 %
%@ taglib prefix=s uri=/struts-tags %
!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN /TR/xhtml1/DTD/xhtml1-transitional.dtd
html xmlns=/1999/xhtml
head
title注册页面/title
style
.errorMessage{color:red}
/style
script type=text/javascript
function loginsubmit()
{
targetFrom = document.forms[0];
targetFrom.action = login!login.action?model=login;
targetFrom.submit();
}
/script
/head
body style=text-align: center
h1欢迎注册/h1
hr /
div align=center
s:form action =login.action?model=regist
s:textfield name = username label = 用户名 /
s:textfield name = password label = 密码/
s:submit value = 注册/
tr
td colspan=2
div align=right
input type = button value = 登录 onclick=loginsubmit()/
/div
/td
/tr
/s:form
a href = userList.action查看会员信息/a
/div
/body
/html
在登录按钮上点击的时候触发JS函数loginsubmit()
在loginsubmit函数中 我们将form的提交路径改为了 login!login.action?model=login
详细说明下:
第一个login也就是感叹号前面的login代表的是Action的名字,既是struts.xml中定义的action
第二个login也就是感叹号后面的login代表的是Action中的login函数
.action 是action的后缀。
model=login 是带到action中的参数 在action中如果定义了变量model并且定义了model的get set 方法,就能直接取到URL中带过去的值
我们看action的代码:
package action;
import java.io.UnsupportedEncodingException;
import .URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import erceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import entity.User;
public class LoginAction extends ActionSupport implements ServletResponseAware {
private String username ;
p
显示全部