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

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

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

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

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

:8080/

出现Apache页面

2、下载struts2

下载的版本是struts-2.3.16.1,

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

浏览器输入: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" ""><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"""><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的,可以参考:

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

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

青春一经典当即永不再赎

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

相关文章:

你感兴趣的文章:

标签云: