Struts是一个经典的Java Web开发框架。现在我们编写一个简易的helloworld界面。
Struts的环境搭建比较简单,加载相应的jar包即可。
我这里的开发环境是windows7 + Myeclipse10.0
Struts2采用的是2.2.1.1版本
1.加载Struts2的必备jar包,我这里是6个,还有另外的两个jar文件。
这六个分别是:
1.commons_fileupload-1.2.1.jar
2.commons-io_1.3.2.jar
3.commons-logging-1.0.4.jar
4.ognl-3.0.jar
5.struts2-core-2.2.1.1.jar
6.xwork-core-2.2.1.1.jar
此外,还需要freemarker-2.3.16.jar以及javassist-3.7.ga.jar文件
2.编辑web.xml文件
内容为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>
这个xml文档不需要验证,即使上面的网址失效也无妨。
3.在src目录下创建struts.xml文件,内容为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="struts2" extends="struts-default">
<action name="helloworld" class="com.test.action.HelloWorldAction">
<result name="success">/helloworld.jsp</result>
</action>
</package>
</struts>
这个xml文档是最关键的配置部分。而且需要DTD验证,所以必须保证上面的dtd文件是可用的。
4.创建一个package为com.test.action,创建class为HelloWorldAction。
该class的定义为:
package com.test.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception
{
return SUCCESS;
}
}
这里比较简单,我们也可以不继承ActionSupport类,只要这个类具备execute函数即可。
5.创建一个jsp文件,为helloworld.jsp
内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>我的第一个Struts界面</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
现在我们把程序部署到tomcat上,然后启动server,在浏览器中访问:
http://localhost:8080/struts2/helloworld 注意我的项目名称是struts2
就可以看到加粗后的helloworld。
下面分析访问helloworld页面的流程。
1.首先web.xml中,我们为所有的url都配置了一个分配器,所以当我们输入上面的网址时,server接收到的是/helloworld。
2.到了关键的地方,我们看
<action name="helloworld" class="com.test.action.HelloWorldAction">
<result name="success">/helloworld.jsp</result>
</action>
他的意思是,对于helloworld,我们去执行HelloWorldAction这个类的execute方法。
如果返回结果为success,那么执行helloworld.jsp页面。
于是我们在浏览器中就看到了helloworld页面。