精华内容
参与话题
问答
  • 继承ActionSupport

    2018-10-31 22:02:19
    继承ActionSupport 以之前Struts2框架为基础创建一个ActionSupport 1,首先创建一个src下新的class,图片如下; 其中部分代码如: package com.hnpi.action; import com.opensymphony.xwork2.ActionSupport; ...

    继承ActionSupport

    以之前Struts2框架为基础创建一个ActionSupport

    1,首先创建一个src下新的class,图片如下;
    在这里插入图片描述
    其中部分代码如:

    package com.hnpi.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HellowWorldAction extends ActionSupport {
    	 private String account;  
    	    private String password;  
    	    private String submitFlag;  
    	    public String execute() throws Exception {  
    	        this.businessExecute();  
    	        return "toWelcome";  
    	    }  
    	    public void validate(){  
    	        if(account==null || account.trim().length()==0){  
    	            this.addFieldError("account", "账号不可以为空");  
    	        }  
    	        if(password==null || password.trim().length()==0){  
    	            this.addFieldError("password", "密码不可以为空");  
    	        }
    	        if(password!=null && !"".equals(password.trim()) && password.trim().length()<6){  
    	            this.addFieldError("password", "密码长度至少为6位");  
    	        }  
    	    }  
    	    /** 
    	     * 示例方法,表示可以执行业务逻辑处理的方法, 
    	     */  
    	    public void businessExecute(){  
    	        System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);  
    	    }
    	    public String getAccount() {
    	        return account;
    	    }
    	    public void setAccount(String account) {
    	        this.account = account;
    	    }
    	    public String getPassword() {
    	        return password;
    	    }
    	    public void setPassword(String password) {
    	        this.password = password;
    	    }
    	    public String getSubmitFlag() {
    	        return submitFlag;
    	    }
    	    public void setSubmitFlag(String submitFlag) {
    	        this.submitFlag = submitFlag;
    	    }  
    	    
    	}  
    
    
    

    2,2.1创建两个所需的jsp页面层,图片如下:
    在这里插入图片描述
    部分代码如下:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    	
      </head>
      
      <body>
       登陆成功。
      </body>
    </html>
    

    2.2
    在这里插入图片描述
    其中代码如下:

    <%@ page language="java" contentType="text/html; charset=utf-8"  
        pageEncoding="utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags"%> 
    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; utf-8">  
    <title>Insert title here</title>  
    <style type="text/css">
    ul,li {
        list-style-type:none;
        margin:0px;
        float:left;
    }
    </style>
    </head>  
    <body>  
       
    <form action="text/hellowWorldAction" method="post"> 
        <input type="hidden" name="submitFlag" value="login"/>  
        <div> 
            <font color=red><s:fielderror fieldName="account"/></font>
            <br/>
              账号:<input type="text" name="account">
        </div>
        <div>
            <font color=red><s:fielderror fieldName="password"/></font>
            <br/>
                密码:<input type="password" name="password">
        </div>
        <input type="submit" value="提交">  
    </form>  
      
    </body>  
    </html>  
    
    

    3,配置Struts.xml的代码如下图:
    在这里插入图片描述
    红线内部为要添加的新内容。
    代码如下:

      <action name="hellowWorldAction" class="com.hnpi.action.HellowWorldAction">  
                <result name="toWelcome">/welcome.jsp</result> 
                 <result name="input">/login.jsp</result>   
            </action>  
    

    !!!在进行编码时特别要注意路径问题。

    继承ActionSupport例子的主要代码就这些啦,如有错误请留言!

    展开全文
  • java ActionSupport

    2013-10-24 14:07:00
    action的类继承ActionSupport的时候extends alt+/ 为什么出现的可以继承的父类里面没有import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ActionSupport;需要手动输入这个类也好使这...
  • actionSupport

    千次阅读 2018-08-27 09:50:45
    actionSupport类 该类实现了action接口和其他的几个有用的接口,比如数据校验、错误消息本地化等.继承该类后,这些功能便自动获得. 一、基本校验 public void validate(){ PortfolioService ps = ...

    actionSupport类

    该类实现了action接口和其他的几个有用的接口,比如数据校验、错误消息本地化等.继承该类后,这些功能便自动获得.

    一、基本校验

    public void validate(){
      PortfolioService ps = getPortfolioService();
      if ( getPassword().length() == 0 ){
        addFieldError( "password", "Password is required.") );
      }...
    }
    
    public String validateToRegView(){...}

    验证方法执行完,控制权返回到工作流拦截器,该方法没有返回值,秘密就在于校验生成的错误消息.
    工作流拦截器会查看是否有错误消息生成,如果有的话,他会更改请求的工作流,终止请求处理并立即
    返回到用户的输入表单页面.在页面上会显示错误消息.

    二、为消息文本使用资源束

    硬编码错误消息在action中是不可想象的,好的方式是采用外部资源束文件.

    ActionSupport提供了两个接口实现该功能:

    1. com.opensymphony.xwork2.TextProvider提供了从资源束中提取消息的方法.ActionSupport类给出了实现.使用这些方法都需要指定key值,然后返回和该action关联的属性文件中key所对应的消息.

    Register.properties:

    user.exists=This user already exists.
    username.required=Username is required.
    password.required=Password is required.
    portfolioName.required=Portfolio Name is required.

    ==该文件需要Action放在一起.并且文件名要一致==,然后即可通过getText()方法来访问消息了.

    addFieldError("username", getText( "user.exists"));
    1. com.opensymphony.xwork2.LocaleProvider接口暴露了getLocale()方法.
      ActionSupport实现了该接口检索用户设置在浏览器中的locale信息.
      ActionSupport的TextProvider实现每次接受到消息文本时,也会检查locale信息,他是通过调
      用LocaleProvider接口的getLocale()方法,然后定位到相应的属性文件.
    展开全文
  • 继承 actionSupport

    2017-06-22 11:04:32
    在Struts2中,Action可以不实现任何特殊的接口或者...但是由于Xwork的Action接口非常简单,为程序员提供的帮助有限,因此,在实际开发中,会更多的使用继承ActionSupport类来实现Action的方式,如下所示: import

     

    在Struts2中,Action可以不实现任何特殊的接口或者继承特殊的类,仅仅是一个POJO(Plain Old Java Object,简单的Java对象)就可以;也可以实现Xwork2中的Action接口;但是由于Xwork的Action接口非常简单,为程序员提供的帮助有限,因此,在实际开发中,会更多的使用继承ActionSupport类来实现Action的方式,如下所示:

    import com.opensymphony.xwork2.ActionSupport;  
    public class HelloWorldAction extends ActionSupport {  
        //省略了  
    }  

      ActionSupport类本身实现了Action接口,所以继承ActionSupport类就相当于实现了Action接口。除此之外,ActionSupport类还实现了其它几个接口,来为程序员提供更多使用的功能,这些接口和Struts2的一些其他特性相结合,可以实现基本的数据验证功能和国际化。接口如下所示:

    com.opensymphony.xwork2.Validateable;  //提供validate()方法来为Action增加验证的功能
    com.opensymphony.xwork2.Validateaware; //提供方法来保存和恢复action或field级的错误信息
    com.opensymphony.xwork2.TextProvider;  //提供获取本地信息文本的功能
    com.opensymphony.xwork2.LocaleProvider;//提供getLocale()方法来获取本地消息

      1)基本的数据验证

    • 要实现数据验证的功能,只需要在Action类中覆盖实现validate方法即可;在validate方法内部,对请求传递过来的数据进行校验,如果不满足要求,那么添加例外信息到父类用于存放例外的集合中。示例代码如下:
    复制代码
    package cn.javass.hello.struts2impl.action;  
    
    import com.opensymphony.xwork2.ActionSupport;
      
    public class HelloWorldAction extends ActionSupport {  
        private String account;  
        private String password;  
        private String submitFlag;  
        public String execute() throws Exception {  
            this.businessExecute();  
            return "toWelcome";  
        }  
        public void validate(){  
            if(account==null || account.trim().length()==0){  
                this.addFieldError("account", "账号不可以为空");  
            }  
            if(password==null || password.trim().length()==0){  
                this.addFieldError("password", "密码不可以为空");  
            }
            if(password!=null && !"".equals(password.trim()) && password.trim().length()<6){  
                this.addFieldError("password", "密码长度至少为6位");  
            }  
        }  
        /** 
         * 示例方法,表示可以执行业务逻辑处理的方法, 
         */  
        public void businessExecute(){  
            System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);  
        }
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getSubmitFlag() {
            return submitFlag;
        }
        public void setSubmitFlag(String submitFlag) {
            this.submitFlag = submitFlag;
        }  
        
    }  
    复制代码

      从上面的示例可以看出,在validate方法中,可以对用户请求中传递过来的数据进行验证,同一个数据可以进行多方面的验证。

      如果验证结果是数据不正确,那么就使用父类提供的addFieldError方法来添加验证的错误消息。addFieldError方法有两个参数,前面的是消息的key值,后面是具体的消息。

    • 细心的你肯定发现了,validate方法是没有返回值的,那么当验证后,如果有数据没有通过验证,该返回到什么页面呢?这就需要在struts.xml中的Action配置里面,添加一个名称为input的result配置,也就是说,如果validate方法中,有数据没有通过验证,那么会自动跳转回到该action中名称为input的result所配置的页面。示例如下:
    复制代码
    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE struts PUBLIC  
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
        "http://struts.apache.org/dtds/struts-2.0.dtd">  
    <struts>  
        <constant name="struts.devMode" value="true" />        <!-- 设置了程序的运行模式 -->
        <constant name="struts.locale" value="zh_CN"/>         <!-- 设置程序运行所使用的locale -->
        <constant name="struts.i18n.encoding" value="utf-8"/>  <!-- 设置程序运行时用的编码方式 -->
        <!-- 正确设置后面两个参数,就可以解决Struts2的中文问题了。 -->
        
      
        <package name="helloworld"  extends="struts-default">  
            <action name="helloworldAction" class="cn.javass.hello.struts2impl.action.HelloWorldAction">  
                <result name="toWelcome">/s2impl/welcome.jsp</result> 
                 <result name="input">/s2impl/login.jsp</result>   
            </action>  
        </package>  
        
    </struts> 
    复制代码
    • 当输入信息不满足条件的时候,将错误信息显示在前台页面上,代码如下:
    复制代码
    <%@ page language="java" contentType="text/html; charset=utf-8"  
        pageEncoding="utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags"%> 
    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; utf-8">  
    <title>Insert title here</title>  
    <style type="text/css">
    ul,li {
        list-style-type:none;
        margin:0px;
        float:left;
    }
    </style>
    </head>  
    <body>  
       
    <form action="/struts2Deepen2/helloworldAction.action" method="post"> 
        <input type="hidden" name="submitFlag" value="login"/>  
        <div> 
            <font color=red><s:fielderror fieldName="account"/></font>
            <br/>
              账号:<input type="text" name="account">
        </div>
        <div>
            <font color=red><s:fielderror fieldName="password"/></font>
            <br/>
                密码:<input type="password" name="password">
        </div>
        <input type="submit" value="提交">  
    </form>  
      
    </body>  
    </html>  
    复制代码

      在JSP页面中利用<s:fielderror/>标签在相应的字段处输出错误信息。但是,在实际开发中,<s:fielderror/>它会输出全部的错误信息内容。而如果想选择性地输出指定错误信息。我们可以使用如下代码解决:

    复制代码
    <!-- 方法一 -->
    <s:fielderror>  
      <s:param>username</s:param> <!--显示指定的 username字段的 错误消息-->  
    <s:fielderror/>
    
    <!-- 方法二 -->
    <s:fielderror fieldName="username"/> <!--显示指定的 username字段的 错误消息-->  
    复制代码
    • 通过这个示例,你会发现,validate方法会先于execute方法被执行,只有validate方法执行后,又没有发现验证错误的时候,才会运行execute方法,否则会自动跳转到你所配置的input所对应的页面。

      2)访问本地信息

      在上面的示例中,你会发现在validate方法中,添加验证错误消息的时候,是采用的硬编码方式,也就是直接写死的字符串,这是很不好的:

      ① 不容易修改,比如要改变消息的内容,还得重新修改和编译类;

      ② 不利于国际化,如果要把中文的信息变换成英文的呢,同样要重新修改和编译类。

      可以通过访问本地信息的方式,把这些错误消息放置到Action类外部的配置文件中,在Action类内部只需要按照这些消息的key值去获取消息即可。这样一来,当消息发生变化的时候,只需要修改这个消息的配置文件即可。

    • 先来建立消息的配置文件,在Action类的路径下建立一个同名的properties文件,也就是文件名为HelloWorldAction.properties,然后在里面按照key=value的格式,添加要使用的错误消息。示例如下:
    k1=\u5E10\u53F7\u4E0D\u5141\u8BB8\u4E3A\u7A7A
    k2=\u5BC6\u7801\u4E0D\u5141\u8BB8\u4E3A\u7A7A
    k3=\u5BC6\u7801\u957F\u5EA6\u5FC5\u987B\u57286\u4F4D\u4EE5\u4E0A

      可能你会觉得很奇怪,这都是些什么呀?其实是把中文的消息转换成了相应的unicode编码,比如k1后面的value值,其实就是“帐号不允许为空”的unicode编码。只有这样,在程序里面读取到这些值的时候才会正确显示中文。有很多工具可以把中文转换成unicode编码,比如,native2ascii工具就可以实现。

    • Action里面,就修改validate方法,原来是直接写的中文字符串,现在应该修改成从配置文件中获取信息了,示例如下:
    复制代码
     public void validate(){  
            if(account==null || account.trim().length()==0){  
                this.addFieldError("account", this.getText("k1"));  
            }  
            if(password==null || password.trim().length()==0){  
                this.addFieldError("password", this.getText("k2"));  
            }
            if(password!=null && !"".equals(password.trim()) && password.trim().length()<6){  
                this.addFieldError("password", this.getText("k3"));  
            }  
        }  
    复制代码

    效果图如下所示:

    rticle/details/7877792

    展开全文
  • 继承ActionSupport例子

    2018-10-31 22:28:02
    1,根据上一篇内容写继承ActionSupport例子 (1)首先在src下的action包下新建一个class,名字取为HelloWorldAction。Superclass选ActionSupport,里面的代码如下: package com.hnpi.action; import ...

    1,根据上一篇内容写继承ActionSupport例子

    (1)首先在src下的action包下新建一个class,名字取为HelloWorldAction。Superclass选ActionSupport,里面的代码如下

    package com.hnpi.action;

    import com.opensymphony.xwork2.ActionSupport;

    public class HelloWorldAction extends ActionSupport {
        private String account;  
        private String password;  
        private String submitFlag;  
        public String execute() throws Exception {  
            this.businessExecute();  
            return "toWelcome";  
        }  
        public void validate(){  
            if(account==null || account.trim().length()==0){  
                this.addFieldError("account", "账号不可以为空");  
            }  
            if(password==null || password.trim().length()==0){  
                this.addFieldError("password", "密码不可以为空");  
            }
            if(password!=null && !"".equals(password.trim()) && password.trim().length()<6){  
                this.addFieldError("password", "密码长度至少为6位");  
            }  
        }  
        /** 
         * 示例方法,表示可以执行业务逻辑处理的方法, 
         */  
        public void businessExecute(){  
            System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);  
        }
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getSubmitFlag() {
            return submitFlag;
        }
        public void setSubmitFlag(String submitFlag) {
            this.submitFlag = submitFlag;
        }  

    }
    (2)在原来的struts.xml中添加action代码:

      <action name="helloworldAction" class="com.hnpi.action.HelloWorldAction">  
                <result name="toWelcome">/welcome.jsp</result> 
                 <result name="input">/login.jsp</result>   
            </action>
     

    效果如图所示:

    然后改一下class,把result里面多余的东西去掉。效果如图所示

    (3)在WebRoot中新建一个jsp(welcome.jsp),把没用的代码去掉。然后在新建一个jsp(login.jsp),把form表单里面的action改一下里面的代码如下:

    <%@ page language="java" contentType="text/html; charset=utf-8"  
        pageEncoding="utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags"%> 
    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; utf-8">  
    <title>Insert title here</title>  
    <style type="text/css">
    ul,li {
        list-style-type:none;
        margin:0px;
        float:left;
    }
    </style>
    </head>  
    <body>  
       
    <form action="test/helloworldAction" method="post"> 
        <input type="hidden" name="submitFlag" value="login"/>  
        <div> 
            <font color=red><s:fielderror fieldName="account"/></font>
            <br/>
              账号:<input type="text" name="account">
        </div>
        <div>
            <font color=red><s:fielderror fieldName="password"/></font>
            <br/>
                密码:<input type="password" name="password">
        </div>
        <input type="submit" value="提交">  
    </form>    
    </body>  
    </html>

    这里面的代码有的是在其他博客的代码,图片是老师上课的截图

    展开全文
  • action继承actionSupport

    2017-04-08 13:57:00
    action继承actionSupport为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类, 并重载(Override)此类里的String execute()方法,因为ActionSupport已经实现了Action接口, ...
  • 继承ActionSupport

    2018-11-01 00:09:21
    搭建Struts2框架在本人第一个博客里面写的...这次我们一起学习ActionSupport类 1.首先我们要做一个简单的数据验证 想要进行数据验证,只要在action类中覆盖实现validata方法即可! 还有哦,请注意顺序 2,下面就是...
  • struts2继承ActionSupport

    2018-10-31 22:30:55
    struts2继承ActionSupport类 1.struts2框架搭建流程,请看上一个博客。 2.在src目录下新建一个包,即com.hnpi.action,在包下建一个class类,即HelloWordAction, 注意:使用继承ActionSupport类来实现Action的方式,...
  • Struts2_ActionSupport

    2018-09-05 14:48:13
    ActionSupport ActionSupport 是默认的 Action 类: 若某个 action 节点没有配置 class 属性, 则 ActionSupport 即为执行的 Action 类. 而 execute 方法即为要默认执行的 action 方法 &lt;action name="...
  • 继承ActionSupport报错

    2015-06-17 16:19:28
    刚刚学习struts2,在继承ActionSupport时,在package前面出现错误,如下: ![图片说明](https://img-ask.csdn.net/upload/201506/18/1434557797_478766.jpg) 如果不不继承package前面就不会出错: ![图片说明]...
  • 继承ActionSupport的例子

    2018-10-31 23:18:56
    ActionSupport是Action下延伸出来的类,它是Action的子类,Actionsupport这个工具类在实现了Action接口的基础上还定义了一个validate()方法,重写该方法,它会在execute()方法之前执行,如校验失...
  • Struts2.ActionSupport

    2014-11-12 09:57:18
    ActionSupport是一个让action类能够开始工作的基类,
  • Struts2 继承ActionSupport

    2018-10-31 20:15:25
    ActionSupport的功能 一、实现Action接口 二、实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts 2的Action开发 三、提供了getText(String key)方法实现国际化 示例代码: ...
  • 继承ActionSupport的博客

    2018-11-04 23:05:39
    ActionSupport例子 博客化) 1.新建一个项目,创建ActionSupport的类 2.基本的数据验证 要实现数据验证的功能,只需要在Action类中覆盖实现validate方法即可;在validate方法内部,对请求传递过来的数据进行校验...
  • Struts之ActionSupport

    2016-04-17 17:54:58
    struts2的一个action肯定要继承一个ActionSupport 这个action将会调用service中的方法  eg: private UserService userService; 加上set方法 public void setUserService(UserService userService) { this....
  • apex:actionSupport

    千次阅读 2015-10-29 14:10:46
    https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_actionSupport.htm
  • ActionSupport实现验证

    2019-10-04 21:37:06
    只要Action类继承了ActionSupport,就可以用验证方案了 是个原始的方案,需要自己写代码,但是很灵活,登陆案例 不足:业务处理和验证的代码混在一起,不方便验证部分的复用和维护 @Override public String ...
  • ActionSupport与action区别

    2016-11-04 14:02:00
    ActionSupport是action接口的一个实现类。这个类除了实现action接口还实现了Validateable(用于验证)等接口,开发中常用功能都已有实现了 。推荐使用继承ActionSupport类。 1.实现Action 接口 (implements Action)...
  • 1.struts2的action一般可以实现Action或者继承ActionSupport,一般都倾向于后者,ActionSupport也实现了Action接口  ActionSupport都validate方法,可以实现验证功能 对于action的请求,会根据参数来自动寻找相应...
  • 但是由于Xwork的Action接口非常简单,为程序员提供的帮助有限,所以,实际开发中,会更多的使用继承ActionSupport类来实现Action的方式,如部分代码: import com.opensymphony.xwork2.ActionSupport; public ...

空空如也

1 2 3 4 5 ... 20
收藏数 5,062
精华内容 2,024
关键字:

actionsupport