首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2学习札记-namespace

2012-08-21 
Struts2学习笔记---namespace今天的重点:namespace决定了action的访问路径,默认为“”,可以接受所有路径的ac

Struts2学习笔记---namespace

今天的重点:

namespace决定了action的访问路径,默认为“”,可以接受所有路径的action

namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径诶/index.action,/xxx/index.aciton,或者

/xxx/yyy/index.action

namespace最要也用模块来命名

?

1、创建项目

2、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>    <filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

?

3、配置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>    <!-- Add packages here --><!-- 下面这句为调为开发模式 --><constant name="struts.devMode" value="true" />     <package name="front" extends="struts-default" namespace="/front">    <!-- 访问时是/front/test -->        <action name="test">            <result name="success">/Namespace.jsp</result>        </action>    </package></struts>

?

首先解释一下:<constant name="struts.devMode" value="true" />这句话

struts.xml中的开发模式
<constant name="struts.devMode" value="true" />
value="true" 表示你的配置文件修改后不需要重起服务器而可以直接运行
value="false" 表示你的配置文件修改后需要重起服务器后再运行 默认为 false

好了,现在看看struts.xml里面的内容,首先name是front,而namespace是/front,action的名字是test,所以访问的时候要/front/test的方式才能访问,否则报错,运行结果如下


Struts2学习札记-namespace
?

当namespace为空的时候,这时,请求action的时候如果找不到具体的namespace,那么默认都会到这个空的namespace中来处理,即使你的访问路径是/fasdfsadf/fasdfs/test,还是/fdsfadfsfsaf/asfdd/fd/test,都默认到这个路径下处理,即使上面的乱字符串的路径不存在,也会正常运行

<?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>    <!-- Add packages here --><!-- 下面这句为调为开发模式 --><constant name="struts.devMode" value="true" />    <package name="front" extends="struts-default" namespace="/front">    <!-- 访问时是/front/test -->        <action name="test">            <result>/Namespace.jsp</result>        </action>    </package>        <package name="main" extends="struts-default" namespace="">        <action name="test">            <result>/Namespace.jsp</result>        </action>    </package></struts>

?

下面是运行结果


Struts2学习札记-namespace
?上面的东西其实就是当请求一个action的时候,如果有这个名字的namespace,如果有,就用这个namespace来处理,如果没有则默认由空的namespace来处理

热点排行