好,继续我们的Struts2的学习!
1.下面先来说说配置 eclipse 对 struts2.xml 提示功能!
我们先找到 struts-2.3.dtd 这个文件,可以在struts-2.3.4-all\struts-2.3.4\src\core\src\main\resources里面找到
下面直接上图说明:
-------------------------------------------------------------------------------------------------------------------------------
2.下面来说说Servlet API 方式获得请求参数
/**
* 参数提交:通过ServletAPI方式获得提交参数
* 了解,并不推荐使用
*/
public class UserAction extends ActionSupport{
/**
* 专门处理 登录 操作
* @return
*/
public String login() {
//在struts2中通过ServletActionContext可以获得Servlet相关的API
HttpServletRequest request = ServletActionContext.getRequest();
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = new User();
user.setName(name);
//user.setPassword(new Integer(password));
user.setPassword(Integer.parseInt(password));
System.out.println("-------login--"+user);
if (user.getName().equals("admin")) {
return SUCCESS;
}
return ERROR;
}
public String login2(){
//可以通过ActionContext的getParameters()方法获得参数
Map<String,Object> paramMap = ActionContext.getContext().getParameters();
//struts2中使用数组接收 同名的多个参数
String[] names = (String[])paramMap.get("name");
int count = 0;
for(String name: names){
System.out.println((++count)+"---"+name);
}
//String pass = (String)paramMap.get("password");
//System.out.println(name+" ------ "+pass);
return SUCCESS;
}
}
3.Action动态方法调用
——需要先确认已经开启动态方法常量设置(默认是开启状态)
-————在struts.xml 文件中加入以下代码:
——————<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" extends="struts-default">
<!-- 动态方法调用方式1
可以配置一个action 处理不同的用户请求
<a href="userAction!login.do">测试1
<a href="userAction!logout">测试2
<a href="userAction!regstr">测试3
userAction表示struts.xml中的action name
!后面的表示 Action类中的action方法(或者需要执行的action方法)
例如:
login!logout.action
login是action名称 logout是方法名称
-->
<action name="userAction" class="org.fkjava.strust2.action.UserAction">
<result>index.html</result>
</action>
<!-- 动态方法调用方式2
使用*达到通配效果
<action name=“user_*" class="com.UserAction" method=“{1}"></action>
例如:
请求url为user_logout时,将调用到UserAction类的logout方法
动态方法调用方式2扩展:
<action name=“*_*" class="com.{1}" method=“{2}"></action>
若请求的action 的 name 为 : User_logout 第一个*代表User 第二个*代表logout
-->
</package>
</struts>
感觉有点乱!