在Java Web开发中,Struts2是一个流行的MVC(模型-视图-控制器)框架,它通过配置文件来管理整个应用程序的运行逻辑,Struts2配置文件加载是框架初始化过程中的关键步骤,它涉及到文件路径的配置、参数的设置以及相关组件的初始化,以下是对Struts2配置文件加载的详细解析。
Struts2的配置文件主要是指
struts.xml
文件,它位于Web应用的目录下,这个文件定义了Struts2框架中各种组件的配置,包括包(package)、动作映射(action mapping)、拦截器(interceptor)等。
配置文件加载过程
初始化阶段
当Web应用启动时,Struts2框架会通过
ServletContextListener
接口来监听应用的初始化事件,在初始化过程中,框架会尝试加载
struts.xml
配置文件。
文件加载
Struts2框架会首先检查
struts.xml
文件是否存在,如果文件存在,框架会尝试将其加载到内存中,加载过程中,框架会解析xml文件中的各种配置元素。
配置解析
在解析过程中,Struts2框架会识别以下元素:
组件初始化
在解析完配置文件后,Struts2框架会根据配置初始化相应的组件,创建动作实例、拦截器实例等。
配置文件示例
以下是一个简单的
struts.xml
配置文件示例:
/hello.jsp
配置文件路径
Struts2框架默认会从
WEB-INF/classes
目录下加载
struts.xml
文件,如果需要从其他路径加载,可以在
struts.xml
文件中使用标签来指定路径。
表格:配置文件关键元素
| 元素名称 | 描述 |
|---|---|
| 定义了一组相关的动作映射,可以继承其他包的配置。 | |
| 定义了一个具体的动作,包括类路径和结果映射。 | |
| 定义了动作执行完成后视图的呈现方式。 | |
| 引用了一个拦截器,用于在动作执行前后进行拦截和处理。 | |
| 设置Struts2框架的全局常量,如配置文件路径等。 |
Q1:Struts2配置文件可以放在Web应用的任何位置吗?
A1:不建议将
struts.xml
配置文件放在Web应用的任何位置,将其放在
WEB-INF/classes
目录下是最佳实践,因为这样可以保证配置文件的安全性。
Q2:如何修改Struts2配置文件来改变默认的结果视图?
A2:要改变默认的结果视图,可以在
struts.xml
文件中使用标签来指定默认的动作,并在该动作中配置不同的结果视图。
/default.jsp
每次开机,电脑都会提示 "Windows 不能加载本地存储的配置文件。此问题的可能原因是安全权限不足或本地配置文件损坏。如果此问题持续存在,请与您的网络管理员联系" 和 "Windows
你好,是你的用户目录发生混乱,或者,注册表中的用户目录配置乱了. 一般是桌面的目录和开始菜单的配置发生了问题. 有的软件会把它无意写坏,我测试时就经常写坏哈~~~~ 把下面的内容用记事本另存为后缀为BAT的批处理文件,双击执行就好了. set acFile=%Temp%\%random% if exist %acFile% del %acFile% /f /q >nul 2>nul if exist %acFile% del %acFile% /f /q >nul 2>nul set acFldr=Software\Microsoft\windows\CurrentVersion\EXPlorer\User Shell Folders reg export HKU\\%acFldr% %acFile% >nul for /f tokens=1 delims= %%i in (type %acFile%) do echo %%i|find /i [ && echo.>>%acFile% && echo [HKEY_CURRENT_USER\%acFldr%]>>%acFile% || echo %%i>>%acFile% regedit /s %acFile% if exist %acFile% del %acFile% /f /q >nul 2>nul if exist %acFile% del %acFile% /f /q >nul 2>nul 如果害怕存错,到这里下载:用户目录修复_68e1bs5bsq0c1bs7bsp0cp0cmom0chip0cl0cplm5b6z99f09f00z 注意这个地址是一整行,在这里它自动断成两行了. 也可以到我的网盘的编写的脚本中下载
为什么struts2等框架定义配置文件的文档结构用DTD而不用Schema
我来告诉你标准答案!估计可能是历史原因造成的,Struts2的功能相对比较单一,不需要命名空间这些只有使用Schema才能解决的问题。 看看Spring框架,从2.0以后开始就逐步转向Schema,由于越来越多的功能需要用到命名空间,到后面就全是schema了。 以下是从网上摘录的DTD的一些主要缺陷,想必你问这个问题应该也知道:(1)DTD不易编写和理解(2)DTD提供的数据类型有限(3)DTD扩展困难(4)DTD不支持命名空间但目前貌似这些都不会影响struts2的功能,并且DTD或schema只是做XML的验证,其实XML标准都能很好支持这些,我猜Struts2开发团队比较懒,也就没换这个了吧。
struts2 配置文件中的action一加入class属性 启动服务器就报错是什么原因
action标签标签中必须加class属性吧。你的class是不是没加包名?你按住ctrl之后左键点击class属性值,你看看能不能进如相应的Action














发表评论