Struts2学习第二课 Struts2概述

Struts2是一个用来开发MVC应用程序的框架,它提供了Web应用程序开发过程中的一些常见问题飞解决方案:

-对来自用户的输入数据进行合法性验证

-统一的布局

-可扩展性

-国际化和本地化

-支持Ajax

-表单的重复提交

-文件的上传下载

Struts2和Struts1相比有哪些优势?

在体系结构方面更优秀

-类更少,更高效:在Struts2中无需使用"ActionForm"来封装请求参数

-扩展更容易:Struts2通过拦截器完成了框架的大部分工作,在Struts2中插入一个拦截器对象相当简便易行。

更容易测试:

即使不用浏览器也可以对基于Struts2的应用进行测试。

看代码:

package logan.struts.study;

public class Product {

    private Integer productId;
    private String productName;
    private String productDesc;

    private double productPrice;

    public Integer getProductId() {
        return productId;
    }

    public void setProductId(Integer productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductDesc() {
        return productDesc;
    }

    public void setProductDesc(String productDesc) {
        this.productDesc = productDesc;
    }

    public double getProductPrice() {
        return productPrice;
    }

    public void setProductPrice(double productPrice) {
        this.productPrice = productPrice;
    }

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

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:包,struts2使用package来组织模块
        name属性:必须,用于其他包引用当前包
        extends: 当前包继承哪个包,继承的,即可以继承其中的所有的配置,通常情况下继承struts-default-->
    <package name="helloWorld" extends="struts-default">
        <!-- 配置action:一个struts2的请求就是一个action -->
        <action name="product-input">
            <result>/WEB-INF/pages/input.jsp</result>
        </action>

    </package>

</struts>

web.xml

<?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">
  <display-name>Struts2-2</display-name>

  <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>

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

input.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</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>

details.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body>
        productId:${productId }
        <br><br>
        productName:${productName }
        <br><br>
        productDesc:${productDesc }
        <br><br>
        productPrice:${productPrice }
        <br><br>
</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body>
    <a href="product-input.action">Product Input</a>
</body>
</html>

在浏览器里面输入http://localhost:8080/Struts2-2/product-input.action

可以看到:

稍微改改代码:

package logan.struts.study;

public class Product {

    private Integer productId;
    private String productName;
    private String productDesc;

    private double productPrice;

    public Integer getProductId() {
        return productId;
    }

    public void setProductId(Integer productId) {
        this.productId = productId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductDesc() {
        return productDesc;
    }

    public void setProductDesc(String productDesc) {
        this.productDesc = productDesc;
    }

    public double getProductPrice() {
        return productPrice;
    }

    public void setProductPrice(double productPrice) {
        this.productPrice = productPrice;
    }

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

    public String save(){
        System.out.println("save: " + this);
        return "details";
    }
}

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:包,struts2使用package来组织模块
        name属性:必须,用于其他包引用当前包
        extends: 当前包继承哪个包,继承的,即可以继承其中的所有的配置,通常情况下继承struts-default-->
    <package name="helloWorld" 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="logan.struts.study.Product" method="save">
            <result name="details">/WEB-INF/pages/details.jsp</result>
        </action>

    </package>

</struts>

提交表单时:

可以看到实现了上次课的功能

这里需要搭建Struts2的开发环境

不需要显示的定义Filter,而是使用struts2的配置文件

details.jsp比前面变得更简单

${requestScope.product.productName} -> ${productName}

步骤:

I.由product-input.action 转到/WEB_INF/pages/input.jsp

在struts2中配置一个action

<action name="product-input">
    <result>/WEB-INF/pages/input.jsp</result>
</action>

II.由input.jsp页面的action:product-save.action到Product‘s save,再转到/WEB_INF/pages/details.jsp

<action name="product-save" class="logan.struts.study.Product" method="save">
    <result name="details">/WEB-INF/pages/details.jsp</result>
</action>

在Product中定义一个方法,而且返回值为details

时间: 2024-11-08 19:13:54

Struts2学习第二课 Struts2概述的相关文章

IOS学习第二课 UIAlertView和UIActionSheet

1    UIAlertView 类似于Android中的Dialog,简单用法如下: UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Messate" delegate:nil cancelButtonTitle:@"Cancle" otherButtonTitles:nil, nil]; [alertView show]; 2   U

安卓学习第二课——短信发送器

package com.example.message; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsManager; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;

Struts2学习之struts框架概述

Struts2是一个用来开发MVC应用程序的框架. 它提供了Web 应用程序开发过程中的一些常见问题的解决方案: Struts2 =Struts1 + WebWork    struts1和struts2没有本质的关系 Struts封装好的一些功能: 对页面导航活动进行管理 对来自用户的输入数据进行合法性验证 统一的布局 可扩展性 国际化和本地化 支持Ajax 表单的重复提交 Struts中,用action取代了servlet. 在Struts2API中,com包为webwork的,org开头的

Struts2学习第一天——struts2基本流程与配置

struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实现 ? 什么是struts2框架,它有什么用? Struts 2是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心 struts2=struts1+

[原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

注册表学习第二课

大家好,今天是注册表学习的第二课 好了,废话不多说了,我现在就来分享我的读书笔记吧 一.禁用菜单系统栏的属性 首先,按照HKEY_CURRENT_USER-software-microsoft-windows-currentversion -policies-explorer 新建一个DWORD值,命名为"NoSetTaskBar",将键值设为1 解释:修改这个注册表的用途就是,当我们点击系统栏的属性时,会出现如下提示 "本次操作由于这台电脑的限制而被取消,请与系统管理员联系

[原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Struts2学习第二天——获取参数与数据校验

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.14 lutianfei none struts2中获取请求参数 在struts2中action是什么?(struts2是一个mvc框架) View : jsp Model : action Control : action & StrutsPrepareAndExecuteFilter 1.属性驱动 1.直接将action做一个model(类似bean结构),就可以得到请求参数. 问题1:action封装请求参

[原创]java WEB学习笔记70:Struts2 学习之路-- struts2拦截器源码分析,运行流程

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------