struts2学习之三(第一个小页面)

超简单的页面,就是一个欢迎页面,对于老手来说,可以飘过去了。

刚接触struts2,就一个欢迎页面就没有整明白。

出现了错误问题。先是在Ubuntu上自己写,不借助IDE,结果将所需要的文件都放在指定的目录下,结果不能出来效果。然后就下载了myeclipse,借助IDE,结果还是调试不通过。最后愤而转Win。

1、jdk,tomcat安装好后,测试tomcat成功。

    http://localhost:8080/

   出现Apache页面

2、下载struts2

下载的版本是struts-2.3.16.1,

然后将apps下的struts2-blank放到tomcat的webapps下

浏览器输入http://localhost:8080/struts2-blank

然后就可以看到效果。也就是说其实struts2是不需要配置的类似环境变量的,由于出现很多问题,我就以为struts2还需要什么配置环境变量之类的。

现在也就理解了struts2更应该说是一个编程模型,而不是一个tomcat,myeclipse这样的工具,也就存在什么配置环境变量了。

3、在myeclipse的项目中导入struts2的jar包,听李刚老师的视频说,不要一股脑的将struts2的lib下的所有的jar包都导入,会有问题。我也不知道以前出现的问题是不是跟这个有关。将struts2-blank\lib下的jar包导入到项目的路径中。具体步骤,右击项目->Build Path->Add libraries,选择user library,next,或者新建或者使用已经建好的,如果第一次配置就需要新建了,点击user library,然后选择new ,然后选择struts2-blank\lib下面的包。这样至少接下来的编译是没问题了

4、制作一个页面,访问时出现“hello world”字样(学每一种语言都喜欢用这个实例,自己也用用)

a、写一个index页面


<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=/struts2HelloWorld/HelloReader.action">
	</head>

	<body>
		<h2>Loading ...</h2>
	</body>
</html>
META选项是自动跳转的意思。url请准确书写,

由于写错了url,一直出现资源不可用

b、由于是使用了strtus2框架,我们自然是希望拦截到这个访问请求,

由此配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/j2ee/dtds/web-app_3_0.dtd">
<web-app>
	
	<display-name>Struts Blank</display-name>
	<filter>
		<!--  添加filter-->
		<filter-name>
				struts2
		</filter-name>
		<filter-class>
				org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>
				struts2
		</filter-name>
		<url-pattern>
				/*
		</url-pattern>
	</filter-mapping>
	
</web-app>
注意版本号,尽管我还不知道版本到底有什么,对程序有什么影响,也不知道以前的错误是否跟版本号有关,最好改一下。

最后可能出现java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个错误,那么我们就需要将struts2-blank\lib下的jar包手工拷贝到应用名\WEB-INF\lib文件夹下面。

还有可能出现WARN No appenders could be found for logger (com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory).这样类似的警告,我把它忽略了。

c、拦截到请求之后,就需要配置struts.xml文件来定义action了

<span style="font-size:18px;"><!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	
    <package name="tutorial" extends="struts-default">
			<action name="HelloReader" class="tutorial.HelloReader">
					<result>
						/helloworld.jsp
					</result>
			</action>
    </package>

</struts>
</span>

注意修改struts.xml的版本号,版本号就是下载的struts2文件夹名后面的两个数字,我的是struts-2.3.16.1,那么改为2.3

其次出现的问题是提示我"struts-default",直接忽略,因为它是黄色叹号,这个警告有时有有时没有,不知道原因,或许是版本号吧(瞎猜的)

d、定义action处理类,

package tutorial;


import com.opensymphony.xwork2.ActionSupport;


public class HelloReader extends ActionSupport {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public static final String MESSAGE = "Hello Reader ! I'm from struts2!";
	
	public String execute() throws Exception{
		
			setMessage(MESSAGE);
			return SUCCESS;
	}
	
	public String getMessage() {
		return message;
	}


	public void setMessage(String message) {
		this.message = message;
	}


	//唯一的属性,将被自动赋值并打印
	private String message = "";
	
}
注意定义包名,使用默认包名,在action的class属性写的时候不知道怎么写,直接写类名会出错,我直接写了一个包名

e、定义跳转页面

<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
  <head>  
    <title>Hello World</title> 
  </head>
  
  <body>
    	<!-- 使用property标签来获取action中的属性,直接显示在页面中-->
    	<h2>
    			<s:property value="message"/>	
    	</h2>
  </body>
</html></span>
这个也有可能出现警告,说/struts-tags这个存在,也是有时有,有时没有,具体情况未知。

因为配置不好这些文件,也没法继续学下去,记录一下,也帮助一下其他人,随着深入的学习,上面的问题可能会一一解释清楚

想要了解上述过程的具体原理,页面的参数是怎么交个action的,可以参考:http://blog.csdn.net/havedream_one/article/details/45497779

穷几天之功,终于把它KO了

OK,接下来写一个登陆注册的小玩意,深入理解下,上午就结束了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值