八、《研磨struts2》第二章 Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始

2.5  开发中的一些小窍门

2.5.1  概述

通过以上内容的学习,应该基本了解了Struts2的开发流程,但是,有一些细节功能你并没有看到。比如,在struts.xml中,需要注册Action类的全类名,这个全类名是哪里来的?是完全手写的,还是拷贝的?怎么拷贝的?

大家都知道,好的操作方式不容易出错,而且开发效率也更高。因此,特别准备了这一小节的知识,在这里来讲述在HelloWorld中用到的一些细节配置和操作。

提示:这一节的内容并不影响编程的最后结果,只是帮助大家进行更合理的操作。让大家“看”起来更像个高手。

2.5.2  使用dtd来获得xml帮助

在前面把struts2-blank-2.1.8.1.war中的struts.xml拷贝到工程中的src过后,编辑struts.xml跟在记事本中一样,没有任何帮助,完全需要手工去写,元素有哪些子元素,元素有哪些属性全靠记忆,这是很糟糕的,如何才能让Eclipse为我们在配置这个xml的时候提供代码提示和相应的帮助呢?

先看看struts.xml的DOCTYPE引用,出现在根元素<struts>之前。

 

java代码:
  1. <!DOCTYPE struts PUBLIC  
  2.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  3.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

这个配置中:

  • "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"可以认为是Struts的dtd对应的id,包括组织名、项目名、版本、语种。
  • "http://struts.apache.org/dtds/struts-2.0.dtd"是这个dtd在网上发布的地址。

       如果Eclipse当前处于网络可用的状态,则eclipse会自动到最后一个参数处下载这个dtd,存在工作空间内,这样在编写xml的时候,Eclipse会有代码提示和相应帮助。包括:

  • 某个元素有哪些子元素。
  • 某个元素有哪些属性。
  • 如果某个属性如果其取值是有规定的枚举值,还可以把枚举选项都列出来。

比如,在给<struts>这个元素添加<package>子元素的时候,只需要打出左边的”<”,eclipse就会自动识别出,<struts>元素下面可以有<bean>、<constant>、<include>、<package>四种子元素(如下图),然后只需要选择package,就会生成对应的xml配置。

 

图2.22 xml文件编辑帮助—子元素

同样,在某个元素内部,多给出一个空格,或者按“Alt+?”也可以出现这个元素的所有属性,及其可选值。如下图所示:

图2.23 xml文件编辑帮助—属性

注意:要在如上图的位置按下“Alt+?”,必须有一个空格,否则不会给出提示。上图中的name属性左上角的黄色小球代表了name属性是<package>元素的必有属性,其他都是可选属性。

       在实际开发中,这样配置快而且出错的几率大大减小。但是,上面只限于读者的电脑可以联网的状态。如果不能联网怎么办呢?那就需要采取以下的方式来配置。

  • 首先找到struts2-core-2.1.8.1.jar,用winrar打开,在压缩包的根目录下就可以发现struts-2.0.dtd。在项目的根目录下建立一个文件夹叫dtd,把找到的struts-2.0.dtd拷贝到其中备用。
  • 找到eclipse的window菜单,打开首选项,找到其中的xml配置管理。【Window】->【Preferences】->【Web and XML】->【XML Catalog】

