- 浏览: 470960 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chexiazi:
一样的xml代码 报这个错 <ns1:XMLFault ...
CXF 通过用户名和密码进行验证 -
di1984HIT:
谢谢啊 ~~~
通过JavaCompiler进行编译java文件(转载) -
aa00aa00:
'%${userName}%' 这种是可以的,是可以模糊查询的 ...
mybatis 模糊查询 -
一棵杨柳的地盘:
我把你的代码不了一遍 但是汇报错首先:static { ...
CXF 通过用户名和密码进行验证 -
shangmin1990:
转 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件
public void process(public void process(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException{ … }
RequestProcessor类中还定义了多个processXXX()方法,process()方法正是通过调用他们来具体的处理工作的。下表中对其中重要的几个做简单介绍:
表1 RequestProcessor类的主要处理方法
方 法 功 能
protected String processPath() | 获取客户端请求的路径URI |
protected ActionForm processActionForm() | 获取当前请求表单所映射的ActionForm Bean |
protected ActionMapping processMapping() | 根据请求URI获取所需的映射信息 |
protected Action processActionCreate() | 初始化相应的ActionBean |
protected ActionForward processActionPerform() | 调用Action Bean的execute()方法处理请求 |
protected void processForwardConfig() | 处理由Action Bean的execute()方法返回的ActionForward对象。 |
如果要定制ActionServlet的行为规则,其实应从RequestProcessor这个RequestProcessor类着手。要开发自己的RequestProcessor类以实现定制的控制逻辑,应遵循以下步骤:
1) 创建一个子类继承org.apache.struts.action.RequestProcessor类,在该子类中显式定义(或使用缺省的)无参、方法体为空的构造方法。
2) 重写所需要的方法,加入定制功能。
3) 将该子类编译后得到的class文件保存到Struts应用程序的WEB-INF/class/目录下
4) 修改配置文件struts-config.xml,在其中加入一个名为<controller>的元素,用以指定客户定制的RequestProcessor类。
在展示一个具体的实现定制功能的例子之前,有必要介绍一下RequestProcessor类中定义的另外几个有关方法:
protected void log(java.lang.String message){…}
功能:将参数String对象message的内容存入当前应用程序日志文件。
protected void log(java.lang.String message, java.lang.Throwable exception) {…}
功能:将参数String对象message和异常对象exception所封装的信息存入当前应用程序日志文件。
protected boolean processPreprocess(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) {…}
功能:专门用于在子类中被重写,加入由开发者定制的预处理功能。
在RequestProcessor类中定义的processPreprocess()方法什么也不做,只是简单返回一个boolean类型值true,用以告知RequestProcessor继续后续处理程序。在定制RequestProcessor类时通常会重写此方法,注意一定要在方法的结尾返回true,如果重写如果返回值为false,则RequestProcessor对象终止对请求的处理,将控制权送回给ActionServlet的doPost()或doGet()方法。
下面给出用户定制RequestProcessor组件的具体实现步骤:
1)为已有的Struts应用程序创建用户自己的RequestProcessor类,重写其中的processPreprocess()方法,加入所需的控制逻辑。范例源代码如下:
源文件:MyRequestProcessor.java
package test;
import java.util.Enumeration;
import javax.servlet.http.*;
import org.apache.struts.action.RequestProcessor;
public class MyRequestProcessor extends RequestProcessor {
public MyRequestProcessor() {}
public boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response) {
log("-------------- My Logging Start--------------");
log("Request URI = " + request.getRequestURI());
log("Context Path = " + request.getContextPath());
Enumeration headerNames = request.getHeaderNames();
log("Request Header:");
while (headerNames.hasMoreElements()) {
String headerName =(String)headerNames.nextElement();
Enumeration headerValues = request.getHeaders(headerName);
while (headerValues.hasMoreElements()) {
String headerValue =(String)headerValues.nextElement();
log("\t" + headerName + " = " + headerValue);
}
}
log("Locale = " + request.getLocale());
log("Method = " + request.getMethod());
log("Path Info = " + request.getPathInfo());
log("Protocol = " + request.getProtocol());
log("Remote Address = " + request.getRemoteAddr());
log("Remote Host = " + request.getRemoteHost());
log("Remote User = " + request.getRemoteUser());
log("Requested Session Id = "
+ request.getRequestedSessionId());
log("Scheme = " + request.getScheme());
log("Server Name = " + request.getServerName());
log("Server Port = " + request.getServerPort());
log("Servlet Path = " + request.getServletPath());
log("Secure = " + request.isSecure());
log("-------------- My Logging End --------------");
return true;
}
}
2)编译源文件MyRequestProcessor.java,将所生成的字节码文件(包括所在的package子目录)保存到Struts 应用程序的"WEB-INF/classes/"目录下。
3)修改此Struts应用程序配置文件struts-config.xml,在其中加入<controller>元素:
源文件:struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
……
<controller processorClass="test.MyRequestProcessor" />
</struts-config>
说明:其他组成页面、类设计和应用程序配置均不需做改变。
4)发布Struts应用程序,并通过客户端浏览器访问该应用程序。
5)打开Web服务器日志文件<WAS_HOME>/logs/localhost_log.<当天日期>.txt,可以看到新加入的用户定制信息:
2004-09-24 00:30:28 StandardContext[/myStrutsApp3]action:
-------------- My Logging Start--------------
Request URI = /myStrutsApp3/regist.do
Context Path = /myStrutsApp3
Request Header:
accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword , application/x-shockwave-flash, */*
referer = http://localhost:8080/myStrutsApp3/
accept-language = zh-cn
content-type = application/x-www-form-urlencoded
accept-encoding = gzip, deflate
user-agent = Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; .NET CLR 1.1.4322)
host = localhost:8080
content-length = 20
connection = Keep-Alive
cache-control = no-cache
cookie = JSESSIONID=FD8A69F16E329A362DB219596897D6DA
Locale = zh_CN
Method = POST
Path Info = null
Protocol = HTTP/1.1
Remote Address = 127.0.0.1
Remote Host = 127.0.0.1
Remote User = null
Requested Session Id = FD8A69F16E329A362DB219596897D6DA
Scheme = http
Server Name = localhost
Server Port = 8080
Servlet Path = /regist.do
Secure = false
-------------- My Logging End --------------
发表评论
-
java 位运算总结
2018-10-23 11:14 0<div class="iteye-blog- ... -
java sort 排序中的自然序排序总结
2018-10-23 11:07 5821<div class="iteye-blo ... -
Java内存分析工具
2012-11-24 11:16 2256Java运行时数据区包含:Method area, heap, ... -
转 StringUtils.isBlank()函数(分享一下)
2012-02-15 10:23 2993StringUtils的isBlank与isEmply ... -
jquery 使用ajax 提交整个表单的数据
2012-01-06 14:52 5926在使用Struts开发项目的时候发现很爽的一件事就是可以不使用 ... -
struts2 通配符
2011-12-31 16:25 1295在使用struts2时,如果想定义action的话可以这样做 ... -
Maven Web项目部署到Tomcat下
2011-12-30 17:28 19552通过Maven来搭建项目是 ... -
velocity与servlet的整合
2011-12-28 21:07 1466第一天学习velocity,参考别人的blog写了一个与Se ... -
ibatis 与spring3整合
2011-12-28 13:01 5733spring与ibates整合,使用 ... -
ibatis 入门
2011-12-28 12:48 1273昨天学习了一下ibatis ... -
转 JTA简介
2011-12-26 17:47 1067Java Transaction API(Java事务 ... -
转 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件
2011-12-23 16:03 23393很多人不知道怎么用 IntelliJ IDEA 编辑器 ... -
转 IntelliJ IDEA 使用基础篇 Java IDE编辑器
2011-12-23 15:02 8525IntelliJ IDE ... -
转在CXF中用JAXB数据绑定支持Map类型
2011-12-05 16:38 5243一些java类型不能自然映射成xml,例如,HashMap ... -
cxf wsdltojava 构造方法报错
2011-12-05 14:23 1327I'm marking this as "n ... -
(转)Struts2学习笔记--Internationalization
2011-11-21 18:13 1346Struts2 的国际化 ======== ... -
单例模式
2011-11-18 20:47 1020单例模式(SINGLETON):单例模式确保某一个类只有一个实 ... -
类加载的顺序
2011-11-17 21:40 1196写道 package com.wang; public cl ... -
socket实现客户端与客户端通信
2011-11-17 19:34 3048最近闲来无聊,看了一下socket通信,实现了一个最简版的客户 ... -
接口设计的 11 种原则
2011-05-02 21:02 27467种设计坏味道 1.僵化性: 很难对系统进行改动,因为每个改动 ...
相关推荐
本文将深入探讨控制器组件和控制器机制,以帮助你更好地理解和应用Struts框架。 首先,控制器在MVC模式中起到桥梁的作用,它接收用户的请求,解析这些请求,并调用相应的模型组件去执行业务逻辑。在Struts框架中,...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
在Struts 2中,核心控制器组件被称为FilterDispatcher。与Struts 1的ActionServlet不同,FilterDispatcher是一个Servlet过滤器,而不是一个Servlet。这个改变使得Struts 2可以更好地与其他Web框架集成,因为它可以在...
Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 Struts ActionForm Bean捕获表单数据 11 Struts的其他组件 12 Validation Framework for ...
在Struts1的MVC架构下,模型层处理文件操作逻辑,视图层展示结果,控制器协调两者。FOS组件使模型层的文件操作更加简洁,通过Action类调用组件的方法,处理文件的增删改查操作。 6. **安全考虑**: 使用任何文件...
Struts2是一个非常流行的Java Web框架,它提供了一种组织和控制MVC(模型-视图-控制器)应用程序的方式。在Struts2中,拦截器(Interceptor)是核心功能之一,用于增强应用的功能和处理业务逻辑。拦截器是基于AOP...
ActionForm用于在控制器和视图之间传递数据,Action执行完毕后返回ActionForward,指示用户请求应被转发到哪个视图组件。 **Struts工作原理** 当用户发送请求时,ActionServlet首先拦截请求,依据struts.config.xml...
**2.2.3 Struts控制器组件** Struts的控制器组件是其核心之一,负责接收用户的请求、调用业务逻辑层处理数据,并将结果返回给视图层展示。 **2.2.4 用Struts开发Web应用** 这部分详细讲解了如何利用Struts框架来...
这一步骤可以理解为定制控制器的行为。 2. **创建Action类**:根据业务需求编写Action类,实现业务逻辑。Action类是模型和控制器的接口,处理用户请求并返回结果。 3. **定义结果类型**:配置Result来决定Action...
总结来说,Struts框架是J2EE Web开发的重要工具,它以MVC设计模式为基础,通过提供标准化的组件和控制器,简化了开发流程,提高了开发效率,同时保持了代码的可维护性和可扩展性。学习和掌握Struts对于Java Web...
虽然Struts框架提供了控制器组件,但它并不强制规定模型和视图的具体实现。开发者可以选择适合的持久化技术和表示层技术与Struts集成。例如,Struts可以很好地与EJB配合处理业务逻辑,与JSP或Velocity模板结合生成...
Struts2是一个强大的Java EE应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的Web应用。这个“struts2,struts2 demo”很显然是一个包含Struts2框架示例代码的压缩包,旨在帮助开发者理解和学习如何在实际...
- 控制器(Controller):Struts的核心组件ActionServlet,负责接收用户请求,调用相应的Action类,并控制应用程序的流程。 四、Struts的基本组件包 Struts框架包含了多个组件包,如: - `struts-core`:包含基础...
3. **Action**: 控制器组件,执行具体的业务逻辑,通常每个Action对应一个用户请求。 4. **ActionMapping**: 配置在struts-config.xml中,定义Action和ActionForm之间的映射关系以及请求的转发路径。 5. **Tiles**...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它在Java社区中广泛使用,因其灵活性、可扩展性和丰富的插件库而受到赞誉。Struts2的核心是Action类,它处理HTTP...
- **配置web.xml**:添加Struts2的前端控制器DispatcherServlet。 - **编写struts.xml**:定义Action、结果类型和拦截器栈。 - **创建Action类**:继承自ActionSupport,实现业务逻辑方法。 - **创建JSP页面**:...
Struts控制器组件主要包括以下几部分: - **超链接和表单**:开发人员可以通过定义超链接和表单来实现用户与Web应用程序的交互。这些超链接和表单通常指向特定的动作。 - **定制动作**:每个动作都是一个实现了`...
Struts2是一个流行的Java Web开发框架,它遵循MVC(模型-视图-控制器)设计模式,用于构建可维护性和可扩展性高的Web应用程序。在深入理解Struts2的工作流程之前,我们需要先了解一些基本概念。 1. **MVC模式**: ...
所有Web层框架都会基于前端控制器模式,这是一种常见的设计模式,用于集中处理所有的请求,并将它们分发到适当的组件进行处理。在Struts2中,前端控制器由`StrutsPrepareAndExecuteFilter`扮演,它负责拦截所有请求...
- **Struts控制器组件**:Struts的核心是其控制器组件,它负责处理HTTP请求并将数据传递给模型对象或视图组件。 - **Struts开发Web应用流程**: - 用户通过浏览器发送请求到服务器。 - 服务器将请求交给Struts控制...