软件152 苏锐
现在以Struts2的方式来做一个Hello,world的实例程序。创建这样一个程序,至少需要下面这些元素:
1. 创建一个Action类:HelloAction.java
2. 创建一个jsp页面:hello.jsp
3. 配置struts.xml
首先先来创建一个Action,Struts2的Action可以是一个简单的JavaBean(包含一些属性并有get和set方法):
1: package com.kay.action;
2:
3: public class HelloAction {
4:
5: //属性
6: private String userName;
7: private String userPwd;
8:
9: //属性的get和set方法
10: public String getUserName() {
11: return userName;
12: }
13: public void setUserName(String userName) {
14: this.userName = userName;
15: }
16: public String getUserPwd() {
17: return userPwd;
18: }
19: public void setUserPwd(String userPwd) {
20: this.userPwd = userPwd;
21: }
22:
23: /**
24: * Struts2中Action执行的方法
25: * @return result code
26: * @throws Exception
27: */
28: public String execute()throws Exception{
29: userName = "Kay";
30: return "success";
31: }
32: }
从上面的Action中看出,就是在JavaBean中放入一个execute方法,在该方法中给属性userName赋值并返回了一个“success”字符串。
下面再来创建显示页面hello.jsp:
1: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3: <html>
4: <head>
5: <title>hello.jsp</title>
6: </head>
7: <body>
8: 欢迎你!${userName } <br>
9: </body>
10: </html>
这个页面中使用EL表达式来显示用户名。
有了Action和jsp页面,那么让它们之间产生关系的就是struts.xml配置文件,首先需要在struts.xml配置文件中引入struts2.1的dtd,这段代码可以在引入的struts-core-2.1.6.jar中的struts-2.1.dtd文件中可以找到:
1: <!DOCTYPE struts PUBLIC
2: "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
3: "http://struts.apache.org/dtds/struts-2.1.dtd">
然后在struts.xml中配置Action:
1: <?xml version="1.0" encoding="UTF-8"?>
2: <!DOCTYPE struts PUBLIC
3: "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
4: "http://struts.apache.org/dtds/struts-2.1.dtd">
5: <struts>
6: <package name="helloWorld" extends="struts-default">
7: <!-- action节点配置Action
8: name:请求的Action名称
9: class:对应的Action类
10: -->
11: <action name="hello" class="com.kay.action.HelloAction">
12: <!-- 根据返回的字符串指定跳转到相应的页面 -->
13: <result name="success">/hello.jsp</result>
14: </action>
15: </package>
16: </struts>
在上面的配置文件中,需要重点关心的是action节点,name属性对应了一会要在浏览器中请求的action的名称,class属性则是请求的action的完全限定名称,action节点中还有result子节点,该子节点中的name属性对应Action中execute方法返回的字符串,节点内容则是跳转到相应页面的路径。
到这里,helloworld实例的全部代码就完成了,需要在浏览器中测试代码的运行结果,在浏览器中输入http://localhost:8080/s2/hello.action,会出现以下结果:
需要注意的是在Struts2中Action默认的后缀名为.action,也可以在配置文件中更改此默认的后缀名,这个后面会提到。
到这个实例结束,web工程的截图应如下所示: