ZT:http://blog.csdn.net/toyouheart/archive/2009/09/01/4509466.aspx
status学习笔记及历程
第一讲:
1. 了解struts工作流程:
首先struts基于MVC模式, 用户发送的请求讲被ActionServlet处理,转发,但是它是怎样实现的了??
实现原理:
web.xml 配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
... ...
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
上面描述*.do的url请求都会被ActionServlet接受.
完整配置讲解:
/*************************************************************
1. web.xml
web.xml文件对任何的Web项目都是一个必须的文件,使用Struts时,还需要对该文件进行一 些必须的配置。
1.1 ActionServlet的配置 一般需要在该文件中配置Struts的Servlet,示例配置如下:
Eg1. 简单的Struts的ActionServlet的配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
对于复杂的应用,一般需要配置多个struts-config.xml文件,可以通过添加另外的
<init-param>来实现,或者在多个配置文件中以为“,”隔开,如下所示:
Eg2. 配置多个struts-config.xml配置文件的ActionServlet的配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value
>
</init-param>
<init-param>
<param-name>config/IVR</param-name>
<param-value>/WEB-INF/struts-config-IVR.xml</param-v
alue>
</init-param>
<init-param>
<param-name>config/wap</param-name>
<param-value>
/WEB-INF/struts-config-wap.xml
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
1.2 欢迎和错误处理的配置 首先讲述一下欢迎文件清单<welcome-file-list>的配置,该元素可包含多个<welcome-file
>子元素,当Web容器调用欢迎界面时,将首先查看第一个<welcome-file>子元素中定义的文 件是否存在,若存在,则将其返回给用户,若不存在,继续判断第二个<welcome-file>子元 素中定义的文件……,配置示例如下:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
接着讲述一下在web.xml中如何配置错误处理,这时需要使用<error-page>元素,该 元素可以根据异常的类型来配置跳转的页面,还可以根据错误码来配置跳转页面,配 置示例如下:
<!-- 根据错误码进行跳转-->
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 根据异常进行跳转-->
<error-page>
<exception-type>java.lang.NullException</exception-type>
<location>/error.jsp</location>
</error-page>
1.3 tld文件的配置 若Web工程没有使用Struts的标签库,可以不在web.xml中使用Struts的标签库信息。当然若 开发人员使用了struts的标签库,也可以直接在jsp页面中引入标签库,例如通过如下方式引 入:
<%@ taglib uri="/WEB-INF/struts-bean.tld"
prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld"
prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld"
prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-nested.tld"
prefix="nested"%>
在Struts中进行配置的的好处是因为可以在Struts中配置为tld文件配置一个简要的 名称或者更加易懂的名称,例如在web.xml文件中增加如下配置:
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
其中<taglib-uri>元素指定标签库的相对或者绝对URI地址,Web应用将根据这一URI 来访问标签库;<taglib-location>元素指定标签库描述文件在文件资源系统中的物 理位置。
此时在jsp页面通过如下方面引入标签库:
<%@ taglib uri="/tags/struts-bean "
prefix="bean"%>
<%@ taglib uri="/tags/struts-html"
prefix="html"%>
<%@ taglib uri="/tags/struts-logic "
prefix="logic"%>
<%@ taglib uri="/tags/struts-nested "
prefix="nested"%>
1.4 完整配置实例 下面举一个使用Struts的Web项目的web.xml的简单配置实例(该实例开发人员也参考struts
-1.2.8-bin.zip包的webapps目录下的struts-mailreader.war),内容如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>Struts Example
Application</display-name>
<!-- Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-registration.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 欢迎列表-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 错误处理 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</web-app>
2 .properties资源文件 默认情况下,Struts默认的资源文件为ApplicationResources.properties文件。
资源文件可为一个束,可针对不同的语言,写不同的资源文件,开发人员可以定义英文、简 体中文、繁体中文、日文等资源文件,资源文件的命名格式为:资源文件名_国别_语言.pro
perties,常见的资源文件名称为:
ApplicationResources.properties:默认资源文件,或英文资源文件
ApplicationResources_zh_CN.properties:简体中文
ApplicationResources_zh_TW.properties:繁体中文
每一个资源文件都是“键-值”对的集合,例如可在src目录下的资源文件Application
Resources.properties中,编写如下内容:
UserForm.userName = USERNAME
UserForm.password = PASSWORD
同时在src目录下建立ApplicationResources_zh_CN.properties.bak文件来编写简体
中文的原始资源文件,内容如下:
UserForm.userName = 用户名
UserForm.password = 密码
开发人员还可以建立ApplicationResources_zh_TW.properties.bak文件编写繁体中
文的原始资源文件。其内容如下:
UserForm.userName = ノめ?W
UserForm.password = ノめ?W
对于简体中文和繁体中文文件,开发人员还需要对其使用native2ascii工具对其进行
转换,将非ASCII码转换为Unicode编码,native2ascii工具在%JAVA_HOME%/bin目录
下的native2ascii.exe,因此若要进行这种转换,读者首先需要安装了该工具。安装
了该工具之后,进入其所在目录,运行native2ascii…命令可进行编码转换,为了能
在命令行直接使用该命令,读者还需要在系统变量PATH中添加路径:%JAVA_HOME%"b
in。
在实际项目中,一般编写一个批处理文件(eg.
code.bat)来处理资源文件的编码,例如code.bat为如下内容时,可满足要求将如上
的ApplicationResources_zh_CN.properties.bak文件进行编码,并将编码后的信息
放入ApplicationResources_zh_CN.properties文件中。该批处理文件的内容如下所
示:
del ApplicationResources_zh_CN.properties
copy ApplicationResources_zh_CN.properties.bak
ApplicationResources_zh_CN.properties.gbk
native2ascii -encoding GBK ApplicationResources_zh_CN.properties.gbk
ApplicationResources_zh_CN.properties
del ApplicationResources_zh_CN.properties.gbk
del ApplicationResources_zh_TW.properties
copy ApplicationResources_zh_TW.properties.bak
ApplicationResources_zh_TW.properties.big5
native2ascii -encoding Big5 ApplicationResources_zh_TW.properties.big5
ApplicationResources_zh_TW.properties
del ApplicationResources_zh_TW.properties.big5
del *.bak.bak
运行code.bat之后,可看到目录下多出了两个资源文件,即:ApplicationResource
s_zh_CN.properties和ApplicationResources_zh_TW.properties。其中Applicatio
nResources_zh_CN.properties的内容是经过编码的,内容如下:
UserForm.userName = "u7528"u6237"u540d
UserForm.password = "u5bc6"u7801
在jsp页面中,可以通过Struts的自定义标签来获取资源文件的某个键(例如:User
Form.userName)的信息。示例如下:
<bean:message key="UserForm.userName"/>
**************************************************************/
1.检索和用户请求匹配的Actionmapping(文件配置在struts-config.xml文件中),对于一个表单在文件中需要实现如下配置
<!-- 配置表单实体 -->
<form-beans>
<form-bean name="loginForm"
type="com.youcompany.forms.LoginForm" />
</form-beans>
属性介绍:
name="loginFrom" 对应JSP页面表单的name属性
type="com.youcompnay.forms.LoginForm" 对应该表单的处理类,该类集成struts的ActionForm可作验证,类型转换等功能,
负责将form包装成一个form对象
<!-- 表单处理及后期转换-->
<action-mappings>
<action path="/login"
type="com.yourcompany.actions.LoginAction"
name="loginForm"
scope="request" input="/login.jsp" >
<forward name="success"
path="/menu.jsp"></forward>
<forward name="fails"
path="/login.jsp"></forward>
</action>
</action-mappings>
属性介绍
<action>部分是说明action的属性。Type
指定Action的类名,负责处理此次form表单请求的类
Name 指定Action主力的ActionForm名,与<form-beans >元素的name属性匹配。
Scope 指定ActionForm存在的范围,
(request, application)
Input 指定包含客户提交表单的网页,如果ActionForm的Validate方法返回错误,则因该把用户 请求转发到这个网页。
Validate 如果取值为true,则表示ActionServlet应该调用ActionForm的validate方法
Forward 就是Action的execute方法执行完毕后,把客户请求在转发给相应的页面。
总结,对于struts每一个form表单处理,
常见操作是建立如下的package
com.yourcompany.forms 负责将表单包装成对象
com.youcompany.action 处理表单,调用其他组件实现业务逻辑,并负责处理之后的返回,显示
struts-config.xml 配置文件,ActionServlet将检查该配置,并实现流程串接.
2. 如果ActionForm实例不存在, 就创建一个ActionForm对象,把客户提交的表单保存到ActionForm对象中
总结: 自动创建的ActionForm主要实现表单字段的getter,setter方法, 如果表单字段需要转换成各种对象,其中涉及到类型转换的知识:
struts的类型转换:??????
3. 根据配置信息决定是否需要进行表单验证, 如果需要验证, 就调用ActionForm的validate()方法
ActionForm的Validate()方法, 这个很简单,你只需要在ActionForm的包装类中重写validate()方法即可,如果验证不成功,请返回
4. 如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功.
5. ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action, 如果Action实例不存在,就先创建这个实例,
然后调用Action的execute方法
6. Action的execute返回ActionForward对象,ActionServlet在把客户请求转发到ActionForward对象指向到JSP组件.
7. ActionForward对象指向的JSP组件动态生成网页,返回给客户.
第二讲:
helloapp演示例子中掌握:
1. 分析应用需求
2. 实际操作MVC的struts框架.
3. 视图的创建
4. 资源文件application.properties资源文件的配置和作用
5. 数据合法性验证,表单事务逻辑处理
6. 控制器组件HelloAction.java(处理表单)
7. 模型组件: PersonBean.java 实体包装类
8. 模块贡献的java文件:
Constants.java
9. web.xml, struts-config.xml配置
10. 编译,发布
1. 分析应用需求 通常就是你需要实现的业务功能,若注册,登录,订单
2. 实际操作MVC的struts框架.
MVC构成:
M(model) 包含PersonBean的JavaBean组件,提供属性的getter,setter方法,及其他方法
V(view) JSP, 提供界面设置,可直接用html标签,也可以用struts的tag-lib
C(controller) HelloAction, 主要做: 1.业务逻辑验证, 2.调用模型组件 3.返回视图组件
配置文件:
struts-config.xml
3. 视图的创建
Hello.jsp 代码:
<%@ page language="java" import="java.util.*"
pageEncoding="ISO-8859-1"%>
<%@ page taglib uri="/WEB-INF/struts-bean.tld"
prefix="bean" %>
<%@ page taglib uri="/WEB-INF/struts-html.tld"
prefix="html" %>
<%@ page taglib uri="/WEB-INF/struts-login.tld"
prefix="login" %>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html:html locale="true">
<head>
<title><bean:message
key="hello.jsp.title" /></title>
<html:base />
</head>
<body bgcolor="white">
<h2><bean:message
key="hello.jsp.page.heading" /></h2>
<p>
<html:errors/>
</p>
</login:present>
<html:form
action="/HelloWorld.do" focus="userName">
<bean:message
key="hello.jsp.prompt.person"/>
<html:test
property="userName" size="16" maxlength="16"
/><br/>
<html:submit
property="submit" value="submit"/>
<html:reset/>
</html:form>
</html:form><br/>
<html:img page="/struts-power.gif"
alt="Powered by Struts"/>
</body>
</html:html>
解释:
struts标签库的加载
<%@ page taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"
%>
<%@ page taglib uri="/WEB-INF/struts-html.tld"
prefix="html" %>
<%@ page taglib uri="/WEB-INF/struts-login.tld"
prefix="login" %>
web.xml 定义标签库代码:
<taglib>
<taglib-uri>/WEB-INF/nested.tld</taglib-uri>
<taglib-location>/WEB-INF/nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<tadlib-uri>/WEB-INF/struts-bean.tld</tadlib-uri>
</taglib>
<taglib>
<taglib-url>/WEB-INF/struts-html.tld</taglib-url>
<taglib-location>/WEB-INF/struts-heml.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
常见JSP标签解析:
<html:errors>: struts框架产生的错误信息
<html:form>
<html:text>
<bean:message>
<bean:write>
更多标签......
4. 资源文件application.properties资源文件的配置和作用
Hello.jsp页面中使用了<bean:message>标签,这些key对应的就是application.properties里面配置好的信息段, 这些配置对实现
国际化有突出意义
hello.jsp.title=Hello~A first struts program
hello.jsp.page.heading=Hello World!A first Status application
..............
5. 数据合法性验证,表单事务逻辑处理
LoginForm.java
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors = new ActionErrors();
if( (username == null) || (username.length() < 1)){
errors.add("usrename", new
ActionMessage("hello.no.username.error"));
return errors;
}
return null; }
6. 控制器组件HelloAction.java(处理表单)
public ActionForward execute(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException
所有的表单Action通过验证之后,都会调用execute()方法,
ActionMapping: 包含Action的配置信息和struts-config.xml文件中的action元素
ActionForm: 包含了用户表单数据信息
HttpServletRequest: 当前http请求对象
HttpServletResponse: 当前HTTP相应的对象
7. 模型组件: PersonBean.java 实体包装类
package com.imc.forms;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class LoginForm extends ActionForm{
private static final long serialVersionUID = 3348342323123L;
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;
}
public void reset(ActionMapping mapping, HttpServletRequest request){
this.password = password;
this.username = null;
}
//
public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request){
ActionErrors errors = new ActionErrors();
if( (username == null) || (username.length() < 1)){
errors.add("usrename", new
ActionMessage("hello.no.username.error"));
return errors;
}
return null;
}
}
8. 模块贡献的java文件:
Constants.java
public final class Constants{
public static final String PERSON_KEY =
"personbean";
}
9. web.xml, struts-config.xml配置
参照上面
<message-resource parameter="hello.application"
/>
指定资源文件的路径,也就是指定
WEB-INF/classes/hello/application.properties
10. 编译,发布
编辑打包war..
总结: 服务器端执行表单验证流程如下:
1. servlet容器在web.xml文件中寻找<url-pattern>属性为*.do的<servlet-mapping>元素
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2. servlet容器依据以上<servlet-mapping>元素的<servlet-name>属性action, 在web.xml文件中寻找匹配的<servlet>元素
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
3. servlet容器把请求转发到<servlet-class>,
ActionServlet依据用户请求路径HelloWorld.do, 在struts配置文件中检索
path属性为/HelloWorld的action元素
<action path="/HelloWorld"
type = "hello.HelloAction"
name = "HelloForm"
scope = "request"
validate = true
input = "/hello.jsp"
4 ActionServlet根据,action元素的name属性, 创建一个HelloForm对象, 把客户提交的表单数据传给HelloForm对象, 再把HelloForm对象保存再scope指定的request返回内
5 由于Action元素的validate属性为true, ActionServlet调用HelloForm对象的validate进行表单验证,事实上validate总是为true, 只要你重写了public ActionErrors validate(ActionMapping
mapping, HttpServerRequest request) 都会验证表单
|
相关推荐
本教程将深入探讨Struts1.2的核心概念、功能以及与Struts2的区别。 一、Struts框架基础 1. **MVC模式**:Struts遵循MVC设计模式,分离了业务逻辑、数据模型和用户界面。模型负责处理业务逻辑,视图负责展示数据,...
### Struts 1.2 学习笔记:深入理解 Struts 工作流程 #### Struts 概述 Struts 是一个开源的 MVC(Model-View-Controller)框架,用于简化 Java Web 应用程序的开发。Struts 1.2 版本是基于 Servlet 的 MVC 实现,...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
Struts是Apache软件基金会 ...学习Struts1.2,不仅可以了解早期Web框架的设计思想,还能为学习其他现代框架如Spring MVC、Struts2等打下基础。通过阅读"Struts1.2笔记",可以深入理解这些概念,进一步提高Web开发技能。
以上内容是Struts2学习笔记的概述,涵盖了Struts2的基础概念、发展历程、使用方法以及核心组件OGNL的介绍。深入学习Struts2将有助于提升Java Web开发能力,更好地理解和构建MVC架构的应用程序。
本学习笔记将详细阐述Struts2的核心概念、发展历程、使用步骤以及OGNL技术。 一、Struts2概述 1.1 为什么要用Struts 在传统的JSP开发中,模型与视图、控制器的耦合度较高,导致代码维护困难。Struts2引入了MVC...
在探讨Struts2的学习心得之前,我们先来分析一下Struts2与Struts1之间的区别。 ##### 1.1 架构设计 - **Struts1**:采用MVC(Model-View-Controller)架构模式,其中控制器是由`ActionServlet`来实现的,该控制器...
### Struts2.2.3 学习笔记 #### 一、Struts2.2.3 基础配置及工作原理 ##### 1.1 配置基础环境 为了开始学习并使用 Struts2.2.3,首先需要设置基本的开发环境。这包括以下几个步骤: - **复制配置文件**:将`...
本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...
### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...
在本篇笔记中,我们将深入探讨Struts2的核心概念和使用方法。 **一、Struts2概述** 1.1 为什么要用Struts? 在传统的JSP开发中,模型与视图、控制器的职责混杂,导致代码维护困难。Struts2作为MVC框架,将业务逻辑...
在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...
Struts2的框架本身也需要下载,文中提到的是版本2.3.1.2,这个版本包含了许多核心库和其他必要的jar包。 Struts2的工作流程大致如下: 1. 用户通过浏览器向服务器发送请求,请求的URL会经过Tomcat解析。 2. Tomcat...
文件"struts1.2.doc"和"struts2.1.doc"可能分别包含了关于Struts 1.2和Struts 2.1版本的详细教程或笔记,它们可能涵盖了这两个版本的特性和差异,例如Struts 2引入了OGNL表达式语言,增强了Action类的功能,以及提供...
### Struts 学习笔记知识点总结 #### 一、Struts 概述 - **Struts** 是一个基于 Java 的开源框架,它主要用于构建 Web 应用程序,并且支持 Model-View-Controller (MVC) 架构模式。Struts 的主要目标是简化 Java ...
#### 1.2 Struts2的由来 Struts2是结合了**Struts1** 和 **WebWork** 两个框架的优点发展而来的。随着Java技术的发展和Web应用的需求变化,最初的Struts1设计开始暴露出一些限制,比如不支持拦截器等。而WebWork...
6、发布个人学习笔记,并对学习笔记进行维护; 7、支付宝在线支付接口,实现在线购买服务功能; 8、个人信息管理,个人界面方案维护; 9、信息反馈及维护; 10、JavaMail邮件发送功能实现。 项目演示地址:...
这篇SSH学习笔记将深入探讨SSH的基础概念、工作原理、配置与应用。 一、SSH基础 1.1 SSH概述 SSH最初设计为替代不安全的Telnet协议,它通过加密所有传输的数据,包括用户名、密码等敏感信息,从而防止被窃听。SSH...