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页面取值与标签使用详解 #### 引言 在Web应用开发中,Struts2框架因其强大的功能和灵活的配置受到广大开发者青睐。本文将深度解析Struts2框架中页面取值的多种方式及核心标签的使用技巧,帮助开发者更...
6. **JSP页面与Struts2标签库**:"register"可能是对应的JSP注册页面,Struts2提供了一套丰富的标签库,如`s:form`、`s:textfield`、`s:submit`等,这些标签简化了视图层的开发,增强了可维护性。 7. **Action上...
在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们需要声明全局的国际化资源文件。通过设置常量`struts.custom.i18n.resources`的值为`message`,我们...
在Struts2框架中,获取页面表单提交的值是一个常见的需求,这涉及到Struts2如何解析请求参数、如何在Action类中访问这些参数以及如何处理复杂的对象模型。以下将详细解析Struits2中获取页面值的方法,包括基本类型...
Struts2的Value Stack是一种可以方便地在Action和JSP页面之间传递数据的机制。本文将详细介绍如何从Value Stack中取出多个集合数组中的特定值,特别是当存在多个同名集合时如何定位并获取所需数据。 首先,我们需要...
Struts2提供了一种简单而有效的方法来实现这一目标。 首先,我们需要理解国际化的基本概念。国际化(i18n)是使软件能够适应不同地区的文化、语言和格式的过程。这通常涉及到资源文件的使用,这些文件存储了应用中...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化、易于维护的Web应用开发方式。本笔记主要涵盖的是黑马程序员2016年推出的Struts2教程的前3天...
Struts2允许客户端产生的参数在`struts.xml`中通过`${}`语法进行取值,这里的取值并非来自EL表达式,而是从`StackContext`中获取,这是一种不同于传统EL表达式的参数处理方式。 #### MVC模式与Struts2架构 MVC...
- Struts2允许动态地调用Action方法,基于请求参数决定执行哪个方法,增强了Action的灵活性。 10. **Tiles插件**: - Tiles允许将Web页面组合成模板,便于创建复杂的布局和可重用的页面片段。 复习Struts2时,...
### Xwork——Struts2核心 #### Xwork与Struts2的关系 Xwork作为Struts2的核心组件之一,它的设计理念和技术实现对整个Struts2框架起着决定性的作用。Struts2是一个流行的Java Web开发框架,它采用了MVC(Model-...
4. **值栈(Value Stack)**:值栈是Struts2用来存储和传递数据的机制,它可以将Action的属性和OGNL(Object-Graph Navigation Language)表达式关联起来,简化视图层的取值操作。 5. **插件支持**:Struts2拥有...
Struts2框架提供了一系列标签库,它们不仅可以帮助开发者更高效地编写代码,还能够提高Web页面的表现力。Struts2标签库大致分为四类:数据标签、控制流标签、UI标签以及杂项标签。 - **数据标签**:主要负责处理从...
3. **OGNL(Object-Graph Navigation Language)表达式**:Struts2使用OGNL作为默认的表达式语言,它允许在Action和视图之间传递数据,如取值、赋值、方法调用等。OGNL的强大在于其灵活性,可以方便地处理复杂的数据...
`target` 属性主要有以下几种取值: 1. **_blank**:表示链接将在一个新的浏览器窗口或新的标签页中打开。这对于希望用户在不离开当前页面的情况下访问外部链接的情况非常有用。 2. **_self**:这是默认值,表示...
- **赋值方式**:可以通过以下三种方式为新属性赋值: - 直接在标签体中设置值。 - 使用`name`、`property`和`scope`属性从已存在的bean中取值。 - 使用JSP表达式(EL)设置值。 **其他Bean Tags** - `bean:...
- **用法**: OGNL 通常与 Struts2 标签一起使用,不能单独在 Struts 页面中使用;而 EL 可以直接在 JSP 页面中使用。 - **取值**: OGNL 更适合于复杂的对象图导航,而 EL 更适用于简单的数据访问。 **与 JSTL 的...
其中,Struts2标签库(Struts2 Tags Library)是开发者常用的工具之一,它不仅简化了前端页面的开发工作,还提高了应用的性能与可维护性。本文将详细介绍Struts2.0标签库中 `$`, `#`, `%` 的使用方法及其区别。 ###...
以上内容涵盖了Struts框架学习中的核心知识点,包括ActionServlet的配置、初始化参数的设置、欢迎文件和错误页面的配置等。掌握这些知识将帮助开发者更好地理解和运用Struts框架,构建高效、稳定的Web应用。
本文将详细介绍如何在Struts2框架下利用Ajax技术为下拉框动态赋值,这是一个适用于所有下拉列表的通用方法。 首先,我们需要创建一个实体类来存储下拉框的选项信息。这个实体类称为`DictionaryBean`,包含三个属性...
Struts 是一个开源的 MVC...综上所述,Struts 标签和 OGNL 提供了一种高效的方式来处理 JSP 页面中的数据展示和控制流。结合 jQuery 和 AJAX,可以构建出功能丰富的动态 Web 应用程序,实现实时的数据验证和用户交互。