zoukankan      html  css  js  c++  java
  • 3Struts2进阶----青软S2SH(笔记)

    关于上面这个红框里的问题,经过实际测试发现,struts2增加一个命名空间后,jsp页面里所引用的资源的路径,也需要增加一个"../",

    于是,跟SpringMVC没啥区别了啊....,从访问过程来看,jsp页面所引用的图片,js什么的,都是再次请求的,请求时默认当前路径删除最后一个,加上这个资源的url,于是在增加一个命名空间后,就会出现引用的资源需要加一个../的问题.

    当然,会遇到如下错误:

    使用Struts2感叹号方式的动态方法调用,struts.xml配置都正常,但是使用http://localhost:8080/XXX/user!list.action访问时,提示:
    There is no Action mapped for namespace [/] and action name [user!list] associated with context path [XXX]
    原因在于:struts2中默认不允许使用DMI
    此时需要修改struts.xml,添加:<constant name="struts.enable.DynamicMethodInvocation" value="true" /> ,设置这个常量值为true,就可以使用动态方法调用了。

    事实上,这种方法是不推荐的(主要这个方式是出现好几次漏洞了好像),有另外两种动态方法调用的方法:
    1.指定method属性
    2.通配符方式(官网推荐使用)

    这个method方法可以代替前面的动态调用,不过麻烦些,实施方法如下:

    1.在一个XxxAction中写了很多个方法,

    2.在Struts2.xml中配置很多个action,name为action名+方法名,method为"方法名",class都是上面这个XxxAction.

    弄了这么一大堆,感觉不如springMVC中用"方法名加参数名和参数个数"来判断来的方便

     

    例子如下:

    public String execute() {
            System.out.println("----登录的用户信息-----");
            System.out.println("用户名:" + userName);
            System.out.println("密码:" + password);
            if (userName.startsWith("qst") && password.length() >= 6) {
                // 返回成功页面
                return "success";
            } else {
                // 抛出异常
                throw new RuntimeException("用户登录失败!");
            }
        }
    
    -------------------------------------------------------------------
    <action name="login5" class="com.qst.chapter03.action.LoginAction5">
           <exception-mapping result="error" exception="java.lang.Exception" />
           <result>/ok.jsp</result>
           <result name="error">/error.jsp</result>
    </action>

    springMVC中异常处理我没系统学习,不知道是不是也像struts这么方便.

    其他技巧

    其实这个BaseAction基类就相当于springMVC中的servletDispatcher(名字可能拼错了)中的一个现有的功能

    这个功能springMVC中也有了.

    session的确应该封装到一个对象里面去.

  • 相关阅读:
    vue+vant打包,vue+vant-ui小程序,微信支付
    vue+vant-ui移动端适配 宽高
    web前端面试题
    vue面试题及答案(1)
    vue的增删改查(简单版)
    Vue computed计算属性
    vue.cli的安装配置
    Create React App 安装时出现的错误解决方法
    运行node文件的多种方式
    怎么把node配置成全局打开
  • 原文地址:https://www.cnblogs.com/lakeslove/p/5981496.html
Copyright © 2011-2022 走看看