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 ...
随机推荐
- DSD, DFF, DSF, DST概念解析
DSD = Direct Stream Digital; DST = D DSD是技术原理. DSDIFF简称DFF 是文件后缀名 DSF也是文件后缀名,他们是一个意思,只是一个是飞利浦的叫法 一个 ...
- Eclipse集成c与c++
1.eclipse 开普勒版本 2.安装mingw 3.配置环境变量mingw的 path 加入;C:\MinGW\bin 4.eclipse 中的市场搜索 CDT
- winform使用相对路径读取文件的方法
获取exe文件的路径进行截取,分两次进行,然后拼接文件名,形成全路径 代码如下: string haarXmlPath = @"haarcascade_frontalface_alt_tre ...
- 信息标记 以及信息提取--xml-json-yaml
1 信息标记的三种方式: XML: JSON: YAML: 1 缩进 表示所属关系: 2 - 表示并列关系: 3 | 表示整块数据: HTML----XML的一种形式: 2 信息提取的方法: ...
- Reinforcement Learning Q-learning 算法学习-1
- BZOJ - 3123 森林 (可持久化线段树+启发式合并)
题目链接 先把初始边建成一个森林,每棵树选一个根节点递归建可持久化线段树.当添加新边的时候,把结点数少的树暴力重构,以和它连边的那个点作为父节点继承线段树,并求出倍增数组.树的结点数可以用并查集来维护 ...
- LeetCode Image Smoother
原题链接在这里:https://leetcode.com/problems/image-smoother/description/ 题目: Given a 2D integer matrix M re ...
- bzoj 3625(CF 438E)The Child and Binary Tree——多项式开方
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3625 http://codeforces.com/contest/438/problem/E ...
- ELK多种架构及优劣
圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.本文旨在针对复杂的大数据运维系统推荐一把利器,达到抛 ...
- think python chapter2
1.An assignment statement creates a new variable and gives it a value: Variable names can be as long ...