zoukankan      html  css  js  c++  java
  • 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包,听java培训机构李刚老师的视频说,不要一股脑的将struts2的lib下的所有的jar包都导入,会有问题。我也不知道以前出现的问题是不是跟这个有关。将struts2-blanklib下的jar包导入到项目的路径中。具体步骤,右击项目->Build Path->Add libraries,选择user library,next,或者新建或者使用已经建好的,如果第一次配置就需要新建了,点击user library,然后选择new ,然后选择struts2-blanklib下面的包。这样至少接下来的编译是没问题了

    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-blanklib下的jar包手工拷贝到应用名WEB-INFlib文件夹下面。

    还有可能出现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这个存在,也是有时有,有时没有,具体情况未知。
    因为配置不好这些文件,也没法继续学下去,记录一下,也帮助一下其他人,随着深入的学习,上面的问题可能会一一解释清楚

  • 相关阅读:
    2014年广州区域赛k题解
    2014年广州区域赛e题解
    2014年广州区域赛i题解
    最大化平均值问题
    codeforces 976e 题解
    maven
    机器学习入门
    拟合
    插值
    熵权法
  • 原文地址:https://www.cnblogs.com/gojava/p/4479630.html
Copyright © 2011-2022 走看看