struts2的访问路径
① struts2的访问路径
<package name="abc" namespace="/s" extends="struts-default">
<action name="hello" class="action.UserAction">
<result name="yes">/s/success</result> //把/s/去掉,直接写success
</action>
</package>
② struts2 如何在action中取得页面的URL地址
通过request.getRequestURI()方法可以取得当前页的请求路径,你可以在连接地址中加入这样一个参数,取得当前所在页的访问路径,再在Action中接收,并进行处理。
英语
Action中接收这个urlpath,再进行
字符串操作
,截取出你需要的内容,设置到r里就可以了。
③ Struts2访问请求路径问题: 比如:httt://localhost:8080/demo/zhangsan demo:是tomcat虚拟目录名称
官网提供的中文版的《深入浅出Struts2》(Ian Roughley 着,李剑 译)里面的“提高效率技巧”章节的“在配置中使用模式匹配调配符”小节中有介绍,先自己看看吧!想传递参数(比如”zhangsan“)到Action的属性中试试在<action>标签内用<param>标签。另外,struts2的网址后缀(比如“.action”)可以在struts.properties里用“struts.action.extension=XXX"改。
还可以自己写URI映射方法,即实现ActionMapper,如果你真的有耐心的话。
④ 访问Struts2的Action路径问题
一般来说,只要web.xml中配置正确的映射路径,struts.xml能够实例化action就不会出现404错误,可能是web.xml中的filter-mapping出现问题
<filter>
<filter-name>action</filter-name>
<filter- class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>action</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
你把<url-pattern>/*</url-pattern>的内容改动后调试看看,good luck!
----------------------------
Struts2的路径和struts1的一致,/ 表示web应用更目录(就是GraPro目录),在struts2中FilterDispatcher就是根据你在web.xml filter-mapping中配置的路径去映射你的请求路径(/news.action),
如果匹配,就加载struts.xml中定义的actionMapping,然后转交action处理请求
你可以参考:http://www.blogjava.net/max/archive/2006/10/10/74353.html的说明吧
---------------------
因为response.sendRedirct("news.action")是采用浏览器重新定位的方法去请求的,相当于你在地址栏直接输http://localhost:8080/GraPro/news.action
而jsp:forward 是将request和response作为参数传递请求,它会读取web根目录+action path 作为请求URL
⑤ struts2中怎么获取url啊,请求的地址
我当初在利用Struts2实现电子商务购物系统的时候,也遇到这个问题,想记录用户之前访问的URL,包括点击的所有参数信息,后面给我解决了。我是利用拦截器去做的,然后把用户的URL存到Session当中。这是我的源码,你可以按照这个思路去做,应该没有问题的,我的项目已经验收通过了。希望能够帮到你,谢谢
/**
* 方便用户返回上一个浏览界面
*/
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import leo.sd1006.gz.tarena.dang.global.GlobalField;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class PreviousPathInterceptor extends MethodFilterInterceptor{
private static final long serialVersionUID = 6677300287776159679L;
private Logger logger=Logger.getLogger(CheckLoginInterceptor.class);
@Override
protected String doIntercept(ActionInvocation invocation)
throws Exception {
//设置用户当前访问的界面,方便用户登录后直接跳转到前一个页面
HttpServletRequest request=ServletActionContext.getRequest();
String path=request.getRequestURI();
String actionPath=".."+path.substring(9);
//访问服务器所带有的参数信息
String queryInfo=request.getQueryString();
if(queryInfo!=null&&(!queryInfo.equals(""))){
actionPath=actionPath+"?"+queryInfo;
}
logger.debug("用户访问的路径是:"+actionPath);
ActionContext.getContext().getSession().put(GlobalField.PRE_PATH, actionPath);
return invocation.invoke();
}
}
⑥ struts2访问路径
filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
你所有的请求都让struts2拦截了,当然不行
你的hello.jsp是一个jsp
访问:http://localhost/struts2/hello 相当于访问 hello这个action,但实际上你并没有
所以把
filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/* 改为*.action 就行了
⑦ 菜鸟求教:servlet和struts的访问路径问题。
servlet的url是在web.xml配置的,举个简单的例子好了
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
其中的<url-pattern>/login</url-pattern>就是你要输入的/login 也就是http://localhost:8080/login
如果你配置成<url-pattern>/login.do</url-pattern>那么地址就是 http://localhost:8080/login.do
如果你配置成<url-pattern>/login.html</url-pattern>那么地址就是 http://localhost:8080/login.html
如果你配置成<url-pattern>/test/login.do</url-pattern>那么地址就是 http://localhost:8080/test/login.do
举了这么多例子 我想你也明白了,原理呢就是通过url-pattern找到servlet-name,再找到对应的servlet,进入到方法中处理
访问action却必须是/text/doaction.do呢?我想你说的应该是struts1吧,看看struts1的配置文件
<action-mappings>
<action path="/login"
name="userForm"
type="com.test.struts.LoginAction">
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
path就是你配置的url,当然还有web.xml中的配置
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<url-pattern>*.do</url-pattern>表示过滤的都是以.do结尾的请求,所以加上struts1的配置文件配置的url那么就是login.do了,那么地址就是http://localhost:8080/项目名称/login.do;建议你去看看struts1的工作原理,当然目前公司大部分都是用struts2了,建议学好struts2。
<html:base/> 指定一个显式 URL 用于解析对于外部源的链接和引用,如图像和样式表。当使用时,base 元素必须出现在文档的 head 内,在任何用于引用外部资源的元素之前。例如:
<HEAD>
<BASE HREF="http://msdn.microsoft.com/workshop/author/dhtml/reference/"/>
</HEAD>
过滤器难学吗?还有hibernate比struts难多少呢?我是小菜 求知识。
struts2的核心就是过滤器,过滤器不难学的,我建议你先看原理,然后练习几个例子,你就明白了,Hibernate是JDBC的轻量级的对象封装,并不像你说的那么困难,怎么说了,全靠你个人的练习,实践,写得多了也就会了。
祝你成功!
⑧ Struts2的访问路径和servlet的访问路径怎么区分啊。
看你当初web.xml里面的struts2过滤器配置的路径啊,如果路径把你这个包含进去了,那么你访问的一定是struts2的页面
否则就是servlet,当然你也可以实现再加一个过滤器跳过struts过滤器直接访问servlet
⑨ myeclipse 中的一个项目,ssh结构,struts2中如何根据访问路径找到执行的文件,到处都是访问路径
火狐当然不可以,struts是在服务器端的!首先你要了解struts的访问机制:拿页面表单提交来说吧!首先当用户点击提交按钮后,浏览器根据action中的值访问服务器端的struts.xml配置文件,找到action标签中name等于这个url的标签,根据此标签定义的class去java的web层,也就是继承actionsupport的struts控制器,找到对象的class中对应的method,经过一系列业务逻辑处理,最后此方法return一个字符串,最后struts去struts.xml中回到刚才那个action标签,找到result中name等于一个字符串中定义的jsp页面,最后客户端浏览器跳到这个页面!这是struts访问的一个最基本的业务流程。虽然写法不一,但是万变不离其宗,流程是一样的!如果你真想跟踪,那只能拿到源代码用eclipse一步步debug!!!
⑩ 求解、struts2的访问路径的问题!
同一个package.你就对应一个action..弄这么多package干嘛.
另外你的2个action的配置都是没有method属性.那么就会去Action里面找execute()方法.