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 ...
随机推荐
- 交换排序—快速排序(Quick Sort)原理以及Java实现
交换排序—快速排序(Quick Sort) 基本思想: 1)选择一个基准元素,通常选择第一个元素或者最后一个元素, 2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素 ...
- ebs R12 支持IE11
如果不考虑升级jdk到1.7的话,可以使用oracle推荐的方法. 1.兼容模式 2.Toolkit to Disable Automatic Delivery of Internet Explore ...
- 初学者的Node.js学习历程
废话篇: 对于我这个新手的不能再白菜的人来说,nodejs的大名都有耳闻,所以说他是一项不可不克服的技能也是可以说的.但是之前没有搞清楚的情况之下胡乱的猜测,是的我对node.js没有一个具体的概念的 ...
- HACMP5.4常用命令
整理自己在AIX5.3平台上配置HACMP5.4高可用环境时用到的一些命令. 操作系统相关 1. 查看操作系统版本 oslevel -r 查看当前系统最终版本 oslevel -s 查看当 ...
- Android Volley完全解析(二),使用Volley加载网络图片
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法. ...
- 获得客户端ip
获得客户端ip private function GetIP(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ ...
- HDU - 6191 Query on A Tree (可持久化字典树/字典树合并)
题目链接 题意:有一棵树,树根为1,树上的每个结点都有一个数字x.给出Q组询问,每组询问有两个值u,x,代表询问以结点u为根的子树中的某一个数与x的最大异或值. 解法一:dfs序+可持久化字典树.看到 ...
- C#异步编程(五)异步的同步构造
异步的同步构造 任何使用了内核模式的线程同步构造,我都不是特别喜欢.因为所有这些基元都会阻塞一个线程的运行.创建线程的代价很大.创建了不用,这于情于理说不通. 创建了reader-writer锁的情况 ...
- vbs查看系统开关机时间
如何获取XP系统的开机时间? 下面给出两种代码,保存到扩展名为vbs的文件中.具体哪个请根据自己需求决定. 一:根据系统日志,查看开机时间和关机时间,---- 使用弹出对话框的形式 Set WMI = ...
- HIVE-如何查看执行日志
HIVE既然是运行在hadoop上,最后又被翻译为MapReduce程序,通过yarn来执行.所以我们如果想解决HIVE中出现的错误,需要分成几个过程 HIVE自身翻译成为MR之前的解析错误 Hado ...