Apache Struts 2的命名空间实战

Apache Struts 2的命名空间实战

作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs

Apache Struts 2的命名空间是一个新概念,它通过为每一个模块分配一个命名空间从而实现多模块的处理。另外,它解决了不同模块下的相同Acion名的名字冲突的问题。

从下面的图我们可以理解URL是怎样匹配Struts 2命名空间的。

一、命名空间的配置

下面我们通过Struts2的命名空间配置实例来说明它是怎样匹配URL和目录的。要说明一点,包名(即package name=”default”)不影响URL匹配结果,它仅仅是一个有意义的名字。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="SayWelcome">
            <result>pages/welcome.jsp</result>
        </action>
    </package>
    <package name="common" namespace="/common" extends="struts-default">
        <action name="SayWelcome">
            <result>pages/welcome.jsp</result>
        </action>
    </package>
    <package name="user" namespace="/user" extends="struts-default">
        <action name="SayWelcome">
            <result>pages/welcome.jsp</result>
        </action>
    </package>
</struts>

Struts 2的Action命名空间映射到目录的结构图如下:

二、JSP页面

我放了三个相同文件名的JSP文件,但是它们分别位于不同的模块。

1)Root -> webapp/pages/welcome.jsp

2)Common module -> webapp/common/pages/welcome.jsp

3)User module -> webapp/user/pages/welcome.jsp

三、工作机制

运行项目,我们分别访问不同的URL,即可实现对不同的命名空间进行访问。

例子1

URL : http://localhost:8080/Struts2Example/SayWelcome.action

这将匹配root命名空间。

<package name="default" namespace="/" extends="struts-default">
    <action name="SayWelcome">
        <result>pages/welcome.jsp</result>
    </action>
</package>

显示的是webapp/pages/welcome.jsp的内容。

例子2

URL : http://localhost:8080/Struts2Example/common/SayWelcome.action

这将匹配common命名空间。

<package name="common" namespace="/common" extends="struts-default">
    <action name="SayWelcome">
        <result>pages/welcome.jsp</result>
    </action>
</package>

显示的是webapp/common/pages/welcome.jsp的内容。

例子3

URL : http://localhost:8080/Struts2Example/user/SayWelcome.action

这将匹配user命名空间。

<package name="user" namespace="/user" extends="struts-default">
    <action name="SayWelcome">
        <result>pages/welcome.jsp</result>
    </action>
</package>

显示的是webapp/user/pages/welcome.jsp的内容。

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。

时间: 2024-10-13 11:59:35

Apache Struts 2的命名空间实战的相关文章

org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.

No action config found for the specified url url路径下找不到action,原因是stuts-config.xml文件配置错误. demo的项目文件如下: 使用jsp文件夹中的login.jsp文件调用action: <%@ page language="java" contentType="text/html" pageEncoding="GBK"%> <!DOCTYPE html

org.apache.struts.taglib.bean.CookieTei cannot be cast to javax.servlet.jsp.tagext.TagExtraInfo

严重: Servlet.service() for servlet jsp threw exceptionjava.lang.ClassCastException: org.apache.struts.taglib.bean.CookieTei cannot be cast to javax.servlet.jsp.tagext.TagExtraInfo at org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibra

Cannot find bean under name org.apache.struts.taglib.html.BEAN[转]

1.试图在Struts的form标记外使用form的子元素.在后面使用Struts的html标记等 2.不经意使用的无主体的标记,如web 服务器解析时当作一个无主体的标记,随后使用的标记都被认为是在这个标记之外的3.还有就是在使用taglib引入HTML标记库时,你使用的prefix的值不是html 4.property必须和所要提交的action对应的formbean中的某个属性相匹配(必须有一个formbean)5.要使用标签,外层必须使用标签,不能使用html的 posted on 20

java org.apache.struts.taglib.html.BEAN 没有找到

index.jsp Html代码   <body> <a href="login2.do">登陆(struts标签)</a><br> </body> struts-config.xml Xml代码   <action path="/login2" forward="/login_use_struts_tag.jsp" ></action> <action p

[转]Eclipse下开发Struts奇怪异常:org.apache.struts.taglib.bean.CookieTei

今天早上开始在Eclipse下学习struts,于是按照李兴华老师的<struts入门视频教程>一步一步地充满快乐的学习,等把登陆程序写完,打开浏览器准备运行的时候,奇怪的异常产生了,异常显示500错误,如下: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description Th

Apache Struts最新漏洞 远程代码执行漏洞预警 2018年11月08日

2018年11月8日,SINE安全监控检测中心,检测到Apache Struts官方更新了一个Struts漏洞补丁,这个漏洞是Apache Struts目前最新的漏洞,影响范围较广,低于Apache Struts 2.3.35的版本都会受到此次Struts漏洞的攻击,目前apache官方更新的漏洞补丁,主要是修复commonsfileupload上传库出现的安全问题,这个库可以远程执行代码,上传木马后门到网站服务器中去. Apache Struts 漏洞描述 某知名的安全组织向Apache St

Apache Struts 2 Documentation Core Developers Guide

http://struts.apache.org/docs/core-developers-guide.html

Apache Struts 2 Documentation Big Picture

http://struts.apache.org/docs/big-picture.html 1. HttpServletRequest 穿越各个过滤器到达FilterDispatcher(这个已经不再使用,现在使用StrutsPrepareAndExecuteFilter) 2. 执行doFilter方法,如果模式不匹配,则进入下一个过滤链 3. 如果匹配则创建上下文(为每个请求创建实例,线程安全) 4. 根据ActionMapping 判断是否应该调用Action 5. 如果需要调用Acti

Error:Cannot find bean: &quot;org.apache.struts.taglib.html.BEAN&quot; in any scope

原因:html标签和struts标签混用,或者表单元素外面没有<html:form>标签包裹. 解决:统一标签 <html:form action="/login.do"> <bean:message key="info.input.account"/> <html:text property="account"></html:text><br> <bean:messa