应该是版本的问题
文件的地址检查一下,肯定不对
你如果不指定package的namespace属性是可以的,默认值就是无
要写method属性 ,method属性的值指定调用指定类的方法
先找package,找到以后再找action,在这里action找不到的话就去找默认的action,默认的action也找不到的话就报错,如果package找到后,action也找到了,那就就继续找action里面的路径,直到最后确认该返回哪一个result
这是struts自带的标签库,在视图开头加上<%@ taglib uri="/struts-tags" prefix="s" %>,就可以使用这些标签了。和正常的标签没什么区别
这个是根据/bookservice/search/ 这个package是否存在(关键),假如存在没找到get.action,它就会去默认的命名空间;假如/bookservice/search/ 这个package不存在,系统就会返回上一级目录/bookservice/这个package去找,以此类推
哎呀不好意思找到了,谢谢老师
在Struts.xml配置文件中将action标签的namespace属性的/ 改为/* 即可
我这有个例子
public class BaseAction extends ActionSupport{
/**
* @Fields serialVersionUID
*/
private static final long serialVersionUID = 1L;
/**
*
* @Description: 获取Session对象
* @param 参数说明
* @return Map<String,Object> 返回类型
* @throws 异常说明
*/
protected Map<String, Object> getSession() {
ActionContext ctx = ActionContext.getContext();
return ctx.getSession();
}
/**
*
* @Description: 获取HttpServletRequest对象
* @param 参数说明
* @return HttpServletRequest 返回类型
* @throws 异常说明
*/
protected HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
/**
*
* @Description: 获取HttpServletResponse对象
* @param 参数说明
* @return HttpServletResponse 返回类型
* @throws 异常说明
*/
protected HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
}
package为当前的Struts声明了一个包,这个包的包名称叫做default,作用是可以提供给其他的Struts声明时进行继承,就像是当前的extends=“struts-default"一样;而extends="struts-default"这一句就是说当前这个Struts继承于名称为struts-default的一个struts。
献丑了,我也是新手,如何对这个答案是觉得怀疑的话请找其他答案;欢迎指正,谢谢!
<package name="default" namespace="/" extends="struts-default">
1.获得请求路径的URL,例如URL为:
http://127.0.0.1:8080/struts2/test/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,
如果存在这个package,则在这个package中寻找名字为test的Action,
若找到了该Action,则访问该Action,
若没有找到该Action则立即转向默认表空间[namespase=""]去寻找该Action
若在默认表空间中找到了该Action,则执行该Action
若在默认表空间中没有找到该Action,则执行该表空间中定义的默认action
若默认表空间中定义了默认Action,则执行该Action
若默认表空间中没有定义默认的Action,则报404找不到内容的错误
如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,
如果存在这个package,则在这个package中寻找名字为test的action,
若找到了该Action,则访问该Action,
若没有找到该Action则立即转向默认表空间[namespase=""]去寻找该Action
若在默认表空间中找到了该Action,则执行该Action
若在默认表空间中没有找到该Action,则执行该表空间中定义的默认action
若默认表空间中定义了默认Action,则执行该Action
若默认表空间中没有定义默认的Action,则报404找不到内容的错误
如果不存在这个package,则转步骤4;
4.寻找namespace为/path1的package,
如果存在这个package,则在这个package中寻找名字为test的action,
若找到了该Action,则访问该Action,
若没有找到该Action则立即转向默认表空间[namespase=""]去寻找该Action
若在默认表空间中找到了该Action,则执行该Action
若在默认表空间中没有找到该Action,则执行该表空间中定义的默认action
若默认表空间中定义了默认Action,则执行该Action
若默认表空间中没有定义默认的Action,则报404找不到内容的错误
如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串""),
如果还是找不到,页面提示找不到action,报404找不到内容的错误
另:若没有定义默认的表空间,则在上述要访问默认表空间[namespase=""]的位置,就此中断,直接提示404找不到action
您好,这个确实是有的。
1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。