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.以上内容仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢!
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态