Struts2框架02 消息传递
1 消息传递
浏览器和服务器之间的数据传递
2 服务器项浏览器发送数据
2.1 在控制器类中增加一个属性,该属性的值就是服务器需要向浏览器发送的数据
2.2 为该属性增加 get 方法
2.3 在处理请求的execute方法中为该属性赋值
2.4 在JSP文件中利用EL表达式获取相关的属性值
package cn.xiangxu.action; /**
* 请求是 /demo/hello 时的处理类
* @author 三少
*
*/
public class HelloAction { /**
* 改属性的属性值就是服务器要传递给浏览器的数据
*/
private String message; /**
* 请求处理方法
* @return
*/
public String execute() {
System.out.println("hello struts2");
message = "我是从服务器发送过来的信息!"; // 给属性赋值
return "success";
} /**
* 实现属性的get方法
* @return 属性值
*/
public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} }
控制器类
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h2>Hello Struts2</h2>
<hr />
<!-- 利用EL表达式获取服务器发送过来的数据 -->
<h2>${message }</h2>
</body>
</html>
msg.jsp
3 浏览器项服务器发送数据
3.1 基本属性的传递方式(理解:个体传递)
在控制器类中定义与浏览器页面元素name的属性值一致的属性
实现该属性的set方法
3.1.1 登录案例
》用户输入:http://localhost:8080/ssh01/login/toLogin
》跳转到登录页面
》输入用户名和密码后,点击登录按钮就跳转到主页面
》在控制台打印用户名和密码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="http://localhost:8080/ssh01/login/toMain" method="post">
<div>
用 户:<input type="text" name="username"/>
</div>
<div>
密 码:<input type="password" name="password" />
</div>
<div>
<input type="submit" value="登录" />
</div>
</form>
</div>
</body>
</html>
login.jsp (登录页面)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎来导庠序科技主页</h2>
<h2>开发人员还是菜鸟,还无法开发庠序科技的主页面</h2>
</body>
</html>
main.jsp (主页面)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 注意:一个请求路径下可以有多个请求名 -->
<package name="login" namespace="/login" extends="struts-default"> <!-- 请求路径:login -->
<action name="toLogin"> <!-- 请求名:toLogin -->
<result name="success">
/WEB-INF/login.jsp
</result>
</action>
<action name="toMain" class="cn.xiangxu.action.LoginAction"> <!-- 请求名:toMain -->
<result name="success">
/WEB-INF/main.jsp
</result>
</action>
</package> </struts>
struts.xml (struts框架配置文件)
package cn.xiangxu.action; /**
* 浏览器项服务器发送数据的控制类
* @author 三少
*
*/
public class LoginAction {
/**
* 用于接受浏览器发送过来的用户名
*/
private String username; // 属性名必须和表单中的input元素的name属性值相同,否则接收不到数据;必须实现该属性的set方法,否则也接受不到数据
/**
* 用于接受浏览器发送过来的密码
*/
private String password; /**
* 请求执行方法
* @return
*/
public String execute() {
System.out.println("用户名为:" + username);
System.out.println("用户密码为:" + password);
return "success";
} public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
} }
LoginAction (控制器类)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<c:url var="url" value="/login/toMain"></c:url> <!-- 会自动添加前面的部分 -->
<div>
<%--
<form action="http://localhost:8080/ssh01/login/toMain" method="post">
--%>
<form action=${url } method="post"> <!-- 对上面一行代码的优化 -->
<div>
用 户:<input type="text" name="username"/>
</div>
<div>
密 码:<input type="password" name="password" />
</div>
<div>
<input type="submit" value="登录" />
</div>
</form>
</div>
</body>
</html>
login.jsp (优化后的登录页面)
注意:使用 JSTL 进行的优化
3.2 域模型传递方式(理解:打包传递)
将浏览器要传递个服务器的数据打包成一个对象
服务器端的控制器类增加一个对应的属性,并且实现该属性的set、get方法(如果只是接收数据的话无需实现get方法)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<c:url var="url" value="/login2/toMain"></c:url> <!-- 会自动添加前面的部分 -->
<div>
<%--
<form action="http://localhost:8080/ssh01/login2/toMain" method="post">
--%>
<form action=${url } method="post"> <!-- 对上面一行代码的优化 -->
<div>
用 户:<input type="text" name="user.username"/> <!-- 这里的user是控制器类中的一个属性 -->
</div>
<div>
密 码:<input type="password" name="user.password" /> <!-- 这里的user是控制器类中的一个属性 -->
</div>
<div>
<input type="submit" value="登录" />
</div>
</form>
</div>
</body>
</html>
login2.jsp (登录页面)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎${user.username }</h2> <!-- 获取服务器发送过来的用户名 -->
<h2>欢迎来导庠序科技主页</h2>
<h2>开发人员还是菜鸟,还无法开发庠序科技的主页面</h2> </body>
</html>
main2.jsp (主页面)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 注意:一个请求路径下可以有多个请求名 -->
<package name="login2" namespace="/login2" extends="struts-default"> <!-- 请求路径:login -->
<action name="toLogin"> <!-- 请求名:toLogin -->
<result name="success">
/WEB-INF/login2.jsp
</result>
</action>
<action name="toMain" class="cn.xiangxu.action.LoginAction2"> <!-- 请求名:toMain -->
<result name="success">
/WEB-INF/main2.jsp
</result>
</action>
</package> </struts>
struts.xml (struts框架配置文件)
package cn.xiangxu.entity; /**
* 登录信息实体类
* @author 三少
*
*/
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;
} @Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
} }
User.java (数据实体类)
package cn.xiangxu.action; import cn.xiangxu.entity.User; /**
* 浏览器项服务器发送数据的控制器类(利用域模型传递实现)
* @author 三少
*
*/
public class LoginAction2 {
/**
* 该属性的属性值就是浏览器发送过来的数据
*/
private User user; public String execute() {
System.out.println("用户名:" + user.getUsername());
System.out.println("密码:" + user.getPassword());
System.out.println(user);
return "success";
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }
LoginAction2.java (控制器类)
Struts2框架02 消息传递的更多相关文章
- Struts2框架基础
Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...
- Struts2框架简介和示例
struts2框架 Struts2是java web的框架,在Java Web开发中,表示层框架,其核心是通过扩展Servlet来帮助处理http请求. Struct2的基本流程 Struct2的框架 ...
- struts2 框架处理流程
struts2 框架处理流程 流程图如下: 注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以 ...
- 搭建一个简单struts2框架的登陆
第一步:下载struts2对应的jar包,可以到struts官网下载:http://struts.apache.org/download.cgi#struts252 出于学习的目的,可以把整个完整的压 ...
- Struts2框架之-注解开发
Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...
- Struts2 框架的快速搭建
方便myEclipse 手动配置Struts2框架,写下此文,需要的朋友拿走不谢~ 一.引入JAR包 WEB工程->WebRoot->WEB-INF->lib引入Struts2对应版 ...
- struts2框架 初始别
struts2 是webwork和struts合并而来. 1.下载struts2 说明: Full Distribution: 为完整版下载,建议下载它 Example Applications:st ...
- struts2框架快速入门小案例
struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: a ...
- 搭建struts2框架
struts是一个经典的MVC模式拦截器比过滤器拦截的力度更大 搭建struts2框架1.引入lib包 9个(2.3版本的)common-fileupload;common-io;common-lan ...
随机推荐
- Ceph pg分裂流程及可行性分析
转自:https://www.ustack.com/blog/ceph-pg-fenlie/ 1 pg分裂 Ceph作为一个scalable的分布式系统,集群规模会逐渐增大,为了保证数据分布的均匀性, ...
- mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent
数据文件结构 Extent 在每一个数据文件内,MongoDB把所存储的BSON文档的数据和B树索引组织到逻辑容器“Extent”里面.如下图所示(my-db.1和my-db.2 是数据库的两个数据文 ...
- 1 Python 环境搭建
Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本. U ...
- Linux-压缩与解压缩命令
常用的压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2 1.Zip 压缩文件:zip 压缩文件名 源文件 压缩目录:zip -r 压缩文件名 源文件 解压缩.z ...
- P2152 [SDOI2009]SuperGCD (luogu)
Stein算法是一种计算两个数最大公约数的算法,是针对欧几里德算法在对大整数进行运算时,需要试商导致增加运算时间的缺陷而提出的改进算法. 算法思想: 由J. Stein 1961年提出的Stein算法 ...
- hdu5087 Revenge of LIS II (dp)
只要理解了LIS,这道题稍微搞一下就行了. 求LIS(最长上升子序列)有两种方法: 1.O(n^2)的算法:设dp[i]为以a[i]结尾的最长上升子序列的长度.dp[i]最少也得是1,就初始化为1,则 ...
- uva120 Stacks of Flapjacks (构造法)
这个题没什么算法,就是想出怎么把答案构造出来就行. 思路:越大的越放在底端,那么每次就找出还没搞定的最大的,把它移到当前还没定好的那些位置的最底端,定好的就不用管了. 这道题要处理好输入,每次输入的一 ...
- java web工程启动socket服务
1.新建web工程 2.自定义类 实现ServletContextListener 接口 在contextInitialized方法中启动socket服务的线程 在contextDestroyed方法 ...
- 463. Island Perimeter Add to List
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- 微信小程序编写物流信息进度样式
做电商类型的小程序一定会碰到编写物流信息的时候,一般页面如下图 难点在于只有一条信息时候的页面样式 以及多条信息最后一条信息的页面样式 之前没做过这一块的东西,所以刚碰到的时候想了老半天orz.后来上 ...