标签的正确使用

2023-10-30

原文:http://book.csdn.net/bookfiles/502/10050217296.shtml

7.7  图片 标签
7.7.1  <html:img>标签
该标签对应HTML中的<img>元素,用于将图片嵌入到HTML页面中。<html:img>标签的src属性和page属性用来指定引用图片的地址。
使用src属性时,当src属性指定的是一个完整的URL时,如“http://localhost:8080/Log- on/img/logon.jpg”,引用的地址为:src的属性值;否则引用的地址为:协议+主机+端口+src的属性值;如:
<html:img src="/Logon/img/logon.jpg"/>
程序会在“http://localhost:8080/Logon/img/logon.jpg”地址下查找图片。
使用page属性(属性值应以“/”开头)引用的地址为:当前应用程序路径+page属性值。
如(假设当前应用为Logon):
<html:img page="/img/logon.jpg"/>
程序会在“http://localhost:8080/Logon/img/logon.jpg”地址下查找图片。
7.7.2  <html:image>标签
该标签对应HTML中的<input type="image">元素。<html:image>标签嵌入到<html:form>标签后成为表单的元素,并且通过单击该标签生成的图片可以提交表单。
<html:image>标签可通过page和src属性来指定引用图片的地址。这两个属性的用法与<html:img>标签中的page和src属性相同,读者可参看上一节中的讲解。
该标签不同于其他的表单元素标签。因为在提交表单后,<html:image>标签不象其他的表单元素以一对“参数名—值”的形式通过请求来传递参数,它是通过类似于下面的形式来传递参数的。
ImageName.x=100&ImageName.y=100
其中ImageName为<html:image>标签的property的属性值,x与y表示的是鼠标在该图片中单击的位置。所以在与该标签关联的ActionForm Bean中就不能像其他的表单元素那样简单的设置匹配的setXXX()和getXXX()方法。
文本框:
图7.15  使用标签
幸运的是,在ActionForm中可以嵌套另外一个JavaBean,并且Struts会像填充Action Form一样自动填充该JavaBean。下面通过一个实例向大家讲解如何使用<html:image>标签。
*  实例位置:mr/07/sl/09
实例运行结果如图7.15所示。
图中的“图片一”与“图片二”都被嵌套在一个表单中,单击任意图片后,都会提交表单,并且在图片下面会显示被选中图片的名称和鼠标在该图片中单击的位置。
下面为单击“图片二”提交表单后生成的请求。
http://localhost:8080/09/selectimg.do?imgbean_2.x=37&imgbean_2.y=27
实例程序创建过程如下(strutx-config.xml与web.xml文件的配置请参看光盘中的文件)。
(1)创建表单对应的ActionForm Bean:ImageForm。其关键代码如下。
例程7-9:光盘/mr/07/sl/09/src/com/image/actionform/ImageForm.java
package com.image.actionform;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
public class ImageForm extends ActionForm {
    private ImageBean imgbean_1=new ImageBean();  //对应<html:image property="imgbean_1">标签
    private ImageBean imgbean_2=new ImageBean();  //对应<html:image property="imgbean_2">标签
    public void setImgbean_1(ImageBean imgbean_1){
        this.imgbean_1=imgbean_1;
    }
    public ImageBean getImgbean_1(){
        return this.imgbean_1;
    }
    ……//省略了imgbean_2属性的setXXX()与getXXX()方法
    public String getChecked(){
        if(imgbean_1.isChecked()){
            return "Yes_1";
        }
        else if(imgbean_2.isChecked())
            return "Yes_2";
        else
            return "No_All";
    }
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        imgbean_1.reset();
        imgbean_2.reset();
    }
}
(2)创建嵌套在ImageForm中的JavaBean:ImageBean。其关键代码如下。
例程7-9:光盘/mr/07/sl/09/src/com/image/actionform/ImageBean.java
package com.image.actionform;
public class ImageBean {
    private String x;
    private String y;
    public ImageBean(){}
    public void setX(String x){
        this.x=x;
    }
    public String getX(){
        return this.x;
    }
    ……//省略了属性y的setY()与getY()方法
    public boolean isChecked(){
        if(this.x!=null&this.y!=null)
            return true;
        else
            return false;
    }
    public void reset(){
        this.x=null;
        this.y=null;
    }
}
(3)创建处理用户请求的Action类:ImageAction。其具体代码如下。
例程7-9:光盘/mr/07/sl/09/src/com/image/action/ImageAction.java
package com.image.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.image.actionform.ImageForm;
public class ImageAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response){
        HttpSession session=request.getSession();
        String mess="";
        ImageForm imgform=(ImageForm)form;
        if(imgform.getChecked().equals("Yes_1")){  //判断用户是否选择了"图片一"
            mess+="选中的图片按钮为:<b>图片一</b><br>";
            mess+="单击鼠标的位置为:X:"+imgform.getImgbean_1().getX()+
                      "&nbsp;&nbsp;"+"Y:"+imgform.getImgbean_1().getY();
            session.setAttribute("message",mess);
        }
        else if(imgform.getChecked().equals("Yes_2")){  //判断用户是否选择了“图片二”
            mess+="选中的图片按钮为:<b>图片二</b><br>";
            mess+="单击鼠标的位置为:X:"+imgform.getImgbean_2().getX()+
                      "&nbsp;&nbsp;"+"Y:"+imgform.getImgbean_2().getY();
            session.setAttribute("message",mess);
        }
        else{
            session.setAttribute("message","您没有选中图片按钮!");
        }
        return mapping.findForward("success");
    }
}
(4)创建index.jsp页面。该页面中包含以下关键代码。
例程7-9:光盘/mr/07/sl/09/index.jsp
<%
  String result=(String)session.getAttribute("message");
  if(result==null)
       result="请单击您要选择的图片!";
