- 浏览: 51049 次
- 性别:
- 来自: 成都
最新评论
-
zeyonq:
原来就是这种龟毛问题困了我一宵。多谢指点。
关于Eclipse“The selection is not within a valid module”的异常 -
cloud21:
为什么我照着写,写不进去,键盘 信息,只有一个退出信息。。
...
C实现Windows全局钩子
JPetStore-5.0程序中不一样的struts
关键字: struts
平常我们使用struts会定义form,写Action,设置struts-config.xml文件,然后页面的数据是以form对象传给Action,然后调用Service层,完成业务,再返回struts-config.xml配置的页面。
而JPetStore-5.0的struts不同,例如:
页面是这样的
struts-config.xml的配置文件是这样的
AccountBean是这样的:
jsp把页面form提交给了/shop/editAccount.shtml,其实所有的数据都提到了一个类里org.apache.struts.beanaction.BeanAction,这个类其实就是一个我们平常写的Action,里面是这样的:
也就是说,在这个类里,程序会取配置文件里的 parameter 属性是否定义,如果定义了,则就用反射调用com.ibatis.jpetstore.presentation.AccountBean里的相应方法;如果没有定义,则就会去配置文件里的path="/shop/editAccount" 属性,取最后一个斜杠后的单词,再用反射调用相应方法;如果parameter 定义了且是parameter="*"则不调用任何一个方法,直接返回,配置的返回页面。
关键字: struts
平常我们使用struts会定义form,写Action,设置struts-config.xml文件,然后页面的数据是以form对象传给Action,然后调用Service层,完成业务,再返回struts-config.xml配置的页面。
而JPetStore-5.0的struts不同,例如:
页面是这样的
<html:form method="post" action="/shop/editAccount.shtml"> <html:hidden name="accountBean" property="validation" value="edit"/> <html:hidden name="accountBean" property="username"/> <h3>User Information</h3> <table> <tr> <td>User ID:</td><td><bean:write name="accountBean" property="username"/></td> </tr><tr> <td>New password:</td><td><html:password name="accountBean" property="password"/></td> </tr><tr> <td>Repeat password:</td><td><html:password name="accountBean" property="repeatedPassword"/></td> </tr> </table> <%@ include file="IncludeAccountFields.jsp" %> <input type="submit" name="submit" value="Save Account Information"/> </html:form>
<html:form method="post" action="/shop/editAccount.shtml"> <html:hidden name="accountBean" property="validation" value="edit"/> <html:hidden name="accountBean" property="username"/> <h3>User Information</h3> <table> <tr> <td>User ID:</td><td><bean:write name="accountBean" property="username"/></td> </tr><tr> <td>New password:</td><td><html:password name="accountBean" property="password"/></td> </tr><tr> <td>Repeat password:</td><td><html:password name="accountBean" property="repeatedPassword"/></td> </tr> </table> <%@ include file="IncludeAccountFields.jsp" %> <input type="submit" name="submit" value="Save Account Information"/> </html:form>
struts-config.xml的配置文件是这样的
<form-beans> <form-bean name="accountBean" type="com.ibatis.jpetstore.presentation.AccountBean"/> </form-beans> <action path="/shop/editAccount" type="org.apache.struts.beanaction.BeanAction" name="accountBean" scope="session" validate="true" input="/account/EditAccountForm.jsp"> <forward name="success" path="/shop/index.shtml"/> </action> <form-beans> <form-bean name="accountBean" type="com.ibatis.jpetstore.presentation.AccountBean"/> </form-beans> <action path="/shop/editAccount" type="org.apache.struts.beanaction.BeanAction" name="accountBean" scope="session" validate="true" input="/account/EditAccountForm.jsp"> <forward name="success" path="/shop/index.shtml"/> </action>
AccountBean是这样的:
public String editAccount() { try { accountService.updateAccount(account); account = accountService.getAccount(account.getUsername()); myList = catalogService.getProductListByCategory(account.getFavouriteCategoryId()); return SUCCESS; } catch (Exception e) { throw new BeanActionException ("There was a problem updating your Account Information. Cause: "+e, e); } } public String editAccount() { try { accountService.updateAccount(account); account = accountService.getAccount(account.getUsername()); myList = catalogService.getProductListByCategory(account.getFavouriteCategoryId()); return SUCCESS; } catch (Exception e) { throw new BeanActionException ("There was a problem updating your Account Information. Cause: "+e, e); } }
jsp把页面form提交给了/shop/editAccount.shtml,其实所有的数据都提到了一个类里org.apache.struts.beanaction.BeanAction,这个类其实就是一个我们平常写的Action,里面是这样的:
public final ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String forward = SUCCESS_FORWARD; try { if (!(form instanceof BaseBean)) { if (form != null) { throw new BeanActionException("The form for mapping '" + mapping.getPath() + "' named '" + mapping.getName() + "' was not an instance of BaseBean. BeanAction requires an BaseBean instance."); } else { throw new BeanActionException("The form for mapping '" + mapping.getPath() + "' named '" + mapping.getName() + "' was null. BeanAction requires an BaseBean instance."); } } BaseBean bean = (BaseBean) form; ActionContext.initCurrentContext(request, response); if (bean != null) { // Explicit Method Mapping Method method = null; String methodName = mapping.getParameter(); if (methodName != null && !NO_METHOD_CALL.equals(methodName)) { try { method = bean.getClass().getMethod(methodName, null); synchronized (bean) { forward = bean.getInterceptor().intercept(new ActionInvoker(bean, method)); } } catch (Exception e) { throw new BeanActionException("Error dispatching bean action via method parameter ('" + methodName + "'). Cause: " + e, e); } } // Path Based Method Mapping if (method == null && !NO_METHOD_CALL.equals(methodName)) { methodName = mapping.getPath(); if (methodName.length() > 1) { int slash = methodName.lastIndexOf("/") + 1; methodName = methodName.substring(slash); if (methodName.length() > 0) { try { method = bean.getClass().getMethod(methodName, null); synchronized (bean) { forward = bean.getInterceptor().intercept(new ActionInvoker(bean, method)); } } catch (Exception e) { throw new BeanActionException("Error dispatching bean action via URL pattern ('" + methodName + "'). Cause: " + e, e); } } } } } } catch (Exception e) { forward = "error"; request.setAttribute("BeanActionException", e); } return mapping.findForward(forward); }
也就是说,在这个类里,程序会取配置文件里的 parameter 属性是否定义,如果定义了,则就用反射调用com.ibatis.jpetstore.presentation.AccountBean里的相应方法;如果没有定义,则就会去配置文件里的path="/shop/editAccount" 属性,取最后一个斜杠后的单词,再用反射调用相应方法;如果parameter 定义了且是parameter="*"则不调用任何一个方法,直接返回,配置的返回页面。
发表评论
-
在JAR包中读取图片
2010-02-01 13:59 2200当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那 ... -
JSplitPane按比例分割的问题(转)
2010-01-20 14:21 3343JSplitPane看似比Delphi的spl ... -
JVM内存大小设置(java heap space)(转)
2010-01-16 14:22 7303一般情况下java程序容易出现java heap space ... -
利用Java生成静态HMTL页面的方法收集
2010-01-12 14:21 1039生成静态页面技术解决方案之一 转载者前言:这是一个全面的jsp ... -
Hibernate类型和java类型和sql类型
2009-11-11 16:05 745... -
Struts2表单中文乱码问题的解决
2009-11-10 21:58 2463关于Struts2提交表单中文乱码的问题,在网上搜到了很多解决 ... -
用来遮字幕的程序
2009-11-07 22:52 1132看日剧的时候,不想看到中文字幕。所以写了这个程序来遮住字幕。 ... -
Applet中显示模式对话框
2009-10-22 14:58 1245首先,我们看一下Applet的父级容器。如下: |--> ... -
第一个Struts2的例子
2009-09-24 22:49 1016文档结构 lib文件夹 struts.xml &l ... -
java中用process备份还原mysql数据库
2009-09-19 11:41 1157/** * 备份数据库. */ public int d ... -
Spring的singleton模式
2009-08-24 23:23 913Compnay类 package ioc.demo; p ... -
关于Eclipse开发Web Service的一点总结
2009-08-23 17:16 1220用Eclipse开发webservice确实很方便,无论是服务 ... -
测试WebService是否正常运行的代码
2009-08-17 17:04 1320try { // 服务端的url,需要根据情况 ... -
关于Eclipse“The selection is not within a valid module”的异常
2009-08-03 20:28 4756在工程目录下的.settings文件夹里,有个名为org.ec ... -
自制的Java超链接按钮
2009-02-11 09:35 1818package lib; import java.awt ...
相关推荐
struts配置文件,用于创建springmvc与struts工程的配置文件,集合加数组获得后台的空间空间空间 空间 空间空了
本资料“struts配置大全(1、2全)”涵盖了Struts 1和Struts 2两个版本的核心配置,以及与Spring MVC的整合配置,旨在帮助开发者深入理解并熟练掌握Struts框架的配置方法。 **Struts 1配置** Struts 1的配置主要集中...
根据给定文件的信息来看,这段文字实际上是在描述K线图的相关知识,并非“struts配置”。但是为了满足您的需求,我会基于这段描述进行一个错误纠正并生成与“struts配置”相关的知识点。以下是对“struts配置”的...
配置Struts配置Struts配置Struts配置Struts配置Struts配置Struts
struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用struts的配置与应用
本教程将深入讲解如何配置一个简单的Struts应用,以便开发者能够快速理解并掌握其基本操作。 首先,我们需要理解Struts框架的核心概念。在Struts中,Controller由ActionServlet扮演,它负责接收HTTP请求,解析请求...
### Struts2配置文件介绍 #### 一、Struts2的核心配置文件 在Struts2框架中,有多个重要的配置文件用于控制应用的行为与结构,其中最核心的是`struts.xml`文件。此外还包括`web.xml`、`struts.properties`、`...
struts-config.xml struts标准配置文件 struts-config
下面将详细讨论Struts2配置文件的相关知识点,包括核心配置文件、连接池配置以及MySQL数据库的配置。 1. **Struts2核心配置文件**:主要由`struts.xml`构成,它是整个Struts2应用的主配置文件。在这个文件中,你...
在配置Struts2时,通常会使用一个名为`struts.xml`的配置文件,该文件定义了应用程序的行为和组件。为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常...
在Struts框架中,可以利用多个配置文件来组织和管理应用程序的不同部分,这不仅有助于保持代码的整洁,还能提高开发效率。以下是对“多个struts配置文件使用”这一主题的详细解析。 ### 一、Struts框架概述 Struts...
本文将深入探讨Struts的配置以及其标签库的详细内容。 在Struts框架中,配置文件起着至关重要的作用。主要的配置文件有两个:`struts-config.xml`和`web.xml`。`struts-config.xml`是Struts的核心配置文件,它定义...
详细讲解了Struts如何配置,适合刚刚接触Struts的开发者来配置环境
### Struts配置文件详解 #### 一、Struts配置文件的重要性与作用 Struts框架作为SSH(Struts+Spring+Hibernate)三大框架之一,在企业级Web应用开发中扮演着核心角色。Struts配置文件是Struts框架的灵魂所在,它...
这可以通过在`struts.xml`配置文件中使用`<constant>`标签设置`struts.action.excludePattern`属性来实现。 ```xml <constant name="struts.action.excludePattern" value="^http://.*"/> ``` 3. **过滤器配置*...
### Struts配置文件详解 #### 一、Struts配置文件的重要性与作用 Struts框架作为Java Web开发领域中的一种流行MVC(Model-View-Controller)框架,它提供了一种结构化的方式来构建Web应用程序。在Struts框架中,`...
struts-config.xml拆分,超级简单
**FreeMarker与Struts2的整合配置详解** FreeMarker是一个基于Java的模板引擎,它用于生成动态HTML、XML或其他格式的文本输出。Struts2是一个流行的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。将...