使用IntelliJ IDEA 生成Struts2框架应用实例Hello World

使用IntelliJ IDEA 生成Struts2框架应用实例Hello World

当在Struts2的web应用程序中点击一个超链接或提交一个HTML表单时,会由控制器收集输入并发送一个叫Actions的Java类。

Action被执行后,Result会选择一个资源给出响应。

对于每个Struts2项目来的构建来说要有以下四个组件:

  1. Action 操作

创建一个动作类,包含完整的业务逻辑并控制用户、模型及视图间的交互。

  1. Interceptors 拦截器

这是控制器的一部分,可以根据需求创建拦截器,或者使用现有的拦截器

  1. View 视图

创建一个JSP与用户进行交互,获取输入并呈现最终信息

  1. Configuration Files 配置文件

创建配置文件来连接动作、视图以及控制器,这些文件分别是struts.xml,web.xml及Struts.properties

 

使用IntelliJ IDEA 生成Struts2框架的J2EE应用程序步骤如下:

第一步:

File->new->Project...

在弹出的对话框中选择Java Enterprise

第二步:

对生成的应用程序加入Struts2框架集成

Additional Libraries and Frameworks中选择Struts2,选择“Next”

第三步:

在完成第二步后在新的窗口中输入Project name

 

创建Action类

Action类它是Struts2应用程序的关键,通过它实现大部分业务逻辑。

 

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {
    private String name;

    @Override
    public String execute() throws Exception {
        return "success";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

Struts2框架会创建一个HelloWorldAction类对象,并调用execute方法来响应用户的动作。

 

创建视图

创建一个JSP来展现最终信息,当一个预先定义动作发生时空上页面将被Struts2框架调用,并且这个映像会定义到struts.xml文件里。

<
</html>

%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    Hello World,<s:property value="name"/>
</body>

taglib指令告知Servlet容器这个页面会使用Struts2标签,并且这些标签会被s放在前面,s:property标签显示Action类“name”属性的值,这个值是通过HelloWorldAction类的getName()方法返回的。

 

对index.jsp页面改造

<

有一个form表单,其中action定义为hello,action会通过struts.xml文件映射到HelloWorldAction类及其execute方法。

%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
    <title>Hello World From Sturuts2</title>
  </head>
  <body>
    <form action="hello">
      <%--@declare id="name"--%>
      <label for="name">请输入你的名字</label>
      <input type="text" name="name"/>
      <input type="submit" value="提交"/>
    </form>
  </body>
</html>

配置文件

需要一个映像把URL,HelloWorldAction类(模型)以及HelloWorld.jsp(视图)联系在一起。映像告知Struts2哪个类将响应用户的动作(URL),类的哪个方法会执行,以及基于方法所返回的字符串结果,会呈现怎么样的视图。

<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="helloworld" extends="struts-default">
        <action name="hello" class="com.xiaoxie.struts2.HelloWorldAction" method="execute">
            <result name="success">/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

 

helloworld数据包(package),在这个数据包中把Actions集合在一起。其中命名动作action名称为hello,并指定对应的Action处理类同时指定其执行方法名称为execute。在action中指定返回结果为success时会进入哪个页面进行显示结果。

web.xml文件,这个文件是Struts2任何请求的接入点。在web.xml中Struts2应用程序的接入口会定义为一个过滤器。

<

?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

在上面配置了所有的URL(/*)都会走到Struts2过滤器

注意:生成的<filter-class>中的类如果找不到一定要根据当前的Structs包中的类来对应加入,工具默认生成的可能不正确(有版本问题)

在WEB-INF下新增lib目录,并把struts2相关的jar包复制进去,复制进后一定要对选中的类右键选择Add Library

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章