- 浏览: 200333 次
- 性别:
- 来自: 包头
最新评论
-
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 30926确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7238Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22589java信息对话框:MessageDialog是一个非常 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 18871、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
登录系统-基于struts2+spring+hibernate分层架构
2011-11-29 21:43 34441、创建mysql数据库,结构如下图所示: 2、 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8181在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于servlet+hibernate分层架构
2011-11-21 12:13 3204本实验使用servlet+hibernate分层结构,目的是 ... -
登录系统-基于struts2的分层架构
2011-11-19 21:48 27471.下载支持Netbeans7.0的Struts2插件,在工具 ... -
登录系统-基于servlet
2011-11-19 19:48 31661. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 41971.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1528基于NetBeans7.0的 Hebernate入门 ... -
JAVA语言程序设计-第十六章 网络编程
2011-03-30 11:28 923计算机网络是利用通信设备和线路将地理位置不同、功能独立的 ... -
JAVA语言程序设计-第十五章 数据库编程
2011-03-30 11:26 946数据库是管理和组织信息和数据的综合系统,目前使用最 ... -
JAVA语言程序设计-第十四章 多线程
2011-03-30 11:25 956线程是可以独立、并发执行的程序单元。多线程指程序中同时 ... -
JAVA语言程序设计-第十三章 Applet程序
2011-03-30 11:23 1045Java 程序有两种:独立应用程序和Applet程 ... -
JAVA语言程序设计-第十二章 高级用户界面GUI设计
2011-03-30 11:20 904上一章重点讲解了程序设计界面中用到的各种组件,如标 ... -
JAVA语言程序设计-第十一章 图形用户界面
2011-03-30 11:18 877在java中,AWT是用来处理图形最基本的方式,它 ... -
JAVA语言程序设计-第十章 输入与输出
2011-03-30 11:15 973输入和输出是程序与用户之间沟通的桥梁,程序与用 ... -
JAVA语言程序设计-第九章 异常处理
2011-03-30 11:15 1672异常是指程序运行过程中出现的非正常现象,例如用户输 ...
相关推荐
教程名称:Photoshop从头学起课程目录:【】Photoshop从头学起第(1-10)【】Photoshop从头学起第(11-20)【】Photoshop从头学起第(21-30)【】Photoshop从头学起第(31-40)【】Photoshop从头学起第(41-50)【】Photoshop...
本文将引导读者从头开始使用 Struts 2.0,包括搭建开发和运行环境、将 Struts 2.0 lib 下的 jar 文件添加到工程的构建路径、修改 web.xml 文件、创建 struts.xml 文件等步骤。 首先,需要下载 Struts 2.0 包并将其...
5. **结果类型(Result Types)**:Struts2允许定义不同的结果类型,如dispatcher(转发到一个JSP页面),stream(直接输出流,如文件下载),freemarker或velocity(模板引擎渲染)等,可以根据需求选择合适的输出...
Struts 从头开始学习 基于Myeclipse 是一些网页形式的 另存为的
2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...
5. 自定义标签库:Struts2支持自定义标签,你可能能从源码中学习到如何创建和使用自定义标签实现autocomplete效果。 为了充分利用这个资源,你需要有一定的Java和Struts2基础,同时熟悉JSP、Servlet和JSON等Web开发...
Photoshop从头学起42.flv
通过本教程的学习,你应该能够掌握如何从头开始搭建一个基本的Struts2项目,并了解如何配置和测试Struts2框架。这对于初学者来说是一个很好的起点,后续可以通过添加更多的功能和组件来进一步扩展和优化你的应用。...
4. **拦截器**:Struts 2引入了拦截器,这是一个强大的功能,允许在请求到达Action之前或之后执行额外的逻辑。 通过深入研究这些源代码和注释,你将能够逐步掌握Struts框架,并具备开发实际项目的能力。记得动手...
- **提高开发效率**:Struts框架提供了一套预定义的架构,开发者可以快速构建应用,而无需从头开始编写基础架构代码。 - **代码复用**:通过MVC模式,Struts鼓励代码分离,使得模型、视图和控制器可以独立重用,降低...
- **MVC设计模式**:Struts遵循模型-视图-控制器(Model-View-Controller, MVC)的设计模式,这有助于将业务逻辑、数据展示和用户交互分离,使得应用程序更加模块化和易于维护。 - **基于Servlet和JSP API**:Struts...
2. **Interceptor配置**:Struts2的拦截器可以实现如权限检查、日志记录等功能。例如,添加一个验证拦截器: ```xml <interceptor name="validation" class="org.apache.struts2.interceptor.validation....
教程名称:从头开始学Oracle 11g Release 2 视频教程(15集)课程目录:【】Oracle11gRelease2视频教程_1【】Oracle11gRelease2视频教程_2【】Oracle11gRelease2视频教程_3【】Oracle11gRelease2视频教程_4【】...
1. **struts2-core.jar**:这是 Struts 2 的核心库,包含了框架的基本组件,如 Action、Result、Interceptor 等。 2. **xwork-core.jar**:XWork 框架是 Struts 2 的基础,提供了类型转换、数据绑定、异常处理等...
Struts2并非从头开始创建的新框架,而是基于WebWork进行了进一步的发展和改进。因此,它的核心功能和设计思想深受WebWork的影响。Struts2的主要目标是简化Web应用的开发,并通过强大的拦截器机制和插件架构提供了...
在`Struts2Demo1`这个项目中,我们可以看到上述这些组件的实现,通过运行项目,可以了解Struts2如何处理输入校验和流程控制。这为开发者提供了一个良好的学习起点,有助于理解和掌握Struts2框架的输入验证机制。
- **Struts实现Model2和MVC**:Struts采用了Model2设计模式,这是一种基于MVC的设计模式变体,其中控制器处理用户请求并调用业务逻辑,视图负责显示数据。Struts将这种模式应用于Web应用程序中,使得视图与业务逻辑...
1. **Struts框架概述**:解释了Struts的核心概念,包括它如何简化MVC架构的实现,以及如何通过配置文件(struts-config.xml)来定义应用程序的行为。 2. **控制器组件**:深入讨论了ActionServlet,它是Struts的...
资源名称:Photoshop CS从头学起视频教程【84集】资源目录:【】PhotoshopCS视频教程1-10【】PhotoshopCS视频教程11-28【】PhotoshopCS视频教程29-40【】PhotoshopCS视频教程41-56【】PhotoshopCS视频教程57-70【】...
1. **Struts**:Struts 是一种基于 Java 的开源框架,主要用于构建企业级的 Web 应用程序。 2. **Web框架**:Struts 作为一种 Web 框架,它提供了处理 HTTP 请求、响应的一整套机制,使得开发者能够更加专注于业务...