图2.24 XML Catalog管理图

  • 选择添加用户自定义项(User Specified Entries)。点击上图中的【Add】按钮,弹出以下页面。
  • 图2.25 添加dtd引用

    • 将dtd声明中的id拷贝到上图的Key文本框中,注意:不要两边的双引号,只需要拷贝“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”就可以,然后点击上图中Location后面的小文件夹图标,选择Workspace,然后弹出文件选择对话框。

    图2.26 选择dtd文件位置

    • 在上图中选择已经准备好的struts-2.0.dtd。点ok即可,然后一路OK即可。

           这样,在以后编写这个xml的时候,就不需要背元素有哪些子元素,元素有哪些属性以及那些属性的可选值了,完全靠eclipse的代码提示来搞定。

           不过要注意一点,不同版本的Eclipse,或是不同的Struts2的版本,上述的配置过程有可能不一样,可能导致配置过后,仍然没有代码提示,需要按照你实际使用的环境去调整,但是大多数情况下,上面的配置方式是好用的。

    2.5.3  在新建菜单中添加jsp

    在开发的时候,读者可能选择各种各样的透视图,这里以常见的【Java】透视图为例。

           要新建一个jsp的话,发现在包上点右键,选择new,下面并没有jsp的选项。如下图:

    图2.27 没配置过的透视图没有新建jsp

           这样一来,要想新建jsp,只能选择【Other】,在里面找jsp。每次都去Other里面找,非常麻烦。

           Eclipse的各个部分都是可以由用户自由配置的,新建菜单自然也不例外。

           选择透Window菜单的客户化定制透视图。【Window】->【Customize Perspective】,会弹出以下页面。

    图2.28 将jsp加入新添菜单

           在这里定制新建菜单的选项,在左边的窗口内单击Web这个选项,右边的窗口就会变成如上图几项,找到其中的JSP,选中,然后点击OK。

    这样一来,再在某个包上点右键,新建菜单就包含了JSP这一项了。就不用以后每次新建,都要去选择Other,然后再去找JSP了。

    2.5.4  获得Action的全类名

    在struts.xml中,需要配置Action的全类名来注册。那么,如何得到这个全类名呢?

    相信大部分朋友都会采用拷贝的方式,先在这个类中拷贝这个类的包定义,然后再拷贝这个类的类名,拼到一起放到struts.xml中,这样做既慢,又容易出错。

           可以在【Package Explorer】视图中,右击Action类,会发现【Copy Qualified Name】这一项,单击之后,会把这个类的全类名+.java拷贝到剪贴板里。如此操作上例中的Action类,会得到以下结果:cn.javass.hello.struts2impl.action.HelloWorldAction.java,这样在struts.xml中的对应位置按Ctrl+V,就可以把结果拷贝过去,然后把“.java”删掉就是这个类的全类名了。

           注意:【Copy Qualified Name】这个选项在【Package Explorer】等视图中才有,在【Navigator】视图中是没有的。

           这个方法并不是仅仅对Struts2有用,其余如:Servlet、Hibernate、Spring、DWR等,都可能需要在配置文件中配置某个类的全类名,都可以使用这个方法。

           可能有朋友还是会嫌【Copy Qualified Name】麻烦,笔者就算一个,因为还是需要去删除“.java”,在大量配置的时候比较麻烦。因此,笔者做了一个小小的Eclipse插件,可以直接拷贝类的全类名,也可以出现在【Package Explorer】中,如下图:

    图2.29 java私塾的copypath

           右击对应的类,找到【java私塾】,选择【我们的copypath】,就会把选定类的全类名拷贝到剪贴板里。

           在这里不去讨论eclipse插件的开发与安装,可以到Java私塾的网站http://www.javass.cn上下载copypath1_1.0.0.jar,放到自己的eclipse下对应的plugins目录下,重启eclipse即可。

    2.5.5  获得jspweb工程中的绝对路径

    在配置struts.xml的时候,也经常需要使用jsp在web工程中的绝对路径,比如result的配置:“<result name="toWelcome">/s2impl/welcome.jsp</result>”。该怎么样快速得到这个页面在工程中的绝对路径呢?

           可以在这个jsp文件上点击右键,选择properties,会弹出这个文件的属性页面,可以拷贝到这个jsp文件相对于web应用的根文件夹的绝对路径,如下图:

    图2.30 jsp的属性页面

           这样,就不必手写了,jsp的绝对位置会被拷贝到剪贴板里。

 

34、木材在家具制造中的应用 本文详细探讨了木材在家具制造中的应用,从木材的选择、加工技术到设计创新和表面处理等方面进行了全面解析,并结合实际案例分析木材家具的市场趋势与未来发展。文章强调了木材家具在功能性、智能化和环保性方面的潜力,展示了其在现代家居生活中的重要地位。 阅读详情

相关推荐

Unreal Engine开发:角色动画与状态机_动画混合:通过混合节点实现平滑动画过渡

动画混合是提升游戏动画质量的关键技术之一。Unreal Engine提供了多种混合节点,包括BlendSpace1D、Blend Two By Bool、Blend Two By Alpha和Sequencer,每种节点适用于不同的场景。通过合理使用这些节点,可以实现平滑、自然且高效的动画过渡效果。此外,遵循最佳实践和高级应用技巧,可以进一步优化动画质量和性能。希望本节内容对你在Unreal Engine中实现动画混合有所帮助,使你的游戏角色动作更加流畅和自然。

chenlz2007的博客 1222

研磨struts2第二章 Struts2HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始

2.5  开发中的一些小窍门 2.5.1  概述 通过以上内容的学习,应该基本了解了Struts2的开发流程,但是,有一些细节功能你并没有看到。比如,在struts.xml中,需要注册Action类的全类名,这个全类名是哪里来的?是完全手写的,还是拷贝的?怎么拷贝的? 大家都知道,好的操作方式不容易出错,而且开发效率也更高。因此,特别准备了这一小节的知识,在这里来讲述在HelloW...

研磨struts2 141

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

精准农业是现代农业发展的核心方向,其中杂草的实时、准确检测是减少除草剂滥用、实现变量喷施的关键技术瓶颈。本文详细阐述了一套完整的、基于YOLO(You Only Look Once)系列目标检测算法的田间杂草检测系统。系统覆盖从模型对比选型(YOLOv5, YOLOv6, YOLOv7, YOLOv8)、自定义数据集构建与标注、模型训练与优化,到最终构建基于PyQt5/FastAPI/Gradio的可视化UI界面的全流程。本文提供了完整的Python代码、项目结构、训练技巧及公开数据集指引,旨在为农

YOLO 340

一个简单的javaBean+JSP+Servlet案例

整体的思路是:到登录界面输入用户名和密码,提交信息后 向servlet发出登录请求,到web.xml中配置配对,到servlet程序中,再在servlet中完成转发到欢迎界面.

