struts2下的Action配置的各项默认值

1.在之前,我介绍过第一个struts2的小程序:struts2搭建环境和第一个小程序,接下来我将介绍Action配置的各项默认值。


2.首先,我们可以copy一个已经配置好struts2环境的web项目Struts2Test,然后复制,输入复制的项目名称,出现下图:

点击OK按钮:

此时,该项目是不能被部署到服务器上的,应该选中项目,右键鼠标,选择Properties属性,或者直接按快捷键alt+enter,出现下图:

此时我们打开MyEclipse那个选项,如下图所示:

我们要做如下图的修改,把Web Context-root改为当前项目名称,即/ActionTest,点击OK即可:

点击finish即可,以后要copy项目就做上面的事情,就不用每次手动搭建struts2的环境了。


3.copy这个项目之后,我们把不需要的东西删掉,其中web.xml文件不需要改它,因为copy的项目是环境已经搭建好的了,我们可以修改一下struts.xml配置文件,接下来附上struts2.xml的代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
        
<struts>

	<package name="xg" namespace="/test" extends="struts-default">
		<action name="login">
			<result>/login.jsp</result>
		</action>
	</package>
</struts>


接下来在WebRoot目录下新建一个login.jsp页面,页面用来输入用户名和密码的,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
   <center>
   <form action="/xxx" method="post">
    	用户名:<input type="text" name="username"/><br>
    	密码:<input type="password" name="password"/><br>
    	<input type="submit" value="提交"/>
    </form>
    </center>
  </body>
</html>

项目结构如下图:


如果对搭建环境还不知道的,可以百度一下,或者看我写的那篇文章:http://blog.csdn.net/u012561176/article/details/43852931


4.接下来我们部署此项目,开启Tomcat服务器,输入网址:http://localhost:8083/ActionTest/test/login ,出现下图,action转发了login.jsp这个页面:

这是因为Action配置有各项默认的值。


5.Action配置中的各项默认值:

(1).如果没有为action指定class属性,默认的Action类是ActionSupport类。

(2).如果没有为action指定method属性,默认执行action中的execute()方法。

(3).如果没有指定result的name属性,默认为success。


6.其中这个ActionSupport类位于Web App Libraries这里面,如下图所示:

这时我们打开这个ActionSupport.class类,如下图所示:

没有所谓的Java代码,都是些字节码,怎么样才可以让我们看到熟悉的Java代码呢?

我们可以这样做,必须找到E:\struts-2.3.20\struts-2.3.20\src\xwork-core\src\main\java个路径,我们选中xwork-core-2.3.20.jar包,单击鼠标右键选择Properties,出现下图:

点击红色箭头指向处,即在文件夹里面选择,然后找到E:\struts-2.3.20\struts-2.3.20\src\xwork-core\src\main\java这个路径:

点击确定按钮,返回下图界面:

点击Apply应用,再点击OK按钮即可,此时我们发现ActionSupport.class类变成了我们熟悉的Java代码了,如下图所示:


7.经过上面第6点的ActionSupport.class类变成了Java代码,其中这个类实现了Action,Validateable等等的接口,然后我们就可以来研究源代码了:

上面第5步讲了Action配置的各项默认值,其中action下的class属性就是这个ActionSupport类,action下的method执行方法是不是在这个ActionSupport.class类里面呢?答案是肯定的。

这说明了当用户在请求一个action的时候,首先会交给ActionSupport.class类处理,如果在action中没有指定method属性,默认就是执行execute()方法,看上图在执行execute()方法时返回了SUCCESS常量,而这个常量到底在哪里定义了呢,答案是在Action.class类里面定义了:

而这个常量指向的值就是为一个字符串success,在struts.xml文件下,我们没有指定result下的name属性,默认值为success字符串,所以它会找到login.jsp页面,完成用户的请求,转发到login.jsp这个视图。


8.以上内容仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值