..已解决 路径填错了- -!
贴个代码让大家看看
因为在项目生成后,在web.xml中有默认的配置跳转到index.jsp
如果添加
System.out.println(user.getUsername())
这个之后,默认拦截器栈中的参数拦截器生效,如果想让其生效,需要在引用自定义拦截器之前配置默认拦截器.如果不添加这句的话,自定义拦截器生效.
我这可以正常看
拦截器不仅要在struts.xml注册,也要在web.xml里注册
拦截器可能在XML文件中没注册,或者引用!
url-patten改成*.action
导入jar包的方式不对,删了重新导入,先复制粘贴到lib目录下,再配置basepath
其实自己用美图秀秀或者PS也beautiful
不是,invoke方法是调用的Action中的execute方法。这是使用动态代理模式机制实现的。你可以去看下动态代理模式那部分的视频,就会对invoke有更深的认识了
就是项目需要的jar包最好要放在web-inf的lib下面,不然无法识别
<interceptor-ref name="defaultStack"></interceptor-ref>
l老师的这句话写错了
Struts机制:
只要调用了 invoke()方法,
如果能成功的调用对应的Action类中的方法,struts就会按照该方法的返回值去找对应的
result,从而忽略拦截器的返回值;
如果不调用 invoke() 方法,
那么 struts 就会按照 intercept()的返回值去找对应的result。
扩展:
这种方法常用于权限认证,
当符合要求的时候才会调用 invoke() 方法,执行Action中的方法
当满足权限要求的时候,直接返回错误界面,这就用到了拦截器中的返回值
不会,要自己去官网下载,地址好像是org.apache.struts2
<result>/error.jsp</result> 这里改成<result name="error">/error.jsp</result>试试
不写name默认是name="success"
我重启10遍了也不行。。。而且直接在启动Tomcat服务器(不是在浏览器中运行项目)的时候就已经报错了。
检查你的xml文件配置
<default-action-ref name="error"></default-action-ref>
<action name="error">
<result >/error.jsp</result>
</action>
你这里设的默认的就是错误的页面
朋友 你的问题解决了吗?
当时看了下一节后,就释然了,还是谢谢你
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("执行Action之前");
// 1.执行Action之前
long start = System.currentTimeMillis();
System.out.println("执行下一个拦截器,如果已经是最后一个拦截器,则执行目标Action");
// 2.执行下一个拦截器,如果已经是最后一个拦截器,则执行目标Action
String result = invocation.invoke();
System.out.println("执行Action之后");
// 3.执行Action之后
long end = System.currentTimeMillis();
System.out.println("执行Action花费的时间:" + (end - start) + "ms");
return result;
}
发现拦截器完全没有执行,后来检查到拦截器配置问题-----------包名有个字母大写,汗,细节
我去。。。这问题太简单了。。跟电脑选文件一样啊,
鼠标左键选中开头的那个,到结尾那个鼠标左键+shift,就全选了。。
如果一个个的选着加,就是ctrl+鼠标左键选择。。
电脑基础操作啊
哦哦。我错了,原来是Flow视图。。对着的。。换Source就是代码了
重启myeclipse然后删除现有的实现struts框架的项目,然后重建一个,按原来操作,命名类不要用action关键字就行
为的是判断返回的是哪个结果。通过返回的字符串来指定显示哪一个界面