创建struts2项目

clipboard.png

勾选生成web.xml文件

clipboard.png

配置项目

打开项目后,首先导入struts2所需的jar包,关于这个,我们可以在下载的struts包中struts-2.3.34/apps中找到struts2-blank.war文件,解压,

  • 进入src->找到lib文件夹, 将里面的jar文件全部复制到 我们创建的项目中 /WEB-INF/lib 中
  • 在java src中创建 struts.xml文件
  • 配置web.xml文件,配置Struts的核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <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>

构建项目

这里是做一个输入产品信息并显示在另一个页面上的功能

  • 创建action

实际就是创建一个处理业务逻辑的Java类,

package com.theodore.struts2;

public class Production {
    private int proId;
    private String proName;
    private String proDesc;
    private String proPrice;


    public Production(int proId, String proName, String proDesc, String proPrice) {
        this.proId = proId;
        this.proName = proName;
        this.proDesc = proDesc;
        this.proPrice = proPrice;
    }

    public Production() {
    }

    @Override
    public String toString() {
        return "Production{" +
                "proId=" + proId +"," + 
                    "proName=" + proName + "," +
                    "proDesc=" + proDesc + "," +
                    "proPrice=" + proPrice +
                "}";
    }

    public int getProId() {
        return proId;
    }

    public void setProId(int proId) {
        this.proId = proId;
    }

    public String getProName() {
        return proName;
    }

    public void setProName(String proName) {
        this.proName = proName;
    }

    public String getProDesc() {
        return proDesc;
    }

    public void setProDesc(String proDesc) {
        this.proDesc = proDesc;
    }

    public String getProPrice() {
        return proPrice;
    }

    public void setProPrice(String proPrice) {
        this.proPrice = proPrice;
    }

    public String save() {

        System.out.println("result:" + this);
        return "detail";
    }
}
  • 在struts.xml文档中配置这个action

其实质就是告诉页面如何使用这个action,具体配置如下:

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

<struts>

    <package name="helloworld" namespace="/" extends="struts-default">
        <action name="product-input">
            <result>/pages/input.jsp</result>
        </action>
        <action name="product-save" class="com.theodore.struts2.Production" method="save">
            <result name="detail">/pages/details.jsp</result>
        </action>
    </package>

</struts>
  • jsp页面
  • index.jsp
<a href="product-input.action">Product Input : </a>
  • input.jsp
<form action="product-save.action" method="post">
    ProductName: <input type="text" name="proName"><br/>
    ProductDesc: <input type="text" name="proDesc"><br/>
    ProductPrice: <input type="text" name="proPrice"><br>
    <input type="submit" value="确认"><br/>
</form>
  • detail.jsp
<body>
    ProductId: ${proId} <br><br>
    ProductName: ${proName} <br><br>
    ProductDesc: ${proDesc} <br><br>
    ProductPrice: ${proPrice} <br><br>
</body>

这里可以直接使用action中的变量名,因为struts2 中已经为我们配置好了对应关系。


TheodoreXu
54 声望6 粉丝

向着光的方向


引用和评论

0 条评论