struts2开发环境筹建helloworld

struts2开发环境搭建helloworld

        综合比较了java的一些MVC开源框架,觉得目前为止,struts2是一个很不错的框架!学习一门新的技术从helloworld开始。这个也不例外。

 

一:首先新建一个web工程,将struts2需要的jar包拷贝到WEB-INF\lib中,jar包列表如下:

 

commons-fileupload-X.X.X.jar 
commons-io-X.X.X.jar 
commons-logging-X.X.X.jar 
commons-logging-api.X.X.jar 
freemarker-X.X.X.jar 
ognl-X.X.X.jar 
struts2-core-X.X.X.X.jar 
xwork-core-X.X.X.jar 
javassist-3.7.ga.jar (new for Struts versions 2.2.1 and higher) 
log4j-1.2.14.jar

 

二:在web.xml加入struts2的过滤器

 

 <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>

 

三:创建struts.xml

 

     struts2可以通过xml文件或者标注的方式来指定url,java对象和页面直接的关系。struts.xml放在src文件夹下面。下面是一个简单的配置:

   

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.devMode" value="true" />

	<package name="basicstruts2" extends="struts-default">

		<action name="index">
			<result>/index.jsp</result>
		</action>

	</package>

</struts>

 

四:开始helloworld

  1)新建模型类:

 

 

package com.cmj.struts2.helloworld.model;

public class MessageStore {
	private String message;

	public MessageStore() {

		setMessage("Hello Struts User");
	}

	public String getMessage() {

		return message;
	}

	public void setMessage(String message) {

		this.message = message;
	}

}

 

2)新建action类

 

 package com.cmj.struts2.helloworld.action;

import com.cmj.struts2.helloworld.model.MessageStore;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {
	private static final long serialVersionUID = 1L;

	private MessageStore messageStore;

	public String execute() throws Exception {

		messageStore = new MessageStore();
		return SUCCESS;
	}

	public MessageStore getMessageStore() {
		return messageStore;
	}

	public void setMessageStore(MessageStore messageStore) {
		this.messageStore = messageStore;
	}

}

 

3)struts.xml中增加配置

 

  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <constant name="struts.devMode" value="true" />

  <package name="basicstruts2" extends="struts-default">

  <action name="index">
    <result>/index.jsp</result>
  </action>
		
  <action name="hello" class="com.cmj.struts2.helloworld.action.HelloWorldAction" method="execute">
    <result name="success">/HelloWorld.jsp</result>
  </action>

</package>

</struts>

 

4)页面取值

 

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>Hello World!</title>
</head>
<body>
    <h2><s:property value="messageStore.message" /></h2>
</body>
</html>

 

好了,在页面上http://127.0.0.1:8080/struts223/hello.action就可以看到结果了。struts2的helloworld结束了,简单吧。

 

 

 

总结:

下面说说整个的一个流程:
 struts2调用流程
A:在浏览器上输入url后,会通过web.xml中配置的过滤器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。
B:struts2会根据hello.action来寻找对应的HelloWorldAction类,然后框架实例化并调用HelloWorldAction的excute方法。
C:excute方法创建MessageStore 对象,并返回SUCCESS,根据整个SUCCESS来寻找对应的页面资源HelloWorld.jsp。
D:在HelloWorld.jsp中<s:property value="messageStore.message" />表示调用HelloWorldAction的getMessageStore 方法,然后调用
MessageStore 的 getMessage 方法。