Nick_zcy的博客 1169

六、《研磨struts2第二章 Struts2HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始

2.3.Struts2HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始 2.3.1  起点概述 考虑到大部分朋友都是有一定经验的web开发者,因此从Servlet+JSP+JavaBean实现MVC开始,再过渡到Struts2的开发,这样能让大家把以前的知识自然迁移到Struts2上,使得学习曲线变得平滑。 说明一下,由于本机的8080端口被别的软...

changsha520的博客 924

七、《研磨struts2第二章 Struts2HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始

2.4  Struts2HelloWorld 2.4.1  概述 在上一个小节中,使用Model2实现了一个简单的登陆功能,在本节里面,使用Struts2实现同样的功能。Model2Struts2实现MVC,因此Struts2实现和上面Model2实现是类似的。        前面讲到Struts2是一个基于MVC的轻量级框架,那就以MVC为突破口来分析,看看Str...

changsha520的博客 367

研磨struts2 第二章 Struts 2HelloWorld

2.1  概述 通过第1章的讲述,明白了Struts 2是什么、有什么以及能干什么,接下来就该来讨论怎么做的问题了,也就是讨论如何使用Struts 2来开发基于MVC的web应用。 按照惯例,学习一个新的东西,都是从HelloWorld起步的,这里也不例外,本章就一起来看一个Struts 2HelloWorld实现。 本章会从搭建Struts 2的开发环境开始,用Struts 2来开发一个

sjms2010的专栏 1002

轻量开源版 IDEA 来了!

Lithe 不是 JetBrains 官方产品,当前文档也没有承诺兼容 IntelliJ 插件或覆盖 IDEA 的所有高级能力。最重要的是这只是一个个人项目,功能可能并不完善,也有一些体验问题。所以,大家在用之前也不要抱有特别高的期待。我个人用下来觉得,个人做到这种程度,已经非常厉害了,这也是为什么我愿意写一篇文章分享的原因。我是真挺佩服作者的。

JavaGuide 293

如何在 IDEA 中打开并运行已有Java项目

在 IDEA 中,点击 文件(File ) → 打开文件夹(Open Folder)...,选择你的 Java 项目根目录。

qq654207743的博客 215

[vscode]claude code & codex使用教程

Everyday try to become better -Kobe Bryant 239

pycharm如何添加python解释器

在PyCharm中添加Python解释器的步骤包括:打开设置、选择项目解释器、添加解释器。其中,选择正确的解释器版本是确保项目兼容性的关键。

2601_96229893的博客 194

Git&Powershell项目操作注意

以.idea(IDEA 配置)、.git(git 仓库元数据)、.mvn。资源管理器/普通命令默认看不见,需要"显示隐藏文件"或。案例.git是隐藏的,所以我第一次列目录时只看到untitled,差点以为没 git 仓库。

2501_93775482的博客 271

深入DeepSeek Harness系列(一):Plugin架构模式

本文从软件架构角度解读 Plugin 插件机制。聚焦两种核心实现范式——接口驱动(拉模式)与 事件驱动(推模式),为后续解读dsh的“Everything is Plugin”设计做铺垫。

我的新书《代码精进之路:从码农到工匠》 221

IDEA接入Claude完整流程

切换接入模型,CC-SWITCH,可以配合上一个插件使用。IDEA 插件 CC-GUI。本地安装node.js。

Java杂谈 166

WSL教程-WSL安装与配置Ubuntu

<think>我们只需要根据内容生成摘要,不超过150字。内容是关于Windows开启Hyper-V等功能,安装WSL和Ubuntu,设置root,换清华源等步骤。摘要要简洁概括。</think>本文介绍了在Windows上启用Hyper-V、虚拟机平台及WSL功能(含家庭版安装方法),然后通过WSL安装Ubuntu,设置root为默认用户,并更换APT源为清华镜像以加速更新,最后执行系统升级。

LZH990的博客 180

ESP-IDF+vscode开发ESP32 联网篇第四讲——ESP_NOW

本文介绍乐鑫ESP-NOW无连接Wi-Fi通信协议。详细解析供应商动作帧格式、单播/广播MAC机制、特定供应商元素及安全加密(PMK/LMK)。给出基于ACK同步的可靠收发封装代码及单对单加密传输使用案例,强调广播与加密单播的适用场景,为物联网设备协同提供低成本通信方案。

Pai_SM的博客 284

爱普生机器人原点校准方法.docx

爱普生机器人原点校准方法.docx

全球治理指标数据集(1996-2023).xlsx

详细介绍及样例数据:https://blog.csdn.net/m0_65541699/article/details/148423903

上一篇: 七、《研磨struts2》第二章 Struts2的HelloWorld 之从Servlet+JSP+JavaBean实现MVC开始
下一篇: 九、《研磨struts2》第三章 Struts2的架构和运行流程 之 3.1 Struts2的系统架构
changsha520
博客等级 码龄17年 0粉丝 17原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值