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-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts2-json-plugin,Struts JSON插件
struts2-ssl-plugin-1.2.1.jar
struts2-convention-plugin-2.3.32
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
struts2-convention-plugin-2.3.15.1.jar
struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar
struts2-dojo-plugin-2.2.1.jar, 直接导入到Struts2项目里即可,注意版本。
struts2-convention-plugin-2.3.24.1
struts2-core-2.5.18.jar包下载,支持struts2的类库下载
struts2-dojo-plugin-2.3.15.3.jar.zip
struts2-jquery-plugin-3.1.0.jar
struts2-core-2.5.10.jar ,struts核心包,struts2-core-2.5.10.jar
struts2-jfreechart-plugin-2.1.8.1.jar
默认的struts2-config-browser-plugin包中的ftl文件include标签路径用的相对路径,会找到包内的include文件,将包内ftl里include的路径改成的/开头的全路径。
包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...
struts2的jar之一struts2-core-2.0.14.jar
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...