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

 2023-09-11 阅读 20 评论 0

摘要:1.在之前,我介绍过第一个struts2的小程序:struts2搭建环境和第一个小程序,接下来我将介绍Action配置的各项默认值。 struts2怎么配置、 2.首先,我们可以copy一个已经配置好struts2环境的web项目Struts2Test,然后复制,输入复制的项目

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

struts2怎么配置、

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.以上内容仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/47519.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息