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 ...
随机推荐
- vue cli关闭eslint严格语法检查
eslint是一个JavaScript的校验插件,通常用来校验语法或代码的书写风格. 官方文档:https://eslint.org 这篇文章总结了eslint的规则:Eslint规则说明 1.关闭e ...
- HTML代码中的空格和空行
HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格. 例子1:(文本内容中的连续空格) 代码 <p>这段文本中,输入连续的空格 大概输入了十个.</p> 显示效 ...
- linux 日常使用命令
●安装和登录命令:login.shutdown.halt.reboot.mount.umount.chsh ●文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat ...
- Eclipse插件开发_学习_02_GEF入门实例
一.前言 这一节,我们将会创建一个GEF入门实例 二.新建RCP项目 1. New 一个 Plug-in Project 2.输入项目名 项目名:com.ray.gef.helloworld 3.Co ...
- CodeForces-831A-Unimodal Array (水题)
题目链接 /* Name: Copyright: Author: Date: 2018/5/6 19:34:23 Description: */ #include <iostream> # ...
- Senior Manufacturing Technical Manager
Job Description As a Manufacturing Technical Manager, you will be responsible for bringing new produ ...
- PhotoShop使用指南(3)—— 将多张图片添加到图层
第一步:选择文件菜单>脚本>将文件载入堆栈 第二步:点击浏览添加要批量载入的图片
- asp.net mvc中model注意事项
1 modelState必须是需要在action Filter中才生效 2 发送接口的json nullable的类型必须初始化
- angular track by $index
这个东西配合删除数组时会出现永远删除uoloadPicArr这个数组的最后一个一项 其用法是主要用在当ng-repeat循环时如果其内部的dom元素有id属性存在 可以避免页面出现相同的id 只是一 ...
- 洛谷4719 【模板】动态dp
题目:https://www.luogu.org/problemnew/show/P4719 关于动态DP似乎有猫锟的WC2018论文,但找不见:还是算了. http://immortalco.blo ...