- 浏览: 202412 次
- 性别:
- 来自: 包头
-
最新评论
-
chengeng:
图片没有显示。
登录系统-基于struts2+spring+hibernate分层架构 -
chengeng:
不知为什么,图片没有显示出来。
登录系统-基于struts2+spring+hibernateJPA分层架构 -
rdz09:
解析得很详细,不错
从头学起:struts2(1) -
zxd543:
图怎么都看不见呢?
登录系统-基于struts2+spring+hibernate分层架构 -
huweijie:
...
JAVA语言程序设计-第九章 异常处理
从头学起:struts2(1)
从页面跳转说起:先看一个例子,使用通常的方式进行页面跳转。
建立如下两个页面:
first.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> first </title>
</head>
<body>
<h1>这里是:first.jsp </h1>
<s:form action="second.jsp">
<s:submit value="提交到second.jsp" />
</s:form>
</body>
</html>
second.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>second</title>
</head>
<body>
<h1>这里是:second.jsp!</h1>
<s:a href="first.jsp">点击这里转到first.jsp</s:a>
</body>
</html>
在first.jsp中使用submit提交form表单的方式跳转到secont.jsp页面,而second.jsp页面使用超链接的方式跳转到了first.jsp页面。在上面的页面中,我们使用了struts2的标签。
这样的方式造成了页面之间的紧密耦合,当页面众多时,会造成非常复杂的耦合关系;如果涉及到数据层的话还会造成页面和数据层的紧密耦合,不符合分层原则。
下面我们使用strts2的结构进行页面跳转。首先我们创建一个struts.xml文件(当然应该先导入struts2框架所需的包,导入那些包网上搜一下即可):
<struts>
<package name="default" extends="struts-default">
<action name="second" class="action.myAction">
<result name="msg">/second.jsp</result>
</action>
<action name="first" class="action.myAction">
<result name="msg">/first.jsp</result>
</action>
</package>
</struts>
文件中主要的标签是:<action>,其name属性表示页面发出的请求“信号”,class属性表示控制中心接收到请求“信号”后应该作出的“动作”,其值为包名加类名;<action>的子标签<result>表示“动作”的“结果”,其属性name表示接收到的“动作”的“结果”,标签里的文本表明应跳转的“方向”。由此可以解读文件中的第一段内容:当接收到一个名为:“second”的信号后,执行“action”包中的“myAction”动作,当返回一个“msg”字符串时跳转到second.jsp页面。文件中的第二段内容以此类推。
但是谁会把“信号”送过来呢?答案是web.xml文件,我们在其中添加如下内容:
<filter>
<filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
上面文本表示:系统中有一个名为struts2的过滤器,要对发出了“*.action”或“*.jsp”的请求,将此请求发送到struts.xml进行匹配,其中“*”为通配符。
接着我们创建一个包:action,在包中创建一个action类:myAction,代码如下:
package myaction;
public class myAction {
public String execute() throws Exception {
return "msg";
}
}
为了简单起见,不论什么情况一律返回一个“msg”字符串。运行一下项目,就会得到和原来一样的效果。但是怎么知道这样的跳转是经过了“控制”的呢?我们不妨将struts.xml中的语句:
<result name="msg">/second.jsp</result>
改为:
<result name="msg">/third.jsp</result>
于是当页面发出“second.jsp”请求时,经过“控制”后,到达了“third.jsp”。
完成了跳转的任务后,还有一个问题没有解决:数据传输,我们常常需要在页面跳转的时候进行数据的传输。下面我们看一下struts2怎么样进行数据的传输。
首先修改first.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>first</title>
</head>
<body>
<s:form action="myaction.action">
<s:textfield name="userName" label="姓名"/>
<s:password name="userPassword" label="密码" />
<s:submit value="提交"/>
</s:form>
</body>
</html>
在这里我们将action属性的值按照通常的做法,写成和action类相近的名称,扩展名一律为:.action。
在action类中做如下修改:
package myaction;
import com.opensymphony.xwork2.ActionContext;
public class myAction {
private String userName;
private String userPassword;
private String mymsg;
public String execute() throws Exception {
ActionContext.getContext().getSession().put("user", getUserName());
ActionContext.getContext().getSession().put("pass", getUserPassword());
mymsg="欢迎"+userName+"来访!";
return "msg";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getMymsg() {
return mymsg;
}
}
action类通过其属性userName、userPassword、mymsg与页面进行数据交换,注意与页面的控件name的值一定相同。同时又可以通过action上下文的Session对象进行数据传输。
修改second.jsp以接收经过“控制”中心处理过的数据:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>second</title>
</head>
<body>
<h1>欢迎,${sessionScope.user},您已经登录!${sessionScope.pass}</h1>
<h2><s:property value="mymsg"/></h2>
<s:a href="first.jsp">点击这里转到first.jsp</s:a>
</body>
</html>
jsp文件使用了两种方式接收来自action的数据。
发表评论
-
确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
2012-04-07 18:22 30948确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7255Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22607java信息对话框:MessageDialog是一个非常 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 19281、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
登录系统-基于struts2+spring+hibernate分层架构
2011-11-29 21:43 34631、创建mysql数据库,结构如下图所示: 2、 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8201在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于servlet+hibernate分层架构
2011-11-21 12:13 3240本实验使用servlet+hibernate分层结构,目的是 ... -
登录系统-基于struts2的分层架构
2011-11-19 21:48 28601.下载支持Netbeans7.0的Struts2插件,在工具 ... -
登录系统-基于servlet
2011-11-19 19:48 31851. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 42231.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1551基于NetBeans7.0的 Hebernate入门 ... -
JAVA语言程序设计-第十六章 网络编程
2011-03-30 11:28 934计算机网络是利用通信设备和线路将地理位置不同、功能独立的 ... -
JAVA语言程序设计-第十五章 数据库编程
2011-03-30 11:26 960数据库是管理和组织信息和数据的综合系统,目前使用最 ... -
JAVA语言程序设计-第十四章 多线程
2011-03-30 11:25 970线程是可以独立、并发执行的程序单元。多线程指程序中同时 ... -
JAVA语言程序设计-第十三章 Applet程序
2011-03-30 11:23 1060Java 程序有两种:独立应用程序和Applet程 ... -
JAVA语言程序设计-第十二章 高级用户界面GUI设计
2011-03-30 11:20 920上一章重点讲解了程序设计界面中用到的各种组件,如标 ... -
JAVA语言程序设计-第十一章 图形用户界面
2011-03-30 11:18 885在java中,AWT是用来处理图形最基本的方式,它 ... -
JAVA语言程序设计-第十章 输入与输出
2011-03-30 11:15 984输入和输出是程序与用户之间沟通的桥梁,程序与用 ... -
JAVA语言程序设计-第九章 异常处理
2011-03-30 11:15 1698异常是指程序运行过程中出现的非正常现象,例如用户输 ...
相关推荐
Struts和Hibernate是Java开发中两个非常重要的框架,它们在构建企业级Web应用程序时起着核心作用。本教程系列的第五集第三章聚焦于这两者的整合应用,旨在帮助开发者更高效地开发和管理数据驱动的Web应用。 Struts...
缝在一起的三个Struts学习目标确定前端Web编程的三个基本Struts对给定的代码进行更改,以便可以看到DOM更新效果引起对给定代码的更改,以便在服务器端行为中存根对给定的代码进行更改,以便事件监听起作用介绍还记得...
缝在一起的三个Struts学习目标确定前端Web编程的三个基本Struts对给定的代码进行更改,以便可以看到DOM更新效果引起对给定代码的更改,以便在服务器端行为中存根对给定的代码进行更改,以便事件监听起作用介绍还记得...
对给定的代码进行更改,以便事件监听起作用 介绍 还记得我们开始探索“ Simple Liker”应用程序时的过程吗? 您可能不确定是否会做到这一点,但是您已经做到了。 现在,您应该拥有创建基本Web应用程序所需的信息! ...
ModelJ是一款强大的开源软件,它致力于简化和加速J2EE(Java 2 Platform, Enterprise Edition)应用的开发过程。通过利用代码生成技术,ModelJ可以帮助开发者高效地创建并部署基于Struts和EJB(Enterprise JavaBeans...