超简单的页面,就是一个欢迎页面,对于老手来讲,能够飘过去了。html
刚接触struts2,就一个欢迎页面就没有整明白。java
出现了错误问题。先是在Ubuntu上本身写,不借助IDE,结果将所须要的文件都放在指定的目录下,结果不能出来效果。而后就下载了myeclipse,借助IDE,结果仍是调试不经过。最后愤而转Win。web
一、jdk,tomcat安装好后,测试tomcat成功。apache
http://localhost:8080/编程
出现Apache页面浏览器
二、下载struts2tomcat
下载的版本是struts-2.3.16.1,app
而后将apps下的struts2-blank放到tomcat的webapps下框架
浏览器输入http://localhost:8080/struts2-blankeclipse
而后就能够看到效果。也就是说其实struts2是不须要配置的相似环境变量的,因为出现不少问题,我就觉得struts2还须要什么配置环境变量之类的。
如今也就理解了struts2更应该说是一个编程模型,而不是一个tomcat,myeclipse这样的工具,也就存在什么配置环境变量了。
三、在myeclipse的项目中导入struts2的jar包,听java培训机构李刚老师的视频说,不要一股脑的将struts2的lib下的全部的jar包都导入,会有问题。我也不知道之前出现的问题是否是跟这个有关。将struts2-blank\lib下的jar包导入到项目的路径中。具体步骤,右击项目->Build Path->Add libraries,选择user library,next,或者新建或者使用已经建好的,若是第一次配置就须要新建了,点击user library,而后选择new ,而后选择struts2-blank\lib下面的包。这样至少接下来的编译是没问题了
四、制做一个页面,访问时出现“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这个存在,也是有时有,有时没有,具体状况未知。由于配置很差这些文件,也无法继续学下去,记录一下,也帮助一下其余人,随着深刻的学习,上面的问题可能会一一解释清楚