我正在一个项目中,我想为每个用户提供唯一的URL。例如,
http://www.SocialNetwork.com/jhon , http://www.SocialNetwork.com/jasmine,
到目前为止,我已经能够实现: http://www.SocialNetwork.com/profiles/jasmine 在这里,配置文件是我可以通过以下方式获取用户名的操作
http://www.SocialNetwork.com/profiles/jasmine
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> <constant name="struts.enable.SlashesInActionNames" value="true"/> <constant name="struts.patternMatcher" value="namedVariable"/> <action name="profiles/{username}" class="com.example.actions.ViewProfileAction"> <result name="input">/WEB-INF/jsp/profile.jsp</result> </action>
但我想实现类似这样的功能,即http://www.SocialNetwork.com/jasmine 域名,然后是用户名。
http://www.SocialNetwork.com/jasmine
像twitter一样:
www.twitter.com/用户名
如何实现呢?
如果要在通配符映射中使用命名模式,则应在中配置以下内容struts.xml:
struts.xml
<constant name="struts.enable.SlashesInActionNames" value="true"/> <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> <constant name="struts.patternMatcher" value="regex"/>
现在假设com.example.actions.ViewProfileActionbean具有一个property username和execute返回SUCCESS结果的方法。然后,您可以将操作映射到"/"配置到程序包的根名称空间中。
com.example.actions.ViewProfileAction
username
execute
SUCCESS
"/"
<action name="{username}" class="com.example.actions.ViewProfileAction"> <result>/WEB-INF/jsp/profile.jsp</result> </action>
您可以使用OGNL在JSP中获得名称
<s:property value="username"/>
还要注意,您应该部署到根上下文以具有
your.domain.com/username 映射到您的操作。
your.domain.com/username