加载中…
正文 字体大小:

经验分享:IntelliJ IDEA 10.x中配置支持Struts 2的HelloWorld样例

(2011-06-02 16:03:41)
标签:

idea

10

struts

2

mvc

helloworld

分类: ITSpace

JetBrains的IntelliJ IDEA是一款非常优秀的开发工具,功能强大,插件丰富,而且占用资源少,本例使用的是IDEA 10.5。

1.打开IDEA,在“Quick Strat”中选择“Create New Project”(也可以在File菜单中选择),并选择“Create project form scratch”,然后点击“Next”如下图的向导:

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
输入项目名称,点击两次“Next”按钮,直到出现以下的项目支出属性配置:

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
选择“Web Application”,并选择“Struts 2”,默认是下载struts 2.2.1.1的7个核心库,并会复制到项目的lib目录中,本例选择自己配置已经下载好的struts 2的lib库,就是选择“Use library”,然后点击“Create”(第一次配置Struts库时需要新建,以后可以复用),如下面两张图所示:经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
选择8个核心文件,

struts2-core-2.2.1.1.jar

freemarker-2.3.16.jar

xwork-core-2.2.1.1.jar

ognl-3.0.jar

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

commons-logging-1.0.4.jar(可选)

javassist-3.7.ga.jar(这个文件需要从struts目录下的apps中的struts2-blank.war中解开,应该是2.2.1.1版本的小bug,而2.2.1.1中的样本程序都包含这个文件)

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例


这样,就自动创建了一个名称为“struts2-2.2.1.1”的库,点击“Finish”按钮,
经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
展开项目可以看到自动生成的struts.xml文件和关联的struts库文件,如下图所示:

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例


2.先创建一个Model类来存放welcome message,

首先,在src目录上鼠标右击,选择“New”-> “Java Class”并在对话框中输入名字“helloworld.model.MessageStore”,点击“OK”

 经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
在编辑的代码框中将这个MessageStore.java的内容修改为:

package 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; }
}
这个Model类的public set和get方法允许访问private message字符串属性,Struts 2框架需要将这个对象按照JavaBean方式暴露给View(HelloWorld.jsp)。

 

3.下面来创建View页面来显示Model类里存储的message,

在web目录上鼠标右击,选择“New”-> “File”并在对话框中输入名字“HelloWorld.jsp”,点击“OK”新建一个HelloWorld.jsp的jsp页面,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
具体代码为,

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ 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=ISO-8859-1">
<title>Hello World!</title>
</head>
<body>
    <h2><s:property value="messageStore.message" /></h2>
</body>
</html>

页面中的taglib告诉Servlet容器这个页面将使用Struts 2的tags并且将它们用s来表示。 

s:property的tag标签返回调用HelloWorldAction controller class的getMessageStore方法后的值。这个方法返回一个MessageStore对象。在messageStore加上了.message后,就可以告诉Struts 2框架将调用MessageStore的getMessage方法。MessageStore的getMessage方法返回一个字符串,然后这个字符串将被s:property标签显示。

 

4.下面来创建一个Action类HelloWorldAction.java作为Controller,

在src目录上鼠标右击,选择“New”->“Java Class”并在对话框中输入名字“helloworld.controller.HelloWorldAction”,点击“OK”

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
在编辑的代码框中将这个HelloWorldAction.java的内容修改为:

package helloworld.controller;

import 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;
 }

}

然后保存。

 

4.增加struts配置到struts.xml文件中

建立映射关系,将HelloWorldAction类(Controller)和HelloWorld.jsp(View)映射在一起。映射后,Struts 2框架就能够知道哪个类将响应用户的action(the URL),这个类的哪个方法将被调用,哪个View能够得到这个方法的返回String结果。

编辑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="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
    <result name="success">/HelloWorld.jsp</result>
  </action>

</package>

</struts>

然后保存。 

 

5.创建Action URL的index.jsp

首先在jsp页面顶部增加taglib说明<%@ taglib prefix="s" uri="/struts-tags" %>,然后在h1标签后增加p标签<p><a href="<s:url action='hello'/>">Hello World</a></p>。index.jsp代码为:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ 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=ISO-8859-1">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
</body>
</html>

然后保存。

 

Struts的url标签创建带有hello action的URL。hello action被映射到HelloWorldAction类和方法上。当用户点击URL,将会触发Struts 2框架运行HelloWorldAction类的方法。然后这个方法返回一个代表成功的字符串,View页面HelloWorld.jsp将被展示出来。

 

6.(一点遗留的问题)本例曾尝试将Struts的核心库的jar包路径加到Tomcat的bin目录下的catalina.ini文件中的“set CLASSPATH=”中以使Tomcat支持Struts,但启动Tomcat是,本例应用的filter启动失败。

所以,本例在web项目中的WEB-INF下创建lib目录,并将Struts的核心库的jar包复制到该目录下。

 

7.启动本地测试,本例将使用Tomcat服务器来测试。

首先为本项目配置Tomcat服务器,选中项目“StrutsSample”,在菜单中选择“Run”->“Edit Configurations”,如果点击“Add”配置一个新的Tomcat服务器:

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
选择Tomcat的目录,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
点击“OK”保存配置,然后右击“Tomcat Server”->“Add New Configuration”,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
选择“Local”,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
并输入项目名称,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
点击“OK”保存配置。

在工具栏中的运行配置中选择刚才新建的服务器配置,然后点击右边的绿色三角运行按钮,启动Tomcat进行测试,启动后查看idea开发工具右下角的输出信息是否有报错。

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例

8.页面测试查看效果

右键点击index.jsp在弹出菜单中选择“Open in Browser”打开index.jsp页面,如下图:
经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
点击“Hello World”链接,

经验分享:IntelliJ <wbr>IDEA <wbr>10.x中配置支持Struts <wbr>2的HelloWorld样例
测试完毕。

 

以上是在IDEA工具中按照Struts 2中的getting start中的HelloWorld样例,参考链接如下:

http://struts.apache.org/2.2.3/docs/hello-world-using-struts-2.html
Struts的HelloWorld样例网上有很多,不过本例是严格按照Struts 2的MVC结构构造的。

 

(完)





 

0

阅读 评论 收藏 禁止转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有