Struts2学习笔记(2) 表单提交
简介:两种方式
一.基本的表单提交:Struts2 没有formbean,在action内有对应表单form的get set方法,即可获得表单提交的数据
二.“支持更高级的pojo访问”,这个具体意思不好说,看例子就明白了
下面分别是两种方式的例子(用户登录)
一.基本的表单提交
步骤:
1.struts.xml代码
<?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>
<!--
package提供了将多个Action组织为一个模块的方式
name: package名称 (必须) 其名字可以随意取,但必须是唯一的
extends: 继承的父package名称 (非必须, 但如果有,其父package必须在本package之前)
namespace: 定义package命名空间 (非必须)
该命名空间影响到url的地址,
例如此命名空间为/test,
那么访问是的地址为http://localhost:8080/struts2/test/XX.action
-->
<package name="logon" extends="struts-default" namespace="/logon" >
<action name="logonAction" class="logon.LogonAction">
<result name="LogonSuccess">/logonSuccess.jsp</result>
<result name="LogonFailure">/logonFailure.jsp</result>
</action>
</package>
</struts>
2.logon.jsp代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<html>
<head>
<title>logon</title>
</head>
<body>
<form action="logon/logonAction.action" method="post">
<table>
<TR>
<td>UserName</td>
<td><input name="username" type="text" /></td>
</TR>
<TR>
<td>PassWord</td>
<td><input name="password" type="password" ></td>
</TR>
<TR>
<td><input type="submit" value="LOGON" /></td>
<td><input type="reset" value="RESET" /></td>
</TR>
</table>
</form>
</body>
</html>
3.LogonAction.java代码
package logon;
import com.opensymphony.xwork2.ActionSupport;
public class LogonAction extends ActionSupport {
private String username;
private String password;
private String reMsg; //返回消息 在登录成功或者失败页面显示;
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 getReMsg() {
return reMsg;
}
public void setReMsg(String reMsg) {
this.reMsg = reMsg;
}
@Override
public String execute() throws Exception {
if(this.getUsername()==null || this.getPassword()==null){
return "LogonFailure";
}
if("jet".equals(this.getUsername()) && "li".equals(this.getPassword())){
this.setReMsg("欢迎您:"+this.getUsername());
return "LogonSuccess";
}
this.setReMsg("用户名或者密码错误!");
return "LogonFailure";
}
}
4.logonSuccess.jsp 代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<html>
<head>
<title>logonSuccess</title>
</head>
<body>
登陆成功!
<br>
${reMsg} <!-- 接收从ACTION返回的内容 -->
</body>
</html>
5.logonFailure.jsp 代码
<%@page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>logonFailure</title>
</head>
<body>
登陆失败!
<br>
${reMsg} <!-- 接收从ACTION返回的内容 -->
</body>
</html>
二.支持更高级的POJO访问
步骤:
1.struts.xml 同一的struts.xml;
logonSuccess.jsp 和logonFailure.jsp也同一的
2.建立User.java 代码如下
package logon;
public class User {
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;
}
}
3.logon.jsp 代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<html>
<head>
<title>logon</title>
</head>
<body>
<form action="logon/logonAction.action" method="post">
<table>
<TR>
<td>UserName</td>
<td><input name="user.username" type="text" /></td> <!-- 注意 这里的user 要和action中的对应 -->
</TR>
<TR>
<td>PassWord</td>
<td><input name="user.password" type="password" ></td>
</TR>
<TR>
<td><input type="submit" value="LOGON" /></td>
<td><input type="reset" value="RESET" /></td>
</TR>
</table>
</form>
</body>
</html>
4.LogonAction.java
package logon;
import com.opensymphony.xwork2.ActionSupport;
public class LogonAction extends ActionSupport {
/*
* 这里定义的User 对象名称要和 页面from内的名称一致,包括大小写!
* 如页面from内是 user.username 这里的定义的对象名必须是user;
* 如页面是 userInfo.username 这里也必须是 userInfo
* 生成User的set get方法
* 其实 User对象的名字定义未必一定要和from内的名称一致,需要保持一致的是User的set 和get方法, 这里的要保持一致
* 前面要求保持一致,就是如果一致了, 生成的get set方法自然一致
* 譬如 get set方法生成后 你可以修改 User的对象 user名称为 aaa bbb 这样都不影响,但不可修改其get set方法的
* ps:以上是自己摸索试验了几次得出的结论 不保证一定严谨; 如果有错误 恳请指正
*/
private User user;
private String reMsg; //返回值 用于登陆成功或者失败的提示
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getReMsg() {
return reMsg;
}
public void setReMsg(String reMsg) {
this.reMsg = reMsg;
}
@Override
public String execute() throws Exception {
if(user==null){
return "LogonFailure";
}
if("jet".equals(user.getUsername())&&"li".equals(user.getPassword())){
this.setReMsg("欢迎您:"+user.getUsername());
return "LogonSuccess";
}
this.setReMsg("用户名或者密码错误!");
return "LogonFailure";
}
}
PS: 试用strusts2标签表单提交 namespace 和action分开
<s:form action="logonAction" namespace="/logon"> <!-- namespace 和 action分开写 -->
<s:textfield name="user.username"></s:textfield>
<s:password name="user.password"></s:password>
<s:submit value="submit"></s:submit>
</s:form>
分享到:
相关推荐
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...
### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...
5. **学习笔记**: 学习SSH整合时,通常会涵盖以下几个方面:Struts2的配置、Action和结果映射;Spring的IoC和AOP配置,以及与Hibernate的集成;Hibernate的实体类、映射文件和基本操作。此外,还会涉及如何设置...
Struts-笔记-1很可能是对学习或研究Struts框架过程中的重要记录,它可能包含了初学者如何理解Struts的核心概念、架构以及如何在实际项目中应用的要点。 首先,Struts框架的起源和发展对于理解其重要性至关重要。...
防止表单重复提交是Web开发中的常见问题,Struts2通过令牌机制来解决这个问题,避免了同一操作被多次执行。 项目练习部分涉及到使用Ajax实现异步请求并返回JSON数据,这通常通过Struts2的JSON插件实现。文件下载则...
这个"struts2学习笔记"涵盖了Struts2的核心概念、配置、动作、拦截器、结果类型等关键知识点,旨在帮助初学者深入理解并掌握Struts2框架。 1. **Struts2核心概念** - **Action**:是Struts2的核心,负责处理用户的...
### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” > “New” > “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...
黑马程序员的笔记中可能包含了如何创建一个简单的Struts2应用,从HelloWorld实例到实际的表单提交、文件上传下载等实战案例,帮助初学者快速掌握Struts2的基本用法。 通过学习这些笔记,开发者将能够理解Struts2的...
在Struts2的学习笔记中,`note.jsp`可能同样用于显示和编辑笔记,但使用的是Struts2的标签库,如`<s:property>`来显示模型对象的属性,以及`s:form`标签创建表单。Struts2允许直接在JSP页面中使用Action的属性,无需...
Struts2 学习笔记-part2: 实现用户登录功能 在上一部分中,我们了解了构建一个基于Struts2的Java Web项目所需的基本库和配置文件。现在,我们将逐步实现一个简单的用户登录功能。 一、创建Action类 在Struts2框架...
本篇学习笔记将引导我们从零开始,通过一个简单的"HelloWorld"项目,了解Struts2的基础知识。 首先,我们需要在本地环境中搭建Struts2的开发环境。这包括安装JDK、配置Java环境变量、下载Apache Struts2的最新版本...
这个"struts2 学习资料"包含了关于Struts2的基础到进阶的学习资源,可能是教程文档、示例代码或者是相关的学习笔记。 Struts2框架的核心特性包括: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它...
### Struts2学习笔记 #### 一、Struts2配置文件详解 在深入理解Struts2框架之前,我们首先需要了解其核心配置文件——`struts.xml`。 **1. struts.xml配置** ```xml <?xml version="1.0" encoding="UTF-8"?> <!...
### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...