`
Dream.V
  • 浏览: 32315 次
社区版块
存档分类
最新评论

Struts2接受前台数据的3种方式。

 
阅读更多
图解:在Eclipse中建立第一个Struts2程序中我们建立了第一个struts程序,那么如何把登陆页面中的用户名传递到登录成功的页面中呢?
有三种方式,

1,使用默认的action的传递方式。
2,自定义一个vo,在action中使用这个vo
3,使用ModelDriven的方式。
下面分别叙述。

1,使用默认的action的传递方式。
action文件如下:
package struts2.login;

public class LoginAction {
   
    private String username;
    private String password;
   
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
   
    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (username.equalsIgnoreCase("aaa") &&
                password.equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    }

}




登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">


欢迎您,<s:property value="username" />登录成功。


2,自定义一个vo,在action中使用这个vo
自定义vo文件名:LoginVO.java
文件内容:
package struts2.login;

public class LoginVO {
    private String username;
    private String password;
   
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
   
}




在Action文件中,要使用这个vo
文件内容:
package struts2.login;

public class LoginAction {
    private LoginVO user = null;

    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (user.getUsername().equalsIgnoreCase("aaa") &&
                user.getPassword().equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    }

    public LoginVO getUser() {
        return user;
    }

    public void setUser(LoginVO user) {
        this.user = user;
    }

}


登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">


欢迎您,<s:property name="user.username">登录成功。



注意login文件的部分也要进行修改
文件内容如下:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<title>login2</title>

<form action="login.action" method="post">
  username:<input type="input" name="user.username"><br>
  password:<input type="input" name="user.password"><br>
  <input type="submit" value="登录">
</form>



3,使用ModelDriven的方式。
同样也需要一个vo,这个vo和方法2中的一致,但是action中的写法就不一样了。
action文件内容如下:
package struts2.login;

import com.opensymphony.xwork2.ModelDriven;

public class LoginAction implements ModelDriven<LoginVO>{
    @Override
    public LoginVO getModel() {
        // TODO Auto-generated method stub
        return user;
    }

    private LoginVO user = new LoginVO();
    public String execute() {
        System.out.println (LoginAction.class.hashCode());
        if (user.getUsername().equalsIgnoreCase("aaa") &&
                user.getPassword().equals("aaaaaa")) {
            return "loginSuc";
        }
        else {
            return "loginFail";
        }
    }
}



而登陆成功的页面和login的文件则不需要追加user的前缀,即和方法1的文件内容一样。

三种方法的总结:
第一种方法把form的值都放在action文件中,当form提交的项目很多的时候,action的内容将变得很多,很臃肿。项目少的时候可用。

第二种方法将form的值单独放在vo中,解决了action文件臃肿的问题,同时使form和action分开,较好。但是需要在设置和获取的jsp页面上进行标识。

第三种方法在第二种方法的基础上,通过实现特定的接口,去掉了action中的set和get方法,同时去掉了jsp页面上的标识。使后台程序的logic更加清晰
分享到:
评论

相关推荐

    struts2培训笔记

    - **后台类中的数据直接在前台界面显示**:通过Struts2提供的标签库或者OGNL表达式可以方便地展示Action中的数据。 - **前台表单数据直接赋值到后台类属性**:Struts2的默认拦截器能够自动将HTTP请求参数映射到...

    Java个人简历模板10.doc

    2. 熟练掌握Struts2+Hibernate+Spring进行Java EE项目开发,深入理解Struts2核心思想 3. 熟练掌握Jbpm工作流,理解Jbpm流程实例、任务、执行、候选人、泳道等工作流概念 4. 熟练掌握Lucene(全文检索)、MyBatis、...

    基于javaweb的音乐网站的设计与实现论文--学位论文.doc

    随着互联网和宽带上网的普及,网络传输以其特有的快速、高效、便捷的传输方式越来越被人们接受。在当今社会的影响下,人们因为快节奏的工作和生活产生了极大的压力,这时就需要一个放松的环境去释放这些压力,因此...

    基于SSH的汽车4S店管理系统

    【基于SSH的汽车4S店管理系统】是一种典型的Java Web应用程序,它利用了Struts、Spring和Hibernate这三大框架,简称SSH框架。SSH是Java开发Web应用的主流技术栈,能够帮助开发者高效地构建功能丰富的、模块化的、可...

    凡人网购物系统

    3. **总体设计**:搭建系统架构,选择了Hibernate作为ORM框架,Struts2作为MVC框架,Spring进行依赖管理和事务控制。同时,利用版本控制工具svn进行团队协作,使用MyEclipse作为集成开发环境。 4. **详细设计**:...

    基于Java-web的音乐网站的设计与实现论文

    音乐网站系统以 Struts2 为框架进行开发,以 JSP 作为页面载体,后台数据 库使用 Mysql,在 Windows 环境下使用 MyEclipse开发工具进行开发,采用 Ajax 和 Jqury技术,使得系统更易维护。前台主要实现了用户的登陆...

    基于ssh的网上商城系统(含源文件).pdf

    在SSH系统中,Spring作为容器管理其他组件,包括Struts和Hibernate,还提供了事务管理和数据访问支持。 3. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的数据操作。通过...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一...

    EasyJWeb服务调度和自定义邮件引擎技术的CRM系统实战开发

    通常我们会将一个完成的程序包运行在Web容器(tomcat或其他)中,容器除了要负责接受前台的请求和返回响应以外,还需要开辟大量的内存来负责数据的处理,逻辑的运算,算法的解析等。一个Web容器的内存是有限的,但是...

    framework开发手册.doc

    在以上几个层次中都会用到 PO,如在 web 层中会用来接受前台表单提交的数据,在 DAO 层中会利用 hibernate 对 PO 进行数据操作。由于在项目中用到了 hibernate,因此在生成 PO 后,会进行 hibernate 的配置。 本 ...

    Spring MVC面试宝典1.pdf

    - **配置方式**:SpringMVC倾向于使用注解配置,而Struts2主要依赖XML配置文件。 ##### 3.2 SpringMVC怎么样设定重定向和转发的? - **重定向**:在控制器方法中返回一个字符串"redirect:/url"。 - **转发**:返回...

    基于ssh的网上商城系统.pdf

    SSH是一种流行的企业级Web应用程序开发框架,由Struts作为表现层,Spring作为业务层,Hibernate作为持久层,共同协作实现数据的存储、业务逻辑的处理以及用户界面的展示。 系统环境基于Windows操作系统,利用MySQL...

    权限管理系统

    - **表示层** (View): 前台界面,展示数据和接收用户输入。 - **控制层** (Controller): 处理业务流程,接受用户请求并调用业务层处理。 - **业务层** (Manager): 实现业务逻辑。 - **持久层** (DAO): 数据访问...

    java网上购物系统毕业设计答辩PPT.pptx

    在选题简介中,作者提到随着计算机网络技术的飞速发展和人们生活节奏的不断加快,电子商务技术已经逐渐融入了人们的日常生活当中,网上商城作为电子商务最普遍的一种形式,已被大众逐渐接受。因此,开发一个网上商城...

    j2ee个人简历 java web程序员简历

    - 使用Struts框架进行前端控制,Hibernate作为数据持久化工具,Spring作为依赖注入容器。 #### 七、IT技能 - **编程语言**: - JAVA语言:12个月熟练程度。 - JSP/Servlet:8个月熟练程度。 - Struts:6个月...

    java简历模板4.doc

    - **主要职责**:负责部分DAO层的设计与开发,搭建前台交互管理页面。 - **项目收获**:进一步熟练了Hibernate框架的使用,提升了编程技巧和设计思维。 #### 三、教育背景 - **学校**:湖南信息科学职业学院 - **...

    java应用领域分析

    Java语言被用于编写服务端应用,但大多数没有前端,都是从一个服务端(上一级)接受数据,处理数据后发向其他的处理系统(下一级)。 网站应用 Java语言同样也在电子商务和网站开发上有着广泛的运用。可以使用很多...

Global site tag (gtag.js) - Google Analytics