Strus2学习笔记-02

时间:2021-07-26 17:28:39

好,继续我们的Struts2的学习! 

1.下面先来说说配置 eclipse 对 struts2.xml 提示功能! 

    我们先找到 struts-2.3.dtd  这个文件,可以在struts-2.3.4-all\struts-2.3.4\src\core\src\main\resources里面找到

    下面直接上图说明:

Strus2学习笔记-02

-------------------------------------------------------------------------------------------------------------------------------

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>
 
感觉有点乱!