Struts2入门(二 )_struts2_helloword实例

本文详细介绍了Struts2框架的开发环境配置、web-project结构搭建、核心文件代码及其内部说明,包括如何配置开发环境、创建工程、下载与整合Struts2包、设置web.xml文件、配置Struts.xml文件等步骤,并提供了关键源码示例。通过实践案例,深入理解Struts2框架的工作原理与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts2_helloword实例

  • 本文结构:
    • struts2开发环境配置
    • web-project 结构
    • 全部文件代码及内部说明
    • 总结

struts2环境配置

  • 新建一个web-project工程sturts2_3
  • 下载最新版本struts2包 struts-2.3.20-all.zip 解压缩
  • 把app/struts2-blank.war解压缩(这里使用的是一个空白的struts2框架)
  • 把struts-2.3.20-all\struts-2.3.20\apps\WEB-INF\lib里面的jar全部复制黏贴(ctrl+c /ctrl+v)到新建的sturts2_3的WEBRoot/WEB-INF/lib里面
  • 把apps\struts2-blank\WEB-INF 下面的web.xml文件中的Filter相关的信息复制到sturts2_3的WEBRoot/WEB-INF/web.xml里面(详细见后面源码)
  • 把apps\struts2-blank\WEB-INF\classes 下面的struts.xml复制黏贴到新建的struts2_3的src跟目录下并删除标签内的内容,需要自己根据工程文件配置,详细见后面的源码

    • 非必要配置:配置dtd文件 可以方便手动配置xml文件,配置之后会有提示信息 配置方法参考 :struts-2.0.dtd配置

工程及文件

这里写图片描述

源码及说明

  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name></display-name>
  <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>*action</url-pattern>
    </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

- index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
   输入PRODUCT:
  <a href="product_input.action">product_input</a>
  <br><br>
   显示PRODUCT:
  <a href="product_detail.action">product_input</a>


  <br><br>

    This is my JSP page. <br>
  </body>
</html>
  • detail.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'detail.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
  productId: ${ productId}
  <br><br>
   productName: ${ productName}
  <br><br>
   productPrice: ${productPrice}
  <br><br>

  </body>
</html>

- input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'input.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
   <form action="product_save.action" method="post">

   productName:<input type="text" name="productName"/> <br><br>
    productDesc:<input type="text" name="productDesc"/> <br><br>
     productPrice:<input type="text" name="productPrice"/> <br><br>

     <input type="submit" value="submit"/> <br><br>

     </form>



  </body>
</html>
  • struts.xml
<?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 属性必须 用于其他的包应用当前包 
集成一个包即可继承其中的所有配置 通常继承  struts-default-->

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

<!-- 配置action 一个struts2的请求就是一个action 
name对应一个 struts2请求名不包含扩展名-->
<action name="product_input">
<result>/WEB-INF/pages/input.jsp</result>
</action>
<action name="product_save" class="com.struts2.HelloWord" method="save">
<result>name ="detail">/WEB-INF/pages/detail.jsp</result>
</action>
</package>


</struts>
  • product.java
package com.struts2.HelloWord;

public class Product {

    private Integer productId;
    private String productName;

    private  String productDesc;
    private Double productPrice;

    public String save(){
        System.out.println(this);
        return"detail";
    }

    @Override
    public String toString() {
        return "Product [productId=" + productId + ", productName="
                + productName + ", productDesc=" + productDesc
                + ", productPrice=" + productPrice + "]";
    }

    public int getProductId() {
        return productId;
    }
    public void setProductId(int productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }
    public void setProductName(String productName) {
        this.productName = productName;
    }
    public Double getProductPrice() {
        return productPrice;
    }
    public void setProductPrice(Double productPrice) {
        this.productPrice = productPrice;
    }
    public String getProductDesc() {
        return productDesc;
    }
    public void setProductDesc(String productDesc) {
        this.productDesc = productDesc;
    }
}

Notes

  • action 代表一个 struts2 请求
  • Action类 能处理 struts2 请求的类
    • 属性名字必须与javabeans属性名相同规则
    • 属性类型可以是任意类型(基本数据类型之间自动转换) 必须有一个不带参数的构造器
    • struts2 会为没一个http请求创建一个Action实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值