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 commons-lang3-3.1.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 方法。
上一篇: 理解依赖注入和控制反转
下一篇: 算法 (对象的理解)