基于Struts2的第一个web应用

主要写一个页面,访问时显HelloWorld、

1、新建一个类

类名HelloWorldAcion
具体如下:

package cn.itcast.action;

public class HelloWorldAction {
    private String message;
    
    public String getMessage() {
        return message;
    }

    public String execute() {
        message = "Hello World";
        return "success";
    }
}

个人理解:针对配置文件,当请求http://localhost:8080/Strut2Test/test/helloworld该url时,会调用该类里面的execute方法,且该execute方法只能是返回String。

2、新建view页面,即hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第一个Struts小应用</title>
</head>
<body>
${message}
</body>
</html>

个人理解:
在jsp文件使用el表达式${message},是通过反射机制调用了HelloWorldAction的getMessage()方法。message是属性~

3、配置struts.xlm
<package name="itcast" namespace="/test" extends="struts-default">
        <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute">
            <result name="success">/WEB-INF/page/hello.jsp</result>
        </action>
    </package>

struts.xlm配置中的包介绍

在Struts2框架中使用包来管理Action,包的作用和java中的类包是非常相似的,它用于管理一组业务功能相关的action。在实际应用中,要把一组业务功能相关的Action放在同一个包下。

配置包时必须指定name属性,该name属性值可以任意取名,但必须是唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上述例子的Action,访问路径为:/test/helloworld.action(http://localhost:8080/Strut2Test/test/helloworld
namespace属性可以不配置,对本例而言,如果不指定该属性,则默认的命名空间为“”空字符串。(http://localhost:8080/Strut2Test/helloworld

通常每个包都应该继承struts-default包,因为Struts2很多核心的功能都是通过拦截器来实现的。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承struts-default包才可以使用Struts2的黑心功能。struts-default.xml也是Struts2默认的配置文件。Struts2每次都会自动加载struts-default.xml文件。

包还可以通过abstract=“true”定义为抽象包,抽象包中不包含action。

推荐阅读更多精彩内容