zoukankan      html  css  js  c++  java
  • 十五、MVC的WEB框架(Structs2)

    一、Structs标签

    与JSTL标签库类似,Structs2也有专属标签库

    常见的标签有:from,iterator,check,radio,select

    1、form标签

    用于提交数据

    <%@page isElIgnored="false"%>
    <%@ taglib prefix="s" uri="/structs-tags"%>
    <html>
        <body>
            <s:form action="addProduct">
                <s:textfield name="product.name" lable="product name"/>
                <s:submit value="Submit"/>
            </s:form>
        </body>
    </html>

    通过浏览器可以查看源码,structs2里的form标签被转化为了table

    <form id="addProduct" name="addProduct" action="addProduct.action" method="post">
        <table>
            <tr>
                <td>
                    <label for="addProduct_product_name" class="label">product name:</label>
                </td>
                <td>
                    <input type="text" name="product.name" value="" id="addProduct_product_name"/>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <div align="right"><input type="submit" value="Submit"/></div>
                </td>
            </tr>
        </table>
    </form>

    2、iterator标签

    与JSTL标签库里的<c:forEach>类似,structs的<s:iterator>用于遍历一个集合中的数据

    2.1、首先给ProductAction增加list方法。

    import java.util.List;
     
    import com.demo.Model.Product;
     
    public class ProductAction {
        private Product product;
        private List<Product> products;//增加products属性,类型List
             //属性的getter/setter方法
        public List<Product> getProducts() {
            return products;
        }
     
        public void setProducts(List<Product> products) {
            this.products = products;
        }
     
        public String show() {
            product = new Product();
            product.setName("iphone7");
            return "show";
        }
     
        public String add() {
            return "show";
        }
             //list()方法,为products添加3个product对象,然后返回list
        public String list() {
     
            products=new ArrayList();
     
            Product p1 = new Product();
            p1.setId(1);
            p1.setName("product1");
            Product p2 = new Product();
            p2.setId(2);
            p2.setName("product2");
            Product p3 = new Product();
            p3.setId(3);
            p3.setName("product3");
     
            products.add(p1);
            products.add(p2);
            products.add(p3);
     
            return "list";
     
        }
     
        public Product getProduct() {
            return product;
        }
     
        public void setProduct(Product product) {
            this.product = product;
        }
    }

    2.2、重新配置structs.xml

     配置路径listProduct,然后返回list.jsp

    <action name="listProduct" class="com.demo.action.ProductAction" method="list">
        <result name="list">list.jsp</result>
    </action>

    2.3、编写list.jsp

    使用是s:iterator标签进行遍历

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isELIgnored="false"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@page isELIgnored="false"%>
    <style>
    table {
        border-collapse: collapse;
    }
    td {
        border: 1px solid gray;
    }
    </style>
    
    <table align="center">
        <tr>
            <td>id</td>
            <td>name</td>
            <td>st.index</td>
            <td>st.count</td>
            <td>st.first</td>
            <td>st.last</td>
            <td>st.odd</td>
            <td>st.even</td>
    
        </tr>
        <!--var:表示遍历出来的元素,st:表示遍历出来的元素状态-->
        <s:iterator value="products" var="p" status="st">
            <tr>
                <td>${p.id}</td>
                <td>${p.name}</td>
                <!--当前行号从0开始-->
                <td>${st.index}</td>
                <!--当前行号从1开始-->
                <td>${st.count}</td>
                <!--是否是第一个元素-->
                <td>${st.first}</td>
                <!--是否是最后一个元素-->
                <td>${st.last}</td>
                <!--是否是奇数-->
                <td>${st.odd}</td>
                <!--是否是偶数-->
                <td>${st.even}</td>
            </tr>
        </s:iterator>
    
    </table>

    3、check标签

    类似于checkbox标签,用于勾选的

    3.1、给ProductAction增加一个ListSelectdProducts属性

    package com.demo.action;
     
    import java.util.ArrayList;
    import java.util.List;
    
    import com.demo.Model.Product;
     
    public class ProductAction {
        private Product product;
        
        private List<Product> products;
        private List<Integer> selectedProducts;//增加选中属性,为了使用structs的check标签
        //属性的setter/getter方法
        public List<Integer> getSelectedProducts() {
            return selectedProducts;
        }
    
        public void setSelectedProducts(List<Integer> selectedProducts) {
            this.selectedProducts = selectedProducts;
        }    
     
        public List<Product> getProducts() {
            return products;
        }
     
        public void setProducts(List<Product> products) {
            this.products = products;
        }
     
        public String show() {
            product = new Product();
            product.setName("iphone7");
            return "show";
        }
     
        public String add() {
            return "show";
        }
     
        public String list() {
     
            products=new ArrayList();
            selectedProducts = new ArrayList();
     
            Product p1 = new Product();
            p1.setId(1);
            p1.setName("product1");
            Product p2 = new Product();
            p2.setId(2);
            p2.setName("product2");
            Product p3 = new Product();
            p3.setId(3);
      
            p3.setName("product3");
     
            products.add(p1);
            products.add(p2);
            products.add(p3);
            
            selectedProducts.add(2);
            selectedProducts.add(3);
     
            return "list";
     
        }
     
        public Product getProduct() {
            return product;
        }
     
        public void setProduct(Product product) {
            this.product = product;
        }
    }

    4、使用s:checkboxlist标签

    <s:checkboxlist value="selectedProducts" name="product.id" list="products" listValue="name" listKey="id"/>
    <!--在s:checkoxlist标签中,value是指定那些被选中,name:是提交到服务端用的名称list:用于遍历的集合,listValue显示和checkbox的名称,listKey用来存checkbox的value-->

    5、使用s:radio标签

    类似html的radio标签。

    <s:radio name="product.id" value="2" list="products" listValue="name"
        listKey="id" />
    <!--value用来表示哪一项被选中,name用来表示提交到服务端用的名称,list用来表示遍历的集合,listValue用来显示radio的名称,listKey用来存储radio的value-->

    6、使用s:select标签

    <s:select label="products"
           name="product.id"
           list="products"
           listKey="id"
           listValue="name"
           multiple="true"
           size="3"
           value="selectedProducts"
    />
    <!--name表示提交到服务端用的名称,list用于遍历的集合,listKey用来存每个option选项的value,listValue用来显示名称,multiple值为true时表示可以选中多行,size=3表示默认显示3行,value用来表示哪些被选中-->
  • 相关阅读:
    腾讯电脑管家创始刘钊:教你如何手撕破解一个木马
    【渗透笔记】拿下复旦大学的艰难过程
    新博客在SEO方面需要注意哪几点?
    【渗透课程】第七篇-上传漏洞之绕过上传漏洞
    【渗透课程】第八篇-上传漏洞之文本编辑器上传
    【渗透课程】第六篇-上传漏洞之解析漏洞
    【渗透课程】第五篇-SQL注入的原理
    【渗透课程】第四篇-Web安全之信息探测
    【渗透课程】第三篇-体验http协议的应用
    三星的高效会议原则
  • 原文地址:https://www.cnblogs.com/drq1/p/8572122.html
Copyright © 2011-2022 走看看