%>
  <html:form action="selectimg">
      <tr>
        <td align="center"><html:image property="imgbean_1" page="/img/pic_1.gif"/></td>
        <td align="center"><html:image property="imgbean_2" page="/img/pic_2.gif"/></td>
      </tr>
      <tr>
        <td align="center">图片一</td>
        <td align="center">图片二</td>
      </tr>
      <tr><td colspan="2"><%=result%></td></tr>
  </html:form>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标签的正确使用 的相关文章

  • 更改javascript nodejs中所有页面的href url

    我已经实现了具有多种语言下拉菜单的引导导航栏 当我选择语言时 它将翻译页面 如何更改其他页面的 url 和按钮文本 当我选择french 将所有网址更改为 fr about and fr contact 如何使用 JavaScript 进行
  • 如何保留用户的输入打印?

    我正在尝试添加用户的评论 所以我只是尝试读取输入并将其发送以进行打印 但问题是 一旦我刷新页面或输入另一个输入 打印的输入就会消失 因此 即使刷新页面或重新输入新评论 我也希望始终保持所有用户的显示 代码 div div
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • 使用其innerHTML查找元素

    请看一下这个 DOM 树 div div span Home1 span div span Home2 span span Home3 span div 现在假设我有一个场景 我以某种方式获得了第一个跨度的innerHTMLHome1 是否
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • 为什么不能用反斜杠结束原始字符串? [复制]

    这个问题在这里已经有答案了 我在这里很困惑 尽管原始字符串会转换每个 to 但是当这个 最后出现它会引发错误 gt gt gt r so m e te xt so m e te xt gt gt gt r so m e te xt Synt
  • 链接无效

    我正在尝试使用以下命令创建一组指向页面中特定部分的链接 a href 符号 但它似乎不起作用 点击链接似乎没有任何反应right click gt open in a new tab更改 url 但不会移动到页面的其他部分 我使用的是火狐浏
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是
  • 无法在“System.String”类型上的多个长度相等的构造函数之间进行选择

    尝试解析类型时出现以下错误 无法在 System String 类型上的多个长度相等的构造函数之间进行选择 注册组件时 使用UsingConstructor 配置方法显式选择构造函数 该类型有 1 个构造函数 该构造函数采用IReposit
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 浮动图像周围具有最小列宽的流动文本

    我想要一种方法来防止流动文本列变得太窄 例如 在一列 HTML 文本中 有一个图像浮动到左侧 正如预期的那样 文本沿着图像周围的列的右侧向下流动 但是 如果图像几乎与列一样宽 则文本最终会非常窄 在这种情况下 我希望文本简单地not流过图像
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 如何停止TinyMCE删除span标签?

    在我的工作中 前一位程序员决定使用公司网站上精彩的TinyMCE 我遇到的数千个问题之一是 如果原文有的话span标签 当我按下退格键删除一行 p仅标签 全部span标签已从文本中删除 这个错误比另一个错误更具体 我可以删除anything
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message

