第一个struts2服务

来源:互联网 发布:c语言课程视频 编辑:程序博客网 时间:2024/06/08 20:04
(1)在struts.xml的<struts>中添加一项http请求的处理方法:
<package name="strutstest" namespace="/test" extends="struts-default">
    <action name="helloworld" class="strutstest.action.HelloWorldAction" method="execute">
        <result name="success">/WEB-INF/page/hello.jsp</result>
    </action>
</package>
其中,<package>里面可以存放一系列action,name随便起,只要能体现这一系列action的功能即可。作用和java中的package差不多,就是聚集功能类似的action的。
Namespace 影响着url请求路径,之后会提到。
extends="struts-default"一定要有,这里struts-default也是一个包,在struts中的一个jar包中,可以被继承。同样的,我们定义的 strutstest 包也可以被其他的包继承。
<action>是一个动作,name 影响着url请求路径。Class和method指出了url请求之后会调用的类名和函数名。
<result>决定了返回页面。一个<action>可以有多个<result>,不同的<result>有不同的name,哪个name与调用的函数 execute() 的返回值相同,哪个<result>就有效。/WEB-INF/page/hello.jsp表示返回页面的地址。
以上的意思,就是当在浏览器中输入
http://localhost/test/helloworld.action
服务器便调用HelloWorldAction类中execute()中的函数,并且返回hello.jsp页面(前提是函数返回值是”success”)。
其中,/test是namespace值,helloworld是action的name值。如果Tomcat配置文件中<Host>中的path值不为空,则还需要插入path值,为:
http://localhost/${path}/test/helloworld.action
下面只需再创建HelloWorldAction.execute()和hello.jsp。
(2)在src中建立包和类:

其中类的内容如下:
package strutstest.action;
public class HelloWorldAction {
    private String message;
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String execute(){
        message = "hello";
        return "success";
    }
}
其中,我们打算将execute()方法作为struts截获的方法,返回类型必须是String。
(3)新建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>Insert title here</title>
</head>
<body>
${message }
</body>
</html>

其中,页面会显示${message },即message的值,即 hello。
注意,这里面的message,不是指的类里面的私有变量message,而是指的函数getMessage()的返回值。也就是说,对应的是get后面的Message,并且M与第二个字母e的大小写格式保持一致。即使将私有变量改名为msg,只要getMessage()函数名不变,则${message }的值便不变。
原创粉丝点击