随机推荐

  • mysql判断日期写法

    mysql判断时间是否是当天 昨天 今天 select count 1 from sign detail where date format create time Y m d date format now Y m d and membe
  • 如何分辨NMOS和PMOS的电路符号

    这个是N沟道增强型MOS管的电路符号 这个是P沟道增强型MOS管的电路符号 有时我们很容易把这两个符号弄混 首先对于单个MOS管而言内部衬底和源极是接在一起的 所以我们看到的MOS管电路符号 源极和衬底是接在一起的 并且这个箭头处的电极为衬
  • 通过RS485进行modbus通讯协议

    一 协议介绍 普通串口挂载485芯片 使用modbus协议来传递信息 modbus 也有ASCII和 RTU之分 这是他们之间的区别 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII 冒号 CR LF LRC 低 直观 简单
  • 动态贝叶斯网络DBN

    贝叶斯网络 贝叶斯网络 Bayesian Networks 也被称为信念网络 Belif Networks 或者因果网络 Causal Networks 是描述数据变量之间依赖关系的一种图形模式 是一种用来进行推理的模型 贝叶斯网络为人们提
  • 【Android】RxJava+Retrofit+OKHttp3实现数据上传

    依赖引入 Gson implementation com squareup retrofit2 converter gson 2 1 0 OkHttp3 implementation com squareup okhttp3 okhttp
  • SQL语言---数据更新

    文章目录 前言 一 数据更新之插入数据 1 插入单个元组 1 语句格式 2 语法说明 INTO子句 VALUES子句 插入规则 3 举例讲解 例子1 例子2 易犯错误 2 插入子查询结果 1 语句格式 2 语法说明 INTO子句 与插入单条
  • 成功解决RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be

    错误代码 问题原因 这是由于Input type 与weight type的类型不符合 可以注意到Input type是没有cuda的 而weight type是在cuda上也就是有gpu的加载的 错误代码后的or可以不用管 解决办法 既然
  • DBA 面试题目

    from ITPUB more 技术方面 1 解释冷备份和热备份的不同点以及各自的优点 解答 热备份针对归档模式的数据库 在数据库仍旧处于工作状态时进行备份 而冷备份指在数据库关闭后 进行备份 适用于所有模式的数据库 热备份的优点在于当备份
  • c 语言超时溢出问题

    在嵌入式开发过程中 经常会遇到溢出问题 例如在使用软定时判断时间是否超时 如下 if timer ticks gt timeout timer ticks是一个无符号数 假如是一个无符号8位 当timer ticks为254 超时时间为2个
  • 【100%通过率 】【华为OD机试真题c++ 】最大平分数组【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个数组nums 可以将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 最大的平分组个数 输入描述 第一行输入 m 接着输入m个
  • awk与shell参数传递(或说变量传递)二三点

    awk与shell间参数 或说变量传递 是shell编程中常有的话题了 因为其中实际涉及到不少的知识点 比如包括 a 进程进通信 b awk参数形式 c shell命令解析 命令替换 等等 在此列举二三点例子 做为小结 以下主要分为二部分
  • 路由器工作原理

    定义 路由器 router 是互联网的枢纽 是连接英特网中各局域网 广域网的设备 它会根据信道的情况自动选择和设定路由 以最佳路径 按前后顺序发送数据 作用在OSI模型的第三层 提供了路由与转发两种重要机制 路由 路由器控制层面的工作 决定
  • 使用Python绘制余弦函数的可视化曲线

    使用Python绘制余弦函数的可视化曲线 余弦函数是一种重要的三角函数 其图像可以用来描述很多自然现象 在Python中 我们可以使用plot函数快速地绘制出余弦曲线的图像 首先 我们需要导入必要的库 import numpy as np
  • 如何在H264数据中获取PTS

    H264的ES原始数据一般是以NAL Network Abstract Layer 的格式存在 可以直接用于文件存储和网络传输 每一个NALU Network Abstract Layer Unit 数据 是由数据头 RBSP数据组成 首先
  • 计算1~100之间所有整数的和

    sum 0 for i in range 1 101 sum sum i print sum 5050 sum 0 i 1 while i lt 100 sum sum i i i 1 print sum 5050
  • 在VBA中写SQL语句的注意事项

    最近使用VBA连接MySQL数据库比较多 总结出一些书写方面的注意事项 分享出来 希望能给大家一些提示 同时也给自己做个备忘 1 单引号 双引号 在标准SQL语句中 字符串使用的是单引号 但是MySQL中 单引号和双引号都适用 平时使用时也
  • Python学习第七篇:sys标准库

    Python学习第七篇 sys标准库 活动地址 CSDN21天学习挑战赛 Python的sys模块提供访问由解释器使用或维护的变量的接口 并提供了一些函数用来和解释器进行交互 操控Python的运行时环境 要进行使用 直接导入即可 impo
  • Spring中ApplicationListener事件监听机制详解

    1 概述 Spring中事件监听 也有说法叫事件通知 机制 其实本质是观察者模式的应用 当某个事件发生时 其会被广播出去 监听该实践的listener就会被触发然后执行响应的动作 该模式可良好应用于程序解耦 类似消息的发布订阅 它的事件监听
  • 为什么绝对收敛级数具有可交换性+为什么一般项级数不能使用比较判别法/等价判别法?

    绝对收敛 可以认为是级数某种 本质上 是收敛的 即其正项和负项的和分别是收敛的 而条件收敛 往往是正项负项的和不收敛 因为在级数中的排列导致互相抵消 所以 看起来 收敛了 数列收敛 也就是数列的前N项和的极限存在 对于正项数列 在前N项改变
  • 标签的正确使用

    原文 http book csdn net bookfiles 502 10050217296 shtml 7 7 图片 标签 7 7 1