struts2 漏洞自查报告

2021-02-03 来源:自查报告收藏下载本文

推荐第1篇:struts2

搭建Struts2环境时:

1找到开发Struts2应用需要使用到的jar文件.

2编写Struts2的配置文件

3在web.xml中加入Struts2 MVC框架启动配置

大家可以到http://struts.apache.org/download.cgi#struts2014下载;下面给出了开发Struts 2程序最少需要的JAR。

struts2-core-2.x.x.jar :Struts 2框架的核心类库

xwork-2.x.x.jar :XWork类库,Struts 2在其上构建

ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性

freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写

commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。

commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件

Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/claes下,该文件的配置模版如下:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>

\"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN\"

\"http://struts.apache.org/dtds/struts-2.0.dtd\">

在struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

org.apache.struts2.dispatcher.FilterDispatcher -->

struts2

/*

在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。

在默认的配置文件struts.xml 中加入如下配置:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>

\"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN\"

\"http://struts.apache.org/dtds/struts-2.0.dtd\">

/WEB-INF/page/hello.jsp

/WEB-INF/page/hello.jsp

在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下的Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action。 namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。

通常每个包都应该继承struts-default包, 因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。 struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。 struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。 struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。

包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。

推荐第2篇:struts2课件

—高级软件人才实作培训专家!Struts2的启动配置在struts1.x中,struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*在FilterDispatcher的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。注意:struts2读取到struts.xml的内容后,会将内容封装进javabean对象并存放在内存中,对于用户每次请求的处理将使用内存中的数据,而不是每次请求都读取struts.xml文件

—高级软件人才实作培训专家!Struts2的配置文件Struts2默认的配置文件为struts.xml ,FilterDispatcher过滤器在初始化时将会在WEB-INF/claes下寻找该文件,该文件的配置模版如下:<?xml version=\"1.0\" encoding=\"UTF-8\"?>

—高级软件人才实作培训专家!第一个Struts2应用Struts2默认的配置文件为struts.xml ,FilterDispatcher过滤器在初始化时将会在WEB-INF/claes下寻找该文件,该文件的配置模版如下:<?xml version=\"1.0\" encoding=\"UTF-8\"?>/WEB-INF/page/hello.jsp—高级软件人才实作培训专家!第一个Struts2应用例子中使用到的cn.itcast.action.HelloWorldAction类如下:package cn.itcast.action;public cla HelloWorldAction{private String meage;public String getMeage() {return meage;}public void setMeage(String meage) {this.meage = meage;}public String execute() throws Exception{this.meage = \"我的第一个struts2应用\";return \"succe\";}} 2

—高级软件人才实作培训专家!第一个Struts2应用例子中使用到的/WEB-INF/page/hello.jsp如下:<%@ page language=\"java\" pageEncoding=\"UTF-8\"%>第一个struts2应用${meage }

推荐第3篇:Struts2习题

Struts2习题1 1.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?

标识、可以、如果没写,说明该包为默认空间 2.Action 的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport 3.不属于Struts2的动作类的常量返回值的是(C)

A.succe

B.input

C.never

D.login 4.以下不属于Struts2动作执行的结果类型是(A) a.action b.redirect c.redirectAction d.dispatcher 5.在struts.xml中。假如在一个package中没有配置namespace,那么在其中配置一个Action名字叫做login,它的result是这样配置的/login.jsp,已知在此配置文件中还有另一个name为user的package其中也有一个Action名字为login,它的result是这样

配置的/loginUser.jsp那么在以下什么情况下将能访问到login.jsp

A A.在根路径后输入/login B.在根路径后输入/user/login C.在根路径后输入/login/user D.在根路径后输入/abc/login 6.正规开发中,在使用struts2时定义Action使用哪种方式。 B A.直接定义Action类。 B.从ActionSupport继承。 C.从Action继承。 D.实现Action接口。

7.不同的线程在调用Action时创建几个Action实例。C A.1个 B.2个

C.每个线程创建1个。 D.可以自定义配置。

8.struts提供了Action接口定义了5个标准字符串常量,不包括的有(C ) A SUCCESS

B NONE C REG D LOGIN

9.列举出action执行结果类型,并说明用途。

默认结果类型是dispatcher chain:Action链式处理的结果类型,也就是将结果转发到这个action中。

dispatcher:用于整合JSP的结果类型

redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。

redirect-action:重定向action 10.struts2中result-type的chain和redirectAction的区别 chain,它是一个琏式的,是从一个Action转发另外一个Aciton redirectAction,是从新请求一个Action 11.action的cla里面写的是什么? Action相应类的详细路径

12.action的extends里面调用的是什么?

从另外一个包继承、相当于拥有即承包的所有配置

13.如果不写action的后面mothod,默认的调用的方法是什么,如果写的话,写的时候有什么需要注意的?

不写会默认调用最上面的方法

14.输出值的strtus标签是什么?

s:property

15.循环的struts标签是什么?

s:iterator

15.判断的strtuts标签是什么?

s:if

16.显示文本的strtuts标签是什么?

17.请简述前台提交后是如何到达后台action的。

通过form表单action找到struts配置文件相应action的类 再去找相应action类里的方法

Struts2习题2

一、填空题

1.Struts2框架由___________和___________框架发展而来。(Struts&WebWork ) 2.Struts2以___________为核心,采用___________的机制来处理用户的请求。(WebWork,拦截器)

3.Struts2中的控制器类是一个普通的___________。Cla或填过滤器类

二、选择题

1.不属于Action接口中定义的字符串常量的是___________。B A.SUCCESS B.FAILURE

C.ERROR D.INPUT 2.在控制器类中一般需要添加相应属性的___________和___________。AC A.setter方法 B.as方法 C.getter方法 D.is方法 3.控制器需要在___________配置文件中进行配置。B A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 4.不属于Struts 2表单标签库的是___________。D A. B. C. D. 5.资源文件的后缀名为___________。D A.txt B.doc C.property D.Properties

三、简答题

1、简述什么是MVC?

MVC即模型-视图-控制器.MVC是一种设计模式,它强制把应用程序的输入处理和输出分开.视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入,但是它并不进行任何实际的业务处理。模型是应用程序的主体部分。模型表示业务数据和业务逻辑。控制器接受用户的输入并调用模型和视图去完成用户的需求

2、简述servlet的生命周期。

Servlet被服务器实例化后,容器运行其init()方法,请求到达时运行其service()方法,service()方法自动派遣运行与请求对应的doGet、doPost方法等,当服务器决定将实例销毁的时候调用其destroy方法

推荐第4篇:Struts2介绍

Struts2集成指南

关于Struts2 Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。

Struts,a history 在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。

Craig McClanahan 2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。

至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。 Struts1 vs.Struts2 侵入性

Struts 1 在编程方面是面向抽象类编程,而不是面向接口编程。Struts 1要求自定义Action 类继承一个特定的抽象基类Action。另一方面,Struts 1的 Action 依赖于 Servlet API,因为Struts 1 Action 的execute 方法中有HttpServletRequest 和HttpServletResponse 方法。例如 e.g.public cla LogonAction extends Action {

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response) {

} }

Struts 2 Action 类可以实现一个Action接口,也可以实现其他接口,甚至不实现任何接口。这使得可选的和定制的服务成为可能。 e.g.public cla ExampleAction {

public String doSomething() {

return \"succe\"; } }

线程模式

Struts 1 Action类 是单例模式并且必须是线程安全的,因为在web容器中,仅有Action类 的一个实例来处理所有的请求。

Struts2 Web容器为每一个请求产生一个Action类实例,因此没有线程安全问题。 可测试性

Struts1 由于对Servlet API的依赖,使得针对于自定义Action类的测试变得复杂。

Struts2 由于自定义Action可以为POJO,所以可以向测试一个POJO一样来测试Action类。

请求参数封装

Struts1 使用ActionForm 对象封装用户的请求参数,所有的 ActionForm 必须继承一个基类:ActionForm。普通的JavaBean 不能用作ActionForm,并且需要在配置文件中定义ActionForm。 e.g.public cla LogonForm extends ActionForm {

private String userpaword;

private String username; }

Struts2 直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的 Rich对象类型。 e.g.public cla ExampleAction {

private String responseMeage; private String requestMeage;

public String getResponseMeage() {

return responseMeage; }

public void setResponseMeage(String responseMeage) {

this.responseMeage = responseMeage; }

public String getRequestMeage() {

return requestMeage;

} } public void setRequestMeage(String requestMeage) { } this.requestMeage = requestMeage; public String doSomething() {

} setMeage(\"Hi, \" + getRequestMeage()); return \"succe\"; EL Struts1 整合了 JSTL,因此可以使用JSTL 表达式语言。JSTL有基本对象图遍历,但在对集合和索引属性的支持上则功能不强。在向视图绑定值时,Struts1 使用标准JSP 机制把对象绑定到视图页面。

Struts2 Struts 2 可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation Language),因此,Struts 2 下的表达式语言功能更加强大。在向视图绑定值时,Struts2 使用“ValueStack ”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。

校验框架

Struts1 Struts1 支持在 ActionForm 重写validate 方法中手动校验,或者通过整合 Commons-validator 框架来完成数据校验。

Struts2 Struts 2 支持通过重写validate方法进行校验,也支持整合XWork 校验框架进行校验。 Struts2 architacture

名词约定

凡是代码、配置文件、IDE中出现的名词,均采用英文原称。

Roadmap 本文档的目标是,帮助读者在Eclipse中将Struts2集成至一个崭新的Dynamic Web Project。 集成步骤大致如下:配置Struts2的代码环境 ->在web.xml中加入Struts2功能 ->测试Struts2。 文档目标达成的标志是:页面请求能够通过Struts2的Action Mapping成功转发,并且基于Java的Struts2验证框架能够生效。

集成步骤

引入Struts2相关的jar文件

Struts2 jars           commons-fileupload-1.2.2.jar commons-io-2.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar freemarker-2.3.16.jar javaist.jar jstl-1.2.jar ognl-3.0.1.jar struts2-core-2.2.3.jar xwork-core-2.2.3.jar 加入build path 将以上10个jar文件,拷贝至WebContent/WEB-INF/lib下:

对于Web Dynamic Project,一般情况下,当你向lib目录下copy了jar文件,eclipse会自动将jar文件加入build path下的名为Web App Libraries的Library。请确认在工程下出现了名为Web App Libraries的Library。如果有,说明这些jar文件已经被添加至build path了:

如果在工程目录下找不到名为Web App Libraries的Library,说明jar文件没有被添加至build path,需要进行手动添加。首先进入build path设置界面,选中Libraries 页,并点击Add JARs:

在JAR Selection窗口中,选中lib下所有的jar文件。选中后点击OK:

你将看到被选中的jar文件已经被添加至build path:

在工程中会出现一个名为Referenced Libraries的Libraries。这说明jar文件已经被添加至build path:

以上两种方法都可以将jar文件添加至build path,它们的效果是一样的。

配置web.xml 添加filter 在web.xml中添加一个filter:

struts2

org.apache.struts2.dispatcher.FilterDispatcher

filter-name表示filter的名字,你可以任意决定这个名字。filter-cla表示使用哪个类作为filter,从这个类的全称来判断,可以发现FilterDispatcher是Struts2提供的一个类。它是Struts2转发请求的起点。 在web.xml中添加一个filter-mapping:

struts2

/*

filter-mapping用来映射url和filter的映射关系。filter-name表示filter的名字,这个名字必须和之前filter声明中的filter-name一致。url-pattern表示哪些格式的url会被此filter滤中。/*表示在此web应用域名下,所有的地址都会被filter滤中,换言之,所有的http请求都会通过Struts2进行转发。

filter的作用

通过以上的配置,FilterDispatcher和url与filter-name联系在了一起。

由于在web容器中注册了FilterDispatcher这个filter,Struts2可以收到所有http://localhost:8080/tyland-b2b 的http请求。随后,FilterDispatcher会根据我们定义的action-mapping规则,将请求分发到指定的action类以及它的拦截器栈。最后,Struts2按照action-mapping规则,将后台计算的结果返回给指定页面。笼统地来说,Struts2就是这样工作的,所以说,FilterDispatcher是Struts2工作的入口。

编写代码,测试Struts2 Struts2的环境已经配置好了,基于action-mapping的转发机制已经可以运行了。为了证明这一点,请编写一些测试jsp页面和java代码。

在编写代码的过程中,请确保代码文件的位置如下图所示:

代码清单如下:

Java代码

UserVO.java package com.tyland.b2b.vo;

// 一个Value Object(Data Model),用来存放用户名、密码 public cla UserVO {

private String username; private String paword;

// 成员变量paword的getter方法。

// 在Strtus2中,用来在页面和服务器间传值的Value Object必须有getter方法

public String getPaword() {

return paword;

} } // 成员变量paword的setter方法。

// 在Strtus2中,用来在页面和服务器间传值的Value Object必须有setter方法 public void setPaword(String paword) { } this.paword = paword; // 同paword

public String getUsername() { } return username; // 同paword

public void setUsername(String username) { } this.username = username; BaseAction.java package com.tyland.b2b.web.base;

import com.opensymphony.xwork2.ActionSupport;

// 为了代码的灵活性和可扩展性,请声明一个BaseAction基类

// BaseAction继承Struts2的ActionSupport,因为我们想使用Struts2的一些额外帮助。 // 对于ActionSupport的继承不是必须的

public cla BaseAction extends ActionSupport {

private static final long serialVersionUID = 1492640280374952195L; } UserAction.java package com.tyland.b2b.web;

import com.tyland.b2b.vo.UserVO; import com.tyland.b2b.web.base.BaseAction;

// 自定义的Action类,继承BaseAction // 由于继承了ActionSupport,我们可以使用Struts2默认的action方法execute() // 由于继承了ActionSupport,我们可以使用Struts2默认的校验方法validate() public cla UserAction extends BaseAction {

private static final long serialVersionUID = -7178605703943684190L;

// 用来在页面和服务器之间传递用户名、密码的Value Object。变量名任意。

private UserVO userVO;

执行。 // 用来在页面和服务器之间传递meage变量。名称任意。 private String meage; //用来在页面和服务器之间传递sayHiTo变量。名称任意。 private String sayHiTo; // 用来传值的变量必须有getter方法 public UserVO getUserVO() { return userVO; }

//用来传值的变量必须有setter方法

public void setUserVO(UserVO userVO) { } this.userVO = userVO; public String getMeage() { } return meage; public void setMeage(String meage) { } this.meage = meage; public String getSayHiTo() { } return sayHiTo; public void setSayHiTo(String sayHiTo) { } this.sayHiTo = sayHiTo; // Override声明说明这个方法复写或实现了父类或接口方法。

// 如action-mapping中不显示指定别的方法,struts2会将execute()作为默认的action方法// 返回的SUCCESS常量,来自ActionSupport,值为\"succe\"。

// action-mapping会根据不同的返回值采取不同的转发或页面跳转动作。 @Override

public String execute() throws Exception {

} System.out.println(\"******execute******\"); System.out.println(userVO.getUsername() + \" logins\"); return SUCCESS;

// 在Struts2执行execute()之前,会先执行validateExecute()进行用户输入验证 // 这个方法名必须符合Struts2验证框架所规定的命名规范 public void validateExecute() {

}

} System.out.println(\"******validateExecute******\" + userVO.getUsername()); if (null == userVO.getUsername() || userVO.getUsername().length()

} System.out.println(\"say hi to \" + getSayHiTo()); return SUCCESS; // 符合验证框架命名规范的、真对于sayHi()的验证方法 public void validateSayHi() {

} System.out.println(\"******validateSayHi******\" + getSayHiTo()); if (null == getSayHiTo() || getSayHiTo().length()

import com.tyland.b2b.web.base.BaseAction;

public cla ExampleAction extends BaseAction {

private static final long serialVersionUID = -2973295900729517281L;

private String meage; private String sayHiTo;

public String getMeage() {

return meage; }

public void setMeage(String meage) {

this.meage = meage; }

public String getSayHiTo() {

return sayHiTo; }

} public void setSayHiTo(String sayHiTo) { } this.sayHiTo = sayHiTo; public String finish() {

} System.out.println(\"example finished\"); setMeage(getSayHiTo()); return SUCCESS; JSP代码

index.jsp <%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"

pageEncoding=\"UTF-8\"%>

<%@ taglib uri = \"http://java.sun.com/jsp/jstl/core\" prefix = \"c\" %>

Hello World

推荐第5篇:Struts2试题

Struts2 试题

1.struts2的执行流程?

客户端提交一个HttpServletRequest请求(action或JSP页面)

请求被提交到一系列Filter过滤器,如ActionCleanUp和FiterDispatcher等

FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器 询问ActionMapper是否需要调用某个action来处理

如果ActonMapper据诶的那个需要调用某个A传统,FilterDispatcher则把请求教到ActionProxy,由其进行处理

ActionProxy通过Configuration Manager询问框架配置文件,找到需要调用的Action类 ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用action Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器 最后ActionInvocation负责根据struts配置文件中配置的result元素,找到与返回值对应的result

2.struts2的web里需要配置什么?

1. 2. 3.struts2 4. 5.org.apache.struts2.dispatcher.FilterDispatcher 6. 7. 8. 9. 10.struts2 11./* 12.

3.struts.xml文件哪个常量可以实现不用重新启动服务就可以得到反馈?

4.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?

标识

可以、Timmer

如果没写,说明该包为默认空间 只要敲index没有精确对应的package都交给namespackage 如果还没有就崩溃

5.Action 的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport

6.路径设置用什么路径,绝对还是相对? 都可以

7.通配符有几种?要遵循什么原则? {1}

方法名

8.Action的属性?

path属性:指定请求访问Action的路径

type属性:指定Action的完整类名

name属性:指定需要传递给Action的ActionForm Bean scope属性:指定ActionForm Bean的存放范围

validate属性:指定是否执行表单验证

input属性:指定当表单验证失败时的转发路径。

元素还包含一个子元素,它定义了一个请求转发路径。

9.用于读取资源文件,实现国际化的Struts2的标签(

)。

10.一下关于struts的描述中,不正确的是(D) struts 是一个基于JAVA EE的MVC struts2的框架配置文件是struts-configxml struts2的控制组建核心包括核心控制和业务控制器

在struts中解决中文乱码可以通过修改struts。I18n。encoding的值为GBK来实现 11.不属于Struts2的动作类的常量返回值的是(C)

A.succe

B.input

C.never

D.login 12.一下不属于Struts2动作执行的结果类型是(A) a.action b.redirect c.redirectAction d.dispatcher 13.在struts.xml中。假如在一个package中没有配置namespace,那么在其中配置一个Action名字叫做login,它的result是这样配置的/login.jsp,已知在此配置文件中还有另一个name为user的package其中也有一个Action名字为login,它的result是这样配置

的/loginUser.jsp那么在以下什么情况下将能访问到login.jsp A A.在根路径后输入/login B.在根路径后输入/user/login C.在根路径后输入/login/user D.在根路径后输入/abc/login

14.正规开发中,在使用struts2时定义Action使用哪种方式。B A.直接定义Action类。 B.从ActionSupport继承。 C.从Action继承。 D.实现Action接口。

15.不同的线程在调用Action时创建几个Action实例。C A.1个 B.2个

C.每个线程创建1个。 D.可以自定义配置。

16.struts2的体系结构主要包括那几个部分( A ) A.模型层

B.struts控制器组件 C。struts配置文件 D。struts标签库

17.struts提供了Action接口定义了5个标准字符串常量,不包括的有(C ) A SUCCESS

B NONE C REG D LOGIN 18.struts中数据验证失败时,通过( B )标签显示错误信息。 A

B

C

D

19.列举出action执行结果类型,并说明用途。

默认结果类型是dispatcher chain:Action链式处理的结果类型,也就是将结果转发到这个action中。 dispatcher:用于整合JSP的结果类型

redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。 redirect-action:重定向action

20.简述struts2文件上传的方法。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

21.在struts2标签内部 能否使用el表达式?

不可

22.struts2中result-type的chain和redirectAction的区别

chain,它是一个琏式的,是从一个Action转发另外一个Aciton redirectAction,是从新请求一个Action

23.能否取到Httpseion的值 不可

24.action的name里边写的名字是什么地方用的? From 表单action引用

25.action的cla里面写的是什么? Action相应类的详细路径

26.action的extends里面调用的是什么?

从另外一个包继承、相当于拥有即承包的所有配置

27.如果不写action的后面mothod,默认的调用的方法是什么,如果写的话,写的时候有什么需要注意的?

不写会默认调用最上面的方法

28.输出值的strtus标签是什么?

s:property

28.循环的struts标签是什么?

s:iterator

29.判断的strtuts标签是什么?

s:if

30.显示文本的strtuts标签是什么?

31.要调用struts标签需要导入什么? <%@taglib uri=\"/struts-tags\" prefix=\"s\"%>

32.如果需要调用sc:datetimepicker需要导入什么,sc代表的是什么意思?

33.中的s代表的是什么,这个标签是干什么用的?

获取前台文本的值

34.请简述前台提交后是如何到达后台action的。

通过from表单action找到struts配置文件相应action的类 再去找相应action类里的方法

推荐第6篇:漏洞现代诗歌

闪电把漆黑的天幕

撕开一条漏洞

瞬间照亮了前方的路

雷响了,雨来了

淹没了蝉鸣,蛙声

我仍然站在暴雨中

是期待还是等待

没有什么目标

只有让闪电照耀

让暴雨洗涤沾满身驱的污垢

和疲惫不堪的肢体

我也记不清闪电划过多少次

雷声响过多少回

就好象数不清这生

有多少个漏洞

又失去多少个

可以拥有的机遇

上千个电话号码

有几个在你危难时

可以伸手相助

多少人鞍前马后

有几个能和你走到最后

春暖花开还诉说着情深似海

冬天一到便无影无踪

也许上苍给予这些眷顾

是你生命中注定的磨难

只能在这时才清醒

被雨浇透的轻松

总是在纠结过去了的往事

一个丢失

就成为一个漏洞

一个失败

就铸成终身憾事

用时间填补那些漏洞

用生命去等待

另一道闪电

照亮百孔千疮的灵魂

这时才感到命运中的顽强

是弥补这些漏洞的良药

在暴风雨中冲刷

在等待中找准方向

迎接一个崭新的未来

推荐第7篇:Struts2的体系结构

•Struts2的体系结构

定义常量

常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下: struts.xml

struts.properties

struts.action.extension=do

通常,struts2按如下搜索顺序加载struts2常量: struts-default.xml struts-plugin.xml struts.xml

struts.properties web.xml

如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.常用的常量

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 -->

Struts2的Action(业务逻辑控制器)

相对与Struts1而言,struts2采用了低侵入式的设计,struts不要求Action类继承任何的Struts2基类,或者实现任何Struts2接口,在这种设计下,Struts2的Action类是一个普通的POJO,通常只需要包含一个无参的execute方法,从而有很好的代码复用性。

但为了让用户开发Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理规范。下边是一个标准Action接口的代码。

Public interface Action{

Public static final String ERROR=”error”;

Public static final String INPUT=”input”;

Public static final String SUCCESS=”succe”;

Public static final String NONE=”none”;

Public static final String LOGIN=”login”;

//定义处理用户请求的execute方法

Public String execute() throw Exception; }

另外Struts2还提供了一个实现类:ActionSupport(Action的实现类),该类中提供了许多默认的方法,这些默认的方法包括国际化信息的方法,数据校验的方法,默认的处理用户请求的方法。继承该类能大大的简化Action的开发。

三、使用struts2封装表单元素的值:

1.属性驱动:直接在Action中添加属性和对应的getter和setter方法 2.模型驱动:

a) 必须实行ModelDriven接口,并且重新getModel方法 b) 初始化属性 private Userinfo user = new Userinfo(); c) 在页面上表单元素的名称为实体类的属性名称

四、如何获取servlet API中的对象(request,seion,application)等

1. 使用ActionContext获取对象(Map)

2.使用ServletActionContext对象获取

3.使用DI注入的方式(IoC方式)

a)实行相应的接口(xxxAware),request对象的接口(ServletRequestAware),response(ServletResponseAware),seion(SeionAware)等

b)在Action中添加相应的属性和setter方法(setter注入)

推荐第8篇:struts2复习题(含答案)

Struts2复习题

1.以下属于struts2的控制器组件是:

A.Action

B.ActionForm C.ActionServlet D.dispatchAction 2.以下属于struts2的体系结构的是:(多选) A.struts2控制器组件

B.struts2配置文件 C.FilterDispathcer D.Action 3.以下属于struts2配置文件中的配置元素是:(多选) A. B.C.D.4.关于struts1和struts2对比的说法正确的是:

A.struts1要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO类

B.struts1中的Action不是线程安全的,而struts2中的Action是线程安全的 C.struts1和struts2中都使用ActionForm对象封装用户的请求数据

D.struts1使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值

5.以下关于ValueStack说法正确的是:(多选) A.每个Action对象实例拥有一个ValueStack对象 B.每个Action对象实例拥有多个ValueStack对象

C.Action中封装了需要传入下一个页面的值,这些值封装在ValueStack对象中 D.ValueStack会在请求开始时被创建,请求结束时消亡 6.关于struts2配置文件说法正确的是:

A.必须在WEB-INF/claes目录下

B.名字必须为struts.xml C.配置Action时,必须配置包信息 D.使用元素配置转发 7.在struts2配置中用()元素来配置常量: A.B.C.D.8.关于struts2包的说法正确的是:

A.struts2框架使用包来管理常量

B.struts2框架定义包时必须指定name属性

C.struts2框架中配置包时,必须继承自struts-default包,否则会报错 D.struts2框架中使用包来管理Action

9.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 10.struts2动态调用的格式为: A.ActionName?methodName.action B.ActionName! methodName.action C.ActionName*methodName.action D.ActionName@mathodName.action 11.如果要实现struts2的数据校验功能

A.普通Action类可以实现 B.继承自Action接口可以实现

C.继承自ActionSupport类可以实现 D.继承自ActionValidate类可以实现

12.如果要实现自定义处理结果,需继承那个类

A.Dispathcer

B.StrutsResultSupport C.Support D.Action 13.实现动态返回结果,在配置元素时使用()指定视图资源

A.${属性名} B.@{属性名} C.${\'属性名\'}

D.${\"属性名\"} 14.用于实现国际化的struts2标签是:

A.

B. C.

D.15.struts2默认的处理结果类型是:

A.dispatcher

B.redirect C.chain

D.forward 16.自定义转换器继承的抽象类是:

A.Converter B.TypeConverter C.StrutsTypeConverter

D.converts 17.自定义转换器的注册方式有:

A.只有全局注册方式 B.只有局部注册方式

C.只有全局和局部注册方式

D.以上说法都不对 18.自定义拦截器类的方式有:(多选) A.实现Interceptor接口

B.实现AbstractInterceptor接口 C.继承Interceptor类

D.继承AbstractInterceptor类 19.在struts.xml文件中,使用()元素定义拦截器

A. B.

C. D.20.在OGNL中?操作符的作用是: A.取出符合选择逻辑的第一个元素 B.取出符合选择逻辑的最后一个元素 C.取出符合选择逻辑的所有元素 D.以上说法都不对

21.以下属于struts2标签的是:(多选) A.Ajax标签

B.数据访问标签

C.logic标签

D.bean标签 22.以下哪个标签是struts2中的用于循环迭代: A. B.

C. D.23.Struts2主要核心功能是由(

)实现

a) 过滤器 b) 拦截器 c) 类型转换器 d) 配置文件

24.Struts中的ActionServlet属于MVC模式(

a) 视图 b) 模型 c) 控制器 d) 业务层

25.Struts2框架由(

)和(

)框架发展而来的【选择二项】 a) b) c) d) Hibernate Struts Spring WebWork 26.Struts2以(B)为核心,采用( )的机制处理用户请求

a) Struts b) WebWork c) 拦截器 d) jar包

27.struts2中,不属于Action接口中定义的字符串常量的是(

a) SUCCESS b) FAILURE c) ERROR d) INPUT 28.struts2在控制器类中一般需要添加相应属性的(

)和(

)【选择二项】

a) setter方法 b) as方法 c) getter方法 d) is方法

29.struts2控制器需要在(

)配置文件中进行配置

a) web.xml b) struts.xml c) application.porperties d) webwork.xml 30.不属于struts2标签库的是(

a) b) c) d) 31.在JSP页面中可以通过Struts2提供的(

)标签来输出国际化信息

a) b) c) d) 32.资源文件的后缀名为(

a) txt b) doc c) property d) properties

33.struts2自定义类型转换器必须实现的接口是(

) a) Convert b) TypeConverter c) StrutsTypeConverter d) StrutsConvert 34.a) b) c) d) 35.a) b) c) d) 36.a) b) c) d) 37.a) b) c) d) 38.a) b) c) d) 39.a) b) c) d) 40.a) b) c) d) 41.a) b) c) d) 42.a) b) c) struts2关于注册全局类型转换器的说法正确的是(

)【选择二项】 必须提供xwork-conversion.properties文件

注册文件的格式为:复合类型=对应类型转换器 注册文件的格式为:对应类型转换器=复合类型 以上说法都不正确

struts2自定义拦截器中的“return invocation.invoke”代码表示(

)【选择二项】 不执行目标Action的方法,直接返回

执行目标Action的方法,直接返回逻辑视图名称 在自定义拦截器中,该代码是必需的 在自定义拦截器中,该代码是可选的

struts2中,以下配置文件上传拦截器只允许上传bmp图片文件的代码,正确的是( ) image/bmp*.bmpbmp

image/*.bmp以下关于OGNL的说法正确的是(

)【选择二项】 ActionContext是OGNL的上下文环境 StackContext是OGNL的上下文环境 ValueStack是OGNL的根 ActionContext是OGNL的根

假设在Seion中存在名为uid属性,通过OGNL访问该属性,正确的代码是(

) #uid #seion.uid uid ${seion.uid} 关于“#seion.persions.{? #this.age>20}”OGNL代码所表示的意义说法正确的是(

) 从persons集合中取出第一个年龄>20的Person对象 从persons集合中取出所有年龄>20的Person对象子集 从persons集合中取出最后一个年龄>20的Person对象 该代码不符合OGNL的语法

假设在某JSP页面中存在””代码,则以下说法正确的是(

) 编译JSP页面时会出现错误

编译JSP页面时不会出现错误,但页面不会显示任何内容 该代码用于输出位于ValueStack(值栈)栈顶的对象 以上说法都不正确

struts2默认的处理结果类型是(

) dispatcher redirect chain 以上说法都不正确

下列选项中,关于Struts2配置文件说法正确的是(

) 必须置于WEB-INF/claes目录下 必须为Struts.xml 配置Action时必须配置包信息 d) 43.a) b) c) d) 44.a) b) c) d) 使用元素配置转发

下列选项中,关于Struts2的Action说法正确的是(

)【选择二项】 struts2会为每一个请求创建一个对应的Action实例 struts2在请求处理过程中,只有一个Action实例 struts2通过属性来封装用户请求参数

在struts2中定义的属性都用于封装用户请求参数 struts2中动态方法调用的格式为(

) ActionName_methodName.do ActionName!methodName.do ActionName_methodName.action ActionName!methodName.action 问答题:MVC是什么含义?

推荐第9篇:注册登录struts2

核心提示:针对左边的登录功能,登录页面login.jsp;action为LoginAction;针对右边的注册功能,注册页面为regist.jsp;action为RegistAction.核心代码:

1.配置文件

<?xml version=\"1.0\" encoding=\"UTF-8\"?> /login.jsp /login.jsp /index.jsp /regist.jsp /regist.jsp /regist.jsp

2.两个action类

2.1 RegistAction类:用于处理与注册有关的验证和数据保存等功能。 package tarena.actions; import com.opensymphony.xwork2.ActionSupport; public cla RegistAction extends ActionSupport { private String userName; private String paWord; private String rePaWord; private String email;

public void validate() { // 对用户的输入进行验证

if (\"\".equals(userName) || userName == null) { this.addFieldError(\"userName_error\", \"用户名不成为空\"); } else { if (\"xuliang\".equals(userName)) { this.addFieldError(\"userName_error\", \"用户名已经被占用\"); } } if (\"\".equals(paWord) || paWord == null) { this.addFieldError(\"paWord_error\", \"密码不成为空\"); } else if (\"\".equals(rePaWord) || rePaWord == null) { this.addFieldError(\"rePaWord_error\", \"密码2不成为空\"); } else { if (paWord.length() 10) { this.addFieldError(\"paWord_error\", \"密码必须在6到10之间\"); } if (!paWord.equals(rePaWord)) { this.addFieldError(\"rePaWord_error\", \"两次密码必须一致\"); } } } public String execute() { // 保存到数据库

User u = new User(userName, paWord, email); if (u == null) { return \"fail\"; } // 将user信息保存到数据库中 // UserDAO dao=new UserDAO(); // dao.save(u); System.out.println(\"下列信息被保存到数据中\" + u); this.addActionMeage(userName + \": \" + paWord + \" 注册成功!\"); return \"succe\"; } public String getUserName() { return userName; }

public void setUserName(String userName) { this.userName = userName; } public String getPaWord() { return paWord; } public void setPaWord(String paWord) { this.paWord = paWord; } public String getRePaWord() { return rePaWord; } public void setRePaWord(String rePaWord) { this.rePaWord = rePaWord; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }

2.2 LoginAction类:用于登录信息验证与匹配的类。 import java.util.Map; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public cla LoginAction extends ActionSupport { private String userName; private String paWord; public void validate() { // 对用户的输入进行验证

if (\"\".equals(userName) || userName == null) { this.addFieldError(\"userName_error\", \"用户名不成为空\");

} if (\"\".equals(paWord) || paWord == null) { this.addFieldError(\"paWord_error\", \"密码不成为空\"); } else { if (paWord.length() 10) { this.addFieldError(\"paWord_error\", \"密码必须在4到10之间\"); } } } public String execute() { System.out.println(\"--提交注册---\"); // 模拟去数据库查询,根据用户输入与数据库中数据匹配情况,返回\"fail\" or \"succe\" // UserDAO dao=new UserDAO(); // User u=dao.findByUserName(userName); if (\"xuliang\".equals(userName) && (\"test\").equals(paWord)) { // 将用户信息保存到Seion中。

Map seion = ActionContext.getContext() .getSeion(); seion.put(\"userName\", \"xuliang\"); return \"succe\"; } if (!\"xuliang\".equals(userName)) { this.addFieldError(\"userName_error\", \"用户名错误\"); return \"fail\"; } else { if (!\"test\".equals(paWord)) { this.addFieldError(\"paWord_error\", \"密码错误\"); return \"fail\"; } } return \"fail\"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }

public String getPaWord() { return paWord; } public void setPaWord(String paWord) { this.paWord = paWord; } } 3.视图 两个JSP页面:用于提供和收集用户输入。 3.1 注册页面 regist.jsp

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"UTF-8\" contentType=\"text/html; charset=UTF-8\"%><%@ taglib uri=\"/struts-tags\" prefix=\"h\" %> \"> 注册页面 请输入用户注册信息 点击此处登录

推荐第10篇:struts2知识总结

struts2知识总结

1.全局的逻辑控制器为一个过滤器,负责过滤所有的请求。该过滤器引用的API类为

org.apache.struts2.disapatcher.FilterDispatcher

2.MVC:页面请求(jsp)——>逻辑控制器(Filter)——>业务控制器(Action)——>业务逻辑组件——>业务处理/DAO

3.struts2的配置文件放在clapath下。

4.struts2的类型转换:

a.继承DefaultTypeConverter,

覆盖父类的public Object convertValue(Map context, Object value, Cla toType)方法

b.继承StrutsTypeConverter, 覆盖父类的public Object convertFromString(Map context, String[] values, Cla toCla) 该方法负责转换从页面传递过来的数据。

覆盖父类的public String convertToString(Map context, Object o)

该方法负责将Action中处理好的数据转换成相应格式的字符串。

5.struts2的数据验证:

a.使用编码方式进行验证。业务控制器Action继承ActionSupport类,重写public void validate()方法。

在该方法中进行数据验证。若Action中处理业务的方法为test,则可以编写public void validateTest() 方法,来对test方法的数据进行验证。(系统在进行validateTest方法后,会接着执行validate方法,然后

才执行相应的业务代码。)

若严重出错,则可以调用addFieldError或者调用addActionError方法,增加相应的错误提示信息。

b.使用配置xml文件进行验证。验证文件的名字为:×××Action-validation.xml。验证的方式包含字段验证和非字段验证。

其中字段验证表示对某个字段进行某些类型的验证。非字段验证表示用某个类型的验证来验证,某个字段。两种方式

底层实现一样,只是表现方式不同,字段验证方式比较直观。

验证的类型有一下几种:required,requiredstring,int,date,double,expreion,fieldexpreion email,url,visitor,conversion,stringLength,regex(正则表达式)。

对验证类型可以指定shourt-circuit参数为true,来执行短路验证。

如果Action中执行业务的方法为test,则可以通过编写×××Action-test-validation.xml方法来对test方法的数据进行 验证。且执行完test方法的私有验证文件后,还会执行默认的验证文件×××Action-test-validation.xml的验证。

c.struts2进行客户端的验证。首先需要使用struts2的标签库,且标签库的theme属性不能为simple,然后设置标签的

validate属性为true。

注意:struts2的客户端验证依赖于服务器的验证配置文件。

6.struts2的拦截器。struts2的拦截器是struts2的核心,其底层实现使用了Java的反射机制与动态代理。在struts2的配置文件中

为一个Action引入了一个拦截器,则配置的默认拦截器不会被调用,需要手工配置到该Action中。

实现struts2拦截器的方法:

a.实现Interceptor接口,并实现init,destrory以及intercept方法。

b.继承AbstractInterceptor类,覆盖intercept方法。

c.继承MethodFilterInterceptor类,覆盖intercept方法。该类可以对特定的方法进行拦截。

拦截器栈可以包含拦截器和拦截器栈。

7.文件的上传和下载:

a.使用apache组织开发的commons-fileupload和commons-io包,并且按需要配置fileUpload拦截器和相应的上传参数,

比如上传文件的类型,上传文件的大小。多文件的上传可以使用js代码来在页面修改上传文件的列表,在Action中

则用三个列表分别来保存文件对象(file),文件名(fileName),以及文件类型(fileContentType)。

b.文件下载使用流进行读取:return ServletActionContext.getServletContext.getResourceAsStream(\"文件名\") 并将Action的结果返回类设定为stream,即流。按需要配置相应的参数。

8.struts2的国际化。struts2国际化的底层实现用到了Java基础类库中的Locale(地区)和ResourceBundle(消息资源)两个类。

struts2的国际化主要用在一下几个地方:

a.jsp页面:使用struts2的标签时,指定标签的key属性(对应消息资源文件中的key)。

使用 标签取得消息资源信息。

还可以用标签来指定特定的消息资源文件。

b.Action中:调用getText(key)或者getText(key,args)方法取得消息资源文件中的消息资源。

c.xml验证文件中:指定meage元素的key属性(对应消息资源文件中的key)。(怎么传参数?) d.类型转换过程中:通过查看xwork包的源代码可以找到:ge.properties文件中可以找到如下的键值对:

xwork.default.invalid.fieldvalue=Invalid field value for field \"{0}\". 在消息资源文件中重新指定该键值对即可。

另外在struts.properties中设定键值对struts.i18n.encoding=GBK,可以解决中文乱码问题。

9.struts2的异常处理。在Action中,我们的业务逻辑处理方法都对抛出异常进行了声明。具体的异常对应具体的处理结果。

在action配置中:

还可以配置全局的异常处理:

struts2的其他东西:

1.对于struts.xml中的package:

a.设置,则表明该包中没有action的配置,只定义一个基础公共的组件。

b.package的namespace可以将不同的请求路径分隔开,在多人合作项目中用到比较多。当接收到一个请求,

若在当前的namespace中没有相应的请求地址,则会到默认的namespace中去寻找匹配的地址。

2.模型驱动机制(ModelDriven),将一个Action中的各个参数封装成为一个JavaBean(类似struts1.x中的

ActionForm)。需要实现ModelDriven接口,并实现getModel方法。当一个Action实现ModenDriven接口后,

该Action会被ModenDrivenInterceptor拦截,进行相应的参数设置。

3.防止表单的重复提交:在jsp的表单中设置标签。并且在相应的Action 中设置token拦截器和名为invalid.token的返回结果。相应出错信息的key为struts.meage.invalid.token。

配置该key,来实现国际化。

4.struts2中Action与Servlet容器的耦合。主要有三种方式: a.实现ServletRequestAware或ServletResponseAware接口。并提供对request或者response熟悉的设置方法。

b.使用ActionContext(但不能获得response对象)。改方法方便单元测试。

c.使用ServletActionContext。ServletActionContext是ActionContext的子类。

首选使用ActionContext,其次ServletActionContext。

5.整合多个struts配置文件,在struts2的配置文件中使用include元素包含其他的配置文件。用于多模块开发。

6.可以在web.xml中对struts2的核心过滤器FilterDispatcher设置初始化参数(不推荐使用)。

7.动态方法调用(DynamicMethodInvocation).

a.action配置中指定:

b.在客户端即页面指定:

c.使用通配符:,

若Action的url为helloLogin,则调用LoginAction的hello来处理业务。此种方法简化了配置,但是

使得程序不明了,不提倡使用该方法。

8.struts2的结果类型。在struts2-core包中,有几种struts2已经配置好的结果类型。

其中默认的类型为dispatcher,此外还有:redirectAction,chain,freemaker,httpheader,redirect, redirectAction,stream,velocity,xslt,plainText。

9.struts2与spring的整合。导入struts2-spring-plugin包,在web.xml中设置spring的监听器, spring监听器对应的API类为:org.springframework.web.context.ContextLoaderListener。

struts2-spring-plugin包为我们将struts2的对象工厂设置为spring的IoC容器,其代码为:

很明显,将struts.objectFactory定位为org.apache.struts2.spring.StrutsSpringObjectFactory 其余的工作就交给spring的IoC容器去做了。

另外:当我们需要增加spring的配置文件时,需要在web.xml中设定contextConfigLocation参数。代码如下:

contextConfigLocation 其他的spring配置文件名,用逗号隔开

需要注意的一些地方

1.存储fieldError的是一个LinkedHashMap;而actionError则存储在一个ArrayList中。

ActionSupport中的getFieldError方法返回的是一个新的集合。该集合是原fieldError集合的一个副本。

在struts2的源代码中返回的是:new LinkedHashMap(internalGetFieldError),即一个新的集合对象。

所以执行代码:this.getFieldErrors.put(\"username\",\"ErrorMsg\");不会影响原fieldError集合的数据。

2.若一个Action注册了PreResultListner,则会在该Action返回的时候调用相应结果验证的逻辑代码。

3.struts2-core包中的default.properties和struts-default.xml文件保存了一些struts2默认的配置。

可以在自己的struts配置文件中对相应的配置进行覆盖或重新设值。比如修改请求的后缀名:在struts.properties 中加入:

struts.action.extension = do 则将struts2请求的后缀名修改成了struts1中的do后缀名的形式。

4.在配置文件中配置struts.multipart.saveDir来设定上传文件时的临时文件的存储位置。需要定期清理该路径下的文件。

第11篇:Struts2开发步骤

struts2的开发步骤:

1.导入struts2所需的jar包;

2.在clees文件夹下导入struts.xml配置文件(不要改成其他名称);

3.在web.xml中配置struts2; struts2 org.apache.struts2.dispatcher.FilterDispatcher

4.配置struts.xml请求路径 struts2 /*

5.编写action方法;

Index.jsp

简单实例步骤完成;

第12篇:struts2综合试卷

Struts2学习增强练习

课程名称: Struts2学习增强练习

考试时间 xx分钟(闭卷■)

不定项选择题

1.开发struts2 web项目,需要导入哪些jar包

A 必须导入struts2 解压lib下所有jar包

B 只需要导入struts2解压app/struts2_blank.war中的jar包就可以

C 如果进行注解开发,导入struts2解压app/struts2_blank.war中的jar包就可以 D 如果进行注解开发,还必须导入convention的插件 jar包 2.下面关于struts2 MVC说法正确的是?

A.Struts2 是一个基于MVC模式的web层框架 B.Struts2中核心控制器是ActionServlet C.Struts2中模型是Action D.Struts2中控制器是Filter 和 Action E.Struts2的视图必须用JSP 3.关于Struts2 Action说法下面正确的是

A.用户编写的Action可以是POJO类

B.用户编写的Action可以实现Action接口 C.用户编写的Action 可以继承 ActionSupport D.Action中必须提供 execute方法

E.Action提供的业务方法 必须 public修饰,String类型返回值,无参数的

4.如果客户端请求路径 http://localhost:8080/struts2_exec/user_add.action 要执行UserAction类中的add方法,下面的配置哪些是正确的 A. B. C. D. E. 5.下面关于Struts2中result type说法正确的是?

A.如果要将请求从一个Action转发给另一个Action 可以使用 chain 结果集 B.如果要将请求转发给一个JSP,可以使用dispatcher 结果集

C.如果要将请求从一个Action重定向到另一个Action 可以使用redirectAction结果集 D.如果要将请求从一个Action重定向到JSP,可以使用redirect结果集 E.进行文件下载时可以使用stream结果集

6.如果客户端提交请求路径为http://localhost:8080/struts2/hello.action?name=”itcast”, 下面在Action中要接收name请求参数,哪个写法是正确的?

A.public cla HelloAction { private String name; public void setName(String name){ this.name = name; } } B.public cla HelloAction { private User user ; public void setUser(User user){ this.user = user; } } public cla User {

1

private String name; public void setName(String name){ this.name = name; } } C.public cla HelloAction implements ModelDriven{ private User user ; public User getModel(){ return this.user; } }

public cla User { private String name; public void setName(String name){ this.name = name; } } D.public cla HelloAction implements ModelDriven{ private User user = new User() ; public User getModel(){ return this.user; } }

public cla User { private String name; public void setName(String name){ this.name = name; } } 7.关于自定义类型转换器下面说法正确的是?

A.向Action封装请求参数,是由ParametersInterceptor完成的 B.进行封装参数时,必须要自定义类型转换器

C.自定义类型转换器 ,如果继承DefaultTypeConverter , 覆盖convertValue方法时,只需要实现String向目标类型的转换

D.自定义类型转换器后需要注册,可以在Action所在路径 编写

Action类名-conversion.properties ,配置

Action中属性名= 类型转换器

E.自定义类型转换器也可以全局注册,在src下创建xwork-conversion.properties , 配置

目标类型 = 转换器

F.

如果类型转换出错后,会跳转到 INPUT对应视图,可以通过 显示错误信息 8.如果需要对Action封装请求参数,进行校验下面哪些说法正确

A.可以在Action中添加validate方法完成校验,Action可以是POJO类

B.可以在Action所在包 编写Action类名-validation.xml 对Action中所有业务方法进行校验 C.如果要对Action中某个指定的业务方法进行校验,可以在Action所在包,编写

Action类名-方法名-validation.xml

D.在Action中手工校验失败后,通过addFieldError设置错误信息,但Action中是无法读取国际化文件的

9.下面关于Struts2 中Action 中设置信息说法正确的是

A.在开发中Action 将一个文本信息传递给JSP 显示,通常可以使用 addActionError、

addActionMeage、addFieldError 三个方法,此时Action必须继承ActionSupport

2 B.addFieldError 主要存放字段错误信息, 页面通过 显示 C.addActionError 主要存放Action错误信息 页面通过 显示

D.addActionMeage 可以存放Action普通信息,页面通过 显示 10.关于struts2 国际化信息文件下面哪些说法是正确的?

A.国际化信息文件,必须放到src根目录,不能放到package中,放到src根目录中国际化信息文件不需要配置,就可以在所有Action中使用

B.可以在Action所在包,编写Action类名.properties ,无需配置 就可对当前Action 生效 C.可以在Action 所在包,创建 package.properties ,无需配置就可对当前包所有Action生效 D.国际化信息文件在任何package中,都可以通过在struts2.xml 对国际化信息文件 进行配置

struts.custom.i18n.resources ,使其对所有Action 生效

11.关于struts2 拦截器说法正确的是

A.Struts2内部使用了很多内置拦截器,用于在Action执行前后加入某些操作 B.访问每个Action 默认都会执行 defaultStack 中所有拦截器

C.如果在元素中指定 那么默认defaultStack 就不会得到执行 D.自定义拦截器可以实现很多功能,比如权限控制,性能监控

E.Struts2 中拦截器实现 责任链模式 12.关于值栈ValueStack 下面哪些说法正确

A.ValueStack值栈对象的生命周期 就是request生命周期,request对象销毁后 值栈数据将不存在

B.获得值栈对象引用 可以通过两种方法

第一种 ServletActionContext.getRequest().getAttribute(\"struts.valueStack\"); 第二种 ActionContext.getContext().getValueStack(); C.值栈中包含两个部分,一个CompoundRoot 和 一个OgnlContext , CompoundRoot是一个ArrayList 结构, OgnlContext 是一个Map 结构

D.OgnlContext 对内置了很多常用 web对象的对应Map结构,通过parameters、request、seion、application、attr 对应map对象,可以间接操作 Servlet API E.每次请求Action , Action对象本身都会 被push到值栈的root 中 13.下面关于向值栈存放数据 说法正确的是 ?

A.在Action建立成员变量,并提供get方法,该数据就会随Action 会被自动压入值栈 B.可以通过调用 valueStack 提供push 方法将一个对象 压入值栈 的root中

C.可以调用valueStack的 set (key,Object) 方法 将一个对象,存入值栈 OgnlContext中 D.可以调用 valueStack.getCompoundRoot().add(object) 方法,将数据存入值栈root中

E.可以调用 valueStack.getOgnlContext().put(key,object) 方法将数据存入 值栈OgnlContext 14.如果Action 如下定义

public cla HelloAction { private String name =”itcast”; public String getName(){

return this.name; } … } 在页面要取得name的值,下面哪些写法是正确的?

A. B. C. D. E.${name} 15.阅读下面代码

public cla UserAction {

private List users; public List getUsers(){ return this.users; }

public String execute(){ users = ….从数据库查询出所有用户

} …

} public cla User { private String name; private String city ; // 提供getter方法

} 要在结果JSP中对 users数据进行遍历显示 ,下面哪些写法正确 A.

第13篇:struts2复习题(含答案)

Struts2复习题

1.以下属于struts2的控制器组件是:

A.Action

B.ActionForm C.ActionServlet D.dispatchAction 2.以下属于struts2配置文件中的配置元素是:(多选) A. B.C.D.3.关于struts1和struts2对比的说法正确的是:

A.struts1要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO类

B.struts1中的Action不是线程安全的,而struts2中的Action是线程安全的

D.struts1使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值

4.以下关于ValueStack说法正确的是:(多选) B.每个Action对象实例拥有多个ValueStack对象

C.Action中封装了需要传入下一个页面的值,Action对象封装在ValueStack对象中 D.ValueStack会在请求开始时被创建,请求结束时消亡 5.关于struts2配置文件说法正确的是:

A.必须在WEB-INF/claes目录下

B.名字必须为struts.xml C.配置Action时,必须配置包信息 D.使用元素配置转发 6.在struts2配置中用()元素来配置常量: A.B.C.D.7.关于struts2包的说法正确的是: A.struts2框架使用包来管理常量

B.struts2框架定义包时必须指定name属性

D.struts2框架中使用包来管理Action

8.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 9.struts2动态方法调用的格式为: A.ActionName?methodName.action B.ActionName! methodName.action C.ActionName*methodName.action D.ActionName@mathodName.action 10.如果要实现struts2的数据校验功能 A.普通Action类可以实现 B.继承自Action接口可以实现

C.继承自ActionSupport类可以实现 D.继承自ActionValidate类可以实现 11.如果要实现自定义处理结果,需继承那个类 A.Dispathcer

B.StrutsResultSupport C.Support D.Action 12.实现动态返回结果,在配置元素时使用()指定视图资源 A.${属性名} B.@{属性名} C.${\'属性名\'}

D.${\"属性名\"} 13.用于实现国际化的struts2标签是:

A.

B. C.

D.14.struts2默认的处理结果类型是:

A.dispatcher

B.redirect C.chain

D.forward 15.自定义转换器继承的抽象类是:

A.Converter B.TypeConverter C.StrutsTypeConverterD.DefaultTypeConverter 16.自定义转换器的注册方式有:

A.只有全局注册方式 B.只有局部注册方式

C.只有全局和局部注册方式

D.以上说法都不对 17.自定义拦截器类的方式有:(多选) A.实现Interceptor接口

B.实现AbstractInterceptor接口 C.继承Interceptor类D.继承AbstractInterceptor类 18.在struts.xml文件中,使用()元素定义拦截器

A.B.

C. D.19.

20.以下属于struts2标签的是:(多选) A.Ajax标签B.数据访问标签 C.logic标签

D.bean标签 21.以下哪个标签是struts2中的用于循环迭代: A.B.

C. D.22.Struts2主要核心功能是由()实现

a) 过滤器 b) 拦截器 c) 类型转换器 d) 配置文件 23.

24.Struts2框架由()和()框架发展而来的【选择二项】

a) Hibernate b) Struts 1 c) Spring d) WebWork 25.Struts2以(B)为核心,采用()的机制处理用户请求

a) Struts b) 拦截器 c) jar包

26.struts2中,不属于Action接口中定义的字符串常量的是()

a) SUCCESS b) FAILURE c) ERROR d) INPUT 27.struts2在控制器类中一般需要添加相应属性的()和()【选择二项】

a) setter方法 b) as方法 c) getter方法 d) is方法

28.struts2控制器需要在()配置文件中进行配置

a) web.xml b) struts.xml c) application.porperties d) webwork.xml 29.不属于struts2标签库的是()

a) b) c) d) 30.在JSP页面中可以通过Struts2提供的()标签来输出国际化信息

a) b) c) d) 31.资源文件的后缀名为()

a) txt b) doc c) property d) properties 32.a) b) c) d) 33.a) b) c) d) 34.a) b) c) d) 35.a) struts2自定义类型转换器必须实现的接口是() Convert TypeConverter StrutsTypeConverter StrutsConvert struts2关于注册全局类型转换器的说法正确的是()【选择二项】 必须提供xwork-conversion.properties文件

注册文件的格式为:复合类型=对应类型转换器 注册文件的格式为:对应类型转换器=复合类型 以上说法都不正确

struts2自定义拦截器中的“return invocation.invoke()”代码表示()【选择二项】 不执行目标Action的方法,直接返回 执行目标Action的方法

在自定义拦截器中,该代码是必需的 在自定义拦截器中,该代码是可选的

struts2中,以下配置文件上传拦截器只允许上传bmp图片文件的代码,正确的是() image/bmpb) c) d) 36.a) b) c) d) 37.a) b) c) d) 38.39.a) b) c) d) 40.a) b) c) d) 41.a) b) c) d) 42.a) b) c) d) 43.a) b) c) d) *.bmpbmp

image/*.bmp以下关于OGNL的说法正确的是()【选择二项】 ActionContext是OGNL的上下文环境 StackContext是OGNL的上下文环境 ValueStack是OGNL的根 ActionContext是OGNL的根

假设在Seion中存在名为uid属性,通过OGNL访问该属性,正确的代码是() #uid #seion.uid uid ${seion.uid}

假设在某JSP页面中存在””代码,则以下说法正确的是() 编译JSP页面时会出现错误

编译JSP页面时不会出现错误,但页面不会显示任何内容 该代码用于输出位于ValueStack(值栈)栈顶的对象 以上说法都不正确

struts2默认的处理结果类型是() dispatcher redirect chain 以上说法都不正确

下列选项中,关于Struts2配置文件说法正确的是() 必须置于WEB-INF/claes目录下 必须为Struts.xml 配置Action时必须配置包信息 使用元素配置转发

下列选项中,关于Struts2的Action说法正确的是()【选择二项】 struts2会为每一个请求创建一个对应的Action实例 struts2在请求处理过程中,只有一个Action实例 struts2通过属性来封装用户请求参数

在struts2中定义的属性都用于封装用户请求参数 struts2中动态方法调用的格式为() ActionName_methodName.do ActionName!methodName.do ActionName_methodName.action ActionName!methodName.action

问答题:MVC是什么含义?

第14篇:struts2常量配置详情

Struts2常量的具体用法实例

Xml代码

<?xml version=\"1.0\" encoding=\"UTF-8\" ?>

\"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN\"

\"http://struts.apache.org/dtds/struts-2.0.dtd\">

该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。-->

指定加载struts2配置文件管理器,默认为org.apache.struts2.config.DefaultConfiguration

开发者可以自定义配置文件管理器,该类要实现Configuration接口,可以自动加载struts2配置文件。

-->

value=\"org.apache.struts2.config.DefaultConfiguration\" />

指定spring框架的装配模式,装配方式有: name, type, auto, and constructor (name是默认装配模式)

-->

该属性指定Struts2应用加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖

struts.properties文件中指定的属性。如果需要加载多个自定义属性文件,多个自定义属性文

件的文件名以英文逗号(,)隔开。(也就是说不要改写struts.properties!)-->

value=\"application,org/apache/struts2/extension/custom\" />

org.apache.struts2.dispatcher.mapper.DefaultActionMapper -->器,默认为

第15篇:struts2 FilterDispatcher 配置详解

struts2 FilterDispatcher 配置详解

struts2 org.apache.struts2.dispatcher.ng.filter.FilterDispatcher actionPackagesso.ifl.dancong.action ConfigProvidersproviders.MyConfigurationProvider 以上详见的配置方法。

当配置Struts2的FilterDispatcher类时,可以指定一系列的初始化参数,为该Filter配置初始化参数时,其中有3个初始化参数有特殊意义:(基于约定优于配置的原则)

config:使 用逗号隔开的字符串,每个字符串都是一个XML配置文件的位置。Struts框架将自动加载该属性指定的系列配置文件。如果用户没有定义config属 性,struts默认会载入DEFAULT_CONFIGURATION_PATHS这个值所代表的xml文件。它的值为\"struts- default.xml,struts-plugin.xml,struts.xml\"。也就是说框架默认会载入这三个项目xml文件。(一般不直接配置改参数,如是在有必要进行struts2的自定义配置,可以是重写覆盖struts.xml覆盖jar包里的配置文件)

actionPackages:使 用逗号隔开的字符串,每个字符串都是一个包空间,Struts2框架将扫描这些包空间下的Action。Struts2扫描到Action后,从

actionPackages指定的包开始,子包名会成为这个Action的namespace,而Action的name则由这个Action的类名决 定。action名字的规则是这样的:将action name从任何“Action”后缀前面截取掉,如果action name含有“/”的话,那么 将最后一个“/”后面的第一个字母变为小写。因为默认包路径后的 action名为“/类名”,所以总是将类名的首字母变成小写。 configProviders:表 示实现了ConfigurationProvider接口的Java类的列表,多个类名之间使用英文逗号(,)分隔。 ConfigurationProvider接口描述了框架的配置,默认情况下,Struts 2框架使用 StrutsXmlConfigurationProvider从XML文档中加载它的配置。使用configProviders参数,可以用来指定自己 的ConfigruationProvider接口实现类。

负责载入在web.xml中 FilterDispatcher的参数path配置的xml文件。XmlConfigurationProvider专门负责载入xwork.xml, 而StrutsXmlConfigurationProvider负责载入其他的xml配置文件。其中

StrutsXmlConfigurationProvider是XmlConfigurationProvider的子类,主要的操作都是在 XmlConfigurationProvider中实现的。这两个类实现了struts2主要的配置文件struts.xml(默认名称)等的读取。

第16篇:easyui结合struts2总结

easyui 结合Struts2 总结

1 在把struts2框架搭好以后,由于easyui和后台交互主要是靠ajax来进行的并且返回的数据格式是json形式的。所以我们必须在项目中引入struts2-json-plugin 来方便的把数据转换为json格式。需要的jar包如下图:

下面是我写的一个小例子,来更好的说明之间数据是如何传递的。(为了节省篇幅,数据库表就省略了) jsp页面主要代码如下:

当我们把页面写好以后就要写action类了。主要代码如下:

get、set方法这里就省略了。

接下来就是在struts.xml 中进行配置了。代码如下

这里要特别注意了,继承的是json-default, result 中德type是json。这里的配置是关键,起初由于配置问题,花了我很多时间。然后就是写EmpService类和getAll方法了。代码如下

这里我是把对象先放到map集合中,让和放到list集合中,这样就自动转为json格式(感觉有些麻烦,谁有好的方法,请发送到zl673170035@163.com,谢谢哈) 然后在浏览器上运行。

在js 中加入了工具条。

剩下的修改、删除、增加,我是仿照easyui官网的demo中的一个例子做的。我遇到的主要问题就是,ajax 如何把参数传给action和ajax如何接收action传回的参数。

首先说说第一个问题,ajax 如何把参数传给action.。

只要action 中有相对应的get和set 方法。我们发起ajax请求时struts就自动的把参数加到action中了。

这里把参数名都变为emp.XX 然后在action 中加入成员变量emp和get、set方法。这样action就能接收值了。

接下来需要从action中给ajax中传递参数了。我们在struts.xml中如下配置

在action中设置result 的get、set 方法。这样ajax就能接收到action传回的参数了。

好了这是我的一点心得,希望对你有用。

第17篇:struts2理论考试题目

1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2.说说struts1与struts2的区别        都是MVC的WEB框架;

struts1的前端控制器是一个Servlet,名称为ActionServlet,

struts1的action需要继承Action类,struts2的action可以不继承任何类; Struts1依赖与servlet的API struts1对同一个路径的所有请求共享一个Action实例,struts2对同一个路径的每个请求分别使用一个独立Action实例对象,所有对于struts2的Action不用考虑线程安全问题;

在struts1中使用formbean封装请求参数,在struts2中直接使用action的属性来封装请求参数; struts1中的多个业务方法放在一个Action中时(即继承DispatchAction时),要么都校验,要么都不校验;对于struts2,可以指定只对某个方法进行校验,当一个Action继承了ActionSupport且在这个类中只编写了validateXxx()方法,那么则只对xxx()方法进行校验;

3.转发和重定向的区别?  

4.Struts2执行流程      客户端发出一个指向servlet容器的请求(tomcat) 这个请求经过一系列的过滤器(Filter),最后达到StrutsPrepareAndExecuteFilter 过滤器是struts2框架的心脏,询问ActionMapper类来查找请求中需要用到的Action,

如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象。 ActionProxy创建一个

ActionInvocation

的实例,并调用

ActionInvocation

的invoke(),ActionInvocation实例包含了一系列的拦截器,在调用Action的过程前,涉及到相关拦截器(Intercepter)的调用。 

5.拦截器的生命周期      每个拦截器都实现了Interceptor接口的java类

init(): 在拦截器对象被创建后立即调用,只会调用一次,一般用来进行相关资源的初始化 intercept(ActionInvocation invocation):每个拦截一个动作请求,该方法就会被调用过一次 destory(): 该方法将在拦截器被销毁前条用,只会调用一次,一般用来释放资源 Struts2默认调用18个拦截器 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

struts2

的过滤器转发:服务端跳转,在客户端浏览器地址栏中不会显示出转向后的地址,一次请求;

重定向:客户端跳转,浏览器将会得到跳转的地址,并重新发送请求链接,两次请求。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用重定向。 struts2的前端控制器是一个filter,在struts2.1中叫StrutsPrepareAndExecuteFilter;

Struts2不依赖与Servlet的API 6.Struts2有哪些优点       

7.Struts2常量的修改方式?

常量可以在struts.xml或struts.properties中配置  

8.Struts2如何访问HttpServletRequest,HttpSeion,ServletContext,HttpServletResponse? 方式一:主动获取

HttpServletRequest request =ServletActionContext.getRequest(); HttpSeion seion =request.getSeion(); ServletContext application =seion.getServletContext(); 在struts.xml中配置常量

在struts.properties中配置常量 Strtus.action.extension=do 在软件设计上struts2的应用不依赖于Servlet API和Struts API,属于无侵入式设计; 强大的拦截器,实现了如参数拦截输入,文件上传,校验等功能

类型转换器,实现了字符串与特殊数据类类的转换 Struts2可以对指定某个方法进行校验

提供了全局范围。包范围和action范围的国际化资源文件管理

为应用程序添加了全局的result,和声明式异常处理

可以实现模块化管理,将应用程序模块化

HttpServletResponse response=ServletActionContext.getResponse();

方式二:依赖框架注入

定义类实现implements ServletRequestAware,ServletResponseAware,注入请求对象和响应对象,seion对象和application对应通过request间接获得。

9.Struts2如何管理aciton,这种管理方式有什么好处?

Struts2框架使用包管理Action,包的作用和java中的类包相似,主要管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

10.Strus2中校验的执行流程    

11.介绍ActionContext,ServletContext,pageContext? ActionContext是当前Action的上下文,通过ActionContext可以获取request,seion.applicationd等于Action有关的对象引用。

ServletContext是域对象,生命周期伴随整个web应用。 类型转换不管是否成功后,都会进行校验

先调用validateXxx()进行校验,只会校验action中方法名为xxx()的方法,如果校验失败,添加校验失败信息

再调用validate()方法,会校验action中所有与execute方法签名相同的方法,如果校验失败,添加校验失败信息

如果校验失败,则跳转到name=“input”的result指定的页面,否则,调用action的具体方法 pageContext也是一个域对象,其作用范围只是当前页面。 12.Ajax的优点    页面无刷新,用户的体验非常好。 与服务器通信,具有更加迅速的响应能力。

可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。 

13.Ajax的缺点     

14.XMLHttpRequest对象的常用属性和方法

常用属性:

readyState属性:请求的状态,有5个可取值 0=未初始化 ,1=正在加载 2=以加载,3=交互中,4=完成

responseText 属性: 服务器的响应,表示为一个字符串 reponseXML 属性:服务器的响应,表示为XML格式的对象

status :服务器的HTTP状态码,200对应ok 400对应not found。

常用方法:

open(“method”,”URL”) 建立对服务器的调用;

第一个参数是HTTP请求,方式可以为GET,POST或任何服务器所支持的您想调用的方式。

第二个参数是请求页面的URL。 send()方法,发送具体请求

15.谈谈XMLHttpRequest对象

Ajax的核心是JavaScript对象XMLHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XMLHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新。

破坏浏览器后退按钮的正常行为。

安全问题 AJAX暴露了与服务器交互的细节。 对搜索引擎的支持比较弱。 破坏了程序的异常机制。 不容易调试。 不需要下载插件或者小程序

第18篇:struts2面试题(自己总结)

Struts2面试题

1、struts2工作流程

Struts 2框架本身大致可以分为3个部分:

核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。

核心控制器FilterDispatcher是Struts 2框架的基础, 包含了框架内部的控制流程和处理机制。

业务控制器Action和业务逻辑组件是需要用户来自己实现的。

用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件, 供核心控制器FilterDispatcher来使用。

Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,

所以说Struts 2是WebWork的升级版本。基本简要流程如下: 1、客户端初始化一个指向Servlet容器的请求;

2、这个请求经过一系列的过滤器(Filter)

(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,

这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3、接着FilterDispatcher被调用,

FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action

4、如果ActionMapper决定需要调用某个Action,

FilterDispatcher把请求的处理交给ActionProxy

5、ActionProxy通过Configuration Manager询问框架的配置文件,

找到需要调用的Action类

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,

在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果 。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。 在表示的过程中可以使用Struts2 框架中继承的标签。 在这个过程中需要涉及到ActionMapper

9、响应的返回是通过我们在web.xml中配置的过滤器

10、如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。

2、说下Struts的设计模式

MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生 成动态的网页,返回给客户。

3、拦截器和过滤器的区别

1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。

3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。

4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

4、struts1于struts2的比较

1、Action 类: Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。

Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

2、线程模式: Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。

Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

3、Servlet 依赖: Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和

HttpServletResponse 被传递给execute方法。

Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和

HttpServletResponse的必要性。

4、可测性:

测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。

Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

5、捕获输入:

Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经 常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过

web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种

ModelDriven 特性简化了taglib对POJO输入对象的引用。

6、表达式语言:

Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言-- \"Object Graph Notation Language \" (OGNL).

7、绑定值到页面(view): Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts 2 使用

\"ValueStack \"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

8、类型转换:

Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。

Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

9、校验:

Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。

Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性

10、Action执行的控制:

Struts1支持每一个模块有单独的Request Proceors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

为什么要使用Struts2 Struts2 是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。

1.Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。

2使用OGNL进行参数传递。

OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取Request,Attribute,Application,Seion,Parameters中的数据。大大简化了开发人员在获取这些数据时的代码量。 3强大的拦截器

Struts2 的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。拦截器是可配置与重用的,可以将一些通用的功能如:登录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web项目中,就是使用Struts2的拦截器来完成了系统中的权限验证功能。 4易于测试

Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了5Java Web项目的测试。

易于扩展的插件机制在Struts2添加扩展是一件愉快而轻松的事情,只需要将所需要的Jar包放到WEB-INF/lib文件夹中,在struts.xml中作一些简单的设置就可以实现扩展。 6模块化管理

Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序模块化:将配置信息拆分成多个文件把自包含的应用模块创建为插件创建新的框架特性,即将与特定应用无关的新功能组织成插件,以添加到多个应用中去。

7全局结果与声明式异常

为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面。

他的如此之多的优点,是很多人比较的青睐,与spring ,Hibernate进行结合,组成了现在比较流行的h框架,当然每个公司都要自己的框架,也是h变异的产品。

struts2有哪些优点?

1)在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计; 2)拦截器,实现如参数拦截注入等功能;

3)类型转换器,可以把特殊的请求参数转换成需要的类型; 4)多种表现层技术,如:JSP、freeMarker、Velocity等; 5)Struts2的输入校验可以对指定某个方法进行校验;

6)提供了全局范围、包范围和Action范围的国际化资源文件管理实现

struts2是如何启动的?

struts2框架是通过Filter启动的,即StrutsPrepareAndExecuteFilter,此过滤器为struts2的核心过滤器; StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。struts2读取到struts.xml的内容后,是将内容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml文件。

struts2框架的核心控制器是什么?它有什么作用?

1)Struts2框架的核心控制器是StrutsPrepareAndExecuteFilter。 2)作用:

负责拦截由/*指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径 不带后缀或者后缀以.action结尾,这时请求将被转入struts2框架处理,否则struts2框架将略过该请求的处理。

可以通过常量\"struts.action.extension\"修改action的后缀,如:

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。

struts2配置文件的加载顺序?

struts.xml ——>struts.properties 常量可以在struts.xml或struts.properties中配置,如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.struts.xml文件的作用:通知Struts2框架加载对应的Action资源

struts2常量的修改方式?

常量可以在struts.xml或struts.properties中配置,两种配置方式如下: 1)在struts.xml文件中配置常量

2)在struts.properties中配置常量(struts.properties文件放置在src下):

struts.action.extension=do struts2如何访问HttpServletRequest、HttpSeion、ServletContext三个域对象?

方案一:

HttpServletRequest request =ServletActionContext.getRequest(); HttpServletResponse response =ServletActionContext.getResponse(); HttpSeion seion= request.getSeion(); ServletContext servletContext=ServletActionContext.getServletContext();

方案二:

类 implements ServletRequestAware,ServletResponseAware,SeionAware,ServletContextAware 注意:框架自动传入对应的域对象

struts2是如何管理action的?这种管理方式有什么好处?

struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的。

主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

struts2中的默认包struts-default有什么作用?

1)struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从请求中

把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使用struts2为我们提供的这些功能。 2)struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。

3)通常每个包都应该继承struts-default包。

struts2如何对指定的方法进行验证?

1)validate()方法会校验action中所有与execute方法签名相同的方法; 2)要校验指定的方法通过重写validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写; 3)当某个数据校验失败时,调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport), 如果系统 的fieldErrors包含失败信息,struts2会将请求转发到名为input的result;

4)在input视图中可以通过显示失败信息。 5)先执行validateXxxx()->validate()->如果出错了,会转发所指定的页面,如果不出错,会直接进行Action::execute()方法

struts2默认能解决get和post提交方式的乱码问题吗?

不能。struts.i18n.encoding=UTF-8属性值只能解析POST提交下的乱码问题。

请你写出struts2中至少5个的默认拦截器?

fileUpload 提供文件上传功能

i18n 记录用户选择的locale cookies 使用配置的name,value来是指cookies checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。

chain 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result()结合使用。

alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变

值栈ValueStack的原理与生命周期?

1)ValueStack贯穿整个 Action 的生命周期,保存在request域中,所以ValueStack和request的生命周期一样。当Struts2接受一个请求时,会迅速创建ActionContext, ValueStack,action。然后把action存放进ValueStack,所以action的实例变量可以被OGNL访问。 请求来的时候,action、ValueStack的生命开始,请求结束,action、ValueStack的生命结束;

2)action是多例的,和Servlet不一样,Servelt是单例的;

3)每个action的都有一个对应的值栈,值栈存放的数据类型是该action的实例,以及该action中的实例变量,Action对象默认保存在栈顶; 4)ValueStack本质上就是一个ArrayList;

5)关于ContextMap,Struts 会把下面这些映射压入 ContextMap 中: parameters : 该 Map 中包含当前请求的请求参数

request : 该 Map 中包含当前 request 对象中的所有属性 seion :该 Map 中包含当前 seion 对象中的所有属性

application :该 Map 中包含当前 application 对象中的所有属性 attr:该 Map 按如下顺序来检索某个属性: request, seion, application 6)使用OGNL访问值栈的内容时,不需要#号,而访问request、seion、application、attr时,需要加#号;

7)注意: Struts2中,OGNL表达式需要配合Struts标签才可以使用。如: 8)在struts2配置文件中引用ognl表达式 ,引用值栈的值 ,此时使用的\"$\",而不是#或者%;

ActionContext、ServletContext、pageContext的区别?

1)ActionContext是当前的Action的上下文环境,通过ActionContext可以获取到request、seion、ServletContext等与Action有关的对象的引用; 2)ServletContext是域对象,一个web应用中只有一个ServletContext,生命周期伴随整个web应用;

3)pageContext是JSP中的最重要的一个内置对象,可以通过pageContext获取其他域对象的应用,同时它是一个域对象,作用范围只针对当前页面,当前页面结束时,pageContext销毁,

生命周期是JSP四个域对象中最小的。

result的type属性中有哪几种结果类型?

一共10种:

dispatcher struts默认的结果类型,把控制权转发给应用程序里的某个资源不能把控制权转发给一个外部资源,若需要把控制权重定向到一个外部资源, 应该使用 redirect结果类型

redirect 把响应重定向到另一个资源(包括一个外部资源) redirectAction 把响应重定向到另一个 Action freemarker、velocity、chain、httpheader、xslt、plainText、stream

拦截器的生命周期与工作过程?

1)每个拦截器都是实现了Interceptor接口的 Java 类;

2)init(): 该方法将在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次.可以在该方法中对相关资源进行必要的初始化;

3)intercept(ActionInvocation invocation): 每拦截一个动作请求, 该方法就会被调用一次; 4)destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次;

5)struts2中有内置了18个拦截器。

struts2如何完成文件的上传?

1、JSP页面:

1)JSP页面的上传文件的组件:,如果需要一次上传多个文件, 就必须使用多个 file 标签, 但它们的名字必须是相同的,即:

name=“xxx”的值必须一样;

2)必须把表单的enctype属性设置为:multipart/form-data; 3)表单的方法必须为post,因为post提交的数据在消息体中,而无大小限制。

2、对应的action:

1)在 Action 中新添加 3 个和文件上传相关的属性;

2)如果是上传单个文件, uploadImage属性的类型就是 java.io.File, 它代表被上传的文件, 第二个和第三个属性的类型是 String, 它们分别代表上传文 件的文件名和文件类型,定义方式是分别是:

jsp页面file组件的名称+ContentType, jsp页面file组件的名称+FileName 3)如果上上传多个文件, 可以使用数组或 List

第19篇:struts2 导出pdf excel

Action 配置: Excelaction :

application/vnd.ms-excel

name=\"exportAetRequisitionAction\" cla=\"com.action.aets.export.ExportAetRequisitionAction\" method=\"execute\">name=\"contentDisposition\">attachment;filename=\"${fileName}\" inputStream Pdfaction:

name=\"exportAetRequisitionPdfAction\" cla=\"com.action.aets.export.ExportAetRequisitionPdfAction\" method=\"execute\">

application/pdf;charset=gb2312

导出pdf:

1.import com.lowagie.text.Document;

2.import com.lowagie.text.Font;

3.import com.lowagie.text.Paragraph;

4.import com.lowagie.text.pdf.BaseFont;

5.import com.lowagie.text.pdf.PdfWriter;

6.private InputStream pdfStream;

7.

8.

/**

9.

* 导出PDF 格式 10.

* @return

11.

*/

public cla ExportAetRequisitionPdfAction extends BaseAction { private static final long serialVersionUID = 1L; private String fileName;

attachment;filename=\"${fileName}\"

2048

inputStream

private ByteArrayOutputStream buffer; private ByteArrayInputStream inputStream; public ByteArrayOutputStream getBuffer() { return buffer; } public void setBuffer(ByteArrayOutputStream buffer) { this.buffer = buffer; } public InputStream getInputStream() { return inputStream; } public String getFileName() { } return fileName; public void setFileName(String fileName) { this.fileName = fileName; } public String execute() throws Exception{

try{

this.setFileName(\"调拨单.pdf\");

fileName = new String(fileName.toString().getBytes(), \"ISO8859-1\");

Rectangle rectPageSize = new Rectangle(PageSize.A4);// 定义A4页面大小

rectPageSize = rectPageSize.rotate();// 加上这句可以实现A4页面的横置

// 左 右 上 下

Document document = new Document(rectPageSize, 10, 10, 80, 50);// 其余4个参数,设置了页面的4个边距

BaseFont bfChinese = BaseFont.createFont(\"STSong-Light\", \"UniGB-UCS2-H\", BaseFont.NOT_EMBEDDED);

Font FontChinese = new Font(bfChinese);

ByteArrayOutputStream buffer = new ByteArrayOutputStream();

PdfWriter.getInstance(document, buffer);

document.open();

document.add(new Paragraph(\"中文Hello World\",FontChinese));

document.close();

} catch (Exception e)

{ e.printStackTrace();

}

this.pdfStream = new ByteArrayInputStream(buffer.toByteArray());

buffer.close();

return SUCCESS;

}

}

导出excel:

public cla ExportAetRequisitionAction extends BaseAction { private static final long serialVersionUID = 1L;

private String fileName; private ByteArrayOutputStream baos; private ByteArrayInputStream inputStream; public ByteArrayOutputStream getBaos() { return baos; } public void setBaos(ByteArrayOutputStream baos) { } this.baos = baos; public ByteArrayInputStream getInputStream() { return inputStream; } public void setInputStream(ByteArrayInputStream inputStream) { this.inputStream = inputStream; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } @SuppreWarnings(\"unchecked\") public String execute() throws Exception{

try{

this.setFileName(\"调拨单.xls\");

fileName = new String(fileName.toString().getBytes(), \"ISO8859-1\"); HttpServletRequest request = ServletActionContext.getRequest(); request.setCharacterEncoding(\"UTF-8\"); // 表头字段内容

beg-->List headlist = new ArrayList(); headlist.add( \"品

名\");

headlist.add(\"规

格\"); headlist.add( \"单位\"); headlist.add(\"数

量\");

headlist.add( \"单

价\"); headlist.add(\"金

额\"); headlist.add(\"备

注\"); List headlistMoney = new ArrayList(); headlistMoney.add( \"十\");

}

}

headlistMoney.add(\"万\"); headlistMoney.add( \"千\"); headlistMoney.add(\"百\"); headlistMoney.add( \"十\"); headlistMoney.add( \"元\"); headlistMoney.add(\"角\"); headlistMoney.add(\"分\"); int[]widths= { 6000,6000,800,3000,3000,600,600,600,600,600,600,600,600,9000}; // 表头字段内容

end

HSSFSheet sheet = wb.createSheet(\"调拨单\"); for(int j=0;j

CreateTableHeader(wb, sheet, headlist, headlistMoney);//创建表头 CreateTableRowLine(wb, aetsInfoList, sheet);//创建表格内容

baos = new ByteArrayOutputStream(); baos.flush(); wb.write(baos); } catch (Exception e) { e.printStackTrace(); } inputStream = new ByteArrayInputStream(baos.toByteArray()); return SUCCESS;

第20篇:工作上的漏洞

一、工作上的漏洞

(一) 具体体现:

1、学习不够,没有把科学发展观理论与学校教育教学紧密结合。在运用科学发展理论来指导教育教学时,眼光过度关注学校发展,忽视了科学发展理论对学校问题的普遍指导意义,尤其忽视了对于学校细节管理的指导意义。对于新课标学习、高考精细化研究及重点问题突破集中时间不足,精力不够,成果不显著。

2、一些领导在青年教师面前以“我过的桥比你走的路还多”的姿态来提意见、做决策,在学校管理工作中以老眼光看待新问题,凭老经验办事情,而不考虑实际情况,不根据时事变化相应的做出科学决策,导致有的决策不合时宜。

3、倾听群众呼声的意识不强。对于群众的智慧,发挥使用不够。尤其对教研组长和班主任,会上对他们指导多,提出的要求多,会下交流少,倾听他们的建议少,而组长与班主任,倾听一线教师呼声的意识也不强,这在一定程度上影响了学校管理工作的针对性。

(二)根源剖析

1、思想上认识不到位,总是以工作忙为借口忽略学习新观点、新方法、新思路的重要性,一直认为以前的东西肯定不过时,不退伍,忽略时代发展的需要。

2、虽然一些领导极力去靠近一线教师的工作和生活,但由于日久积累下的上下级观念,导致一些意见和建议泛泛而谈,无关痛痒,使得一些改革上出成效,但不显著。

3、学校的成绩逐年攀升,使得一些领导和教师沉浸在喜悦当中无法自拔,认为之前所有的做法都是正确的,忘记了时代的变化和发展,缺少发展眼光。

(三)整改措施

1、潜下心来,深入学习科学发展理论,学习先进的教学教学理论;主动走出去,寻找先进学校与我校教育教学的契合点,解决好制约学校发展的症结;融入教职工中,倾听群众的呼声,掌握第一手资料,使学校管理思路更加清晰,制度更加完善,方法更加科学。

2、重视“以老带新”,也不能忽视“以新促老”,在以后的工作中,应该注重新老教师互动,不仅有和谐,也应该有竞争,让一些老领导和老教师在新教师的促动下与时俱进。

3、虽有“校长助理”制度,但不能光为校长提意见,也应该为副校长及其他中层领导提一些措施,让一些行为见一见阳光,让一些措施出来晒一晒太阳。

二、制度上的缺失

(一)具体体现:

1、班主任制度某些方面的不合理性使得许多教师不愿意做班主任,由此导致一些有能力的教师“退避三舍”,不能够人尽其才,造成人才资源的浪费和损失。

2、在对待临时工方面,单纯的将学校和临时工看作是雇佣与被雇佣的关系,使好多的临时工没有归宿感,同时,从县政府到学校,在政策上没有为临时工做出保障,使得许多临时工“身在曹营心在汉”,工作效率上也大打折扣。

3、由于权利过于集中,形成“领导说你行,你就行,不行也行;领导说你不行,你就不行,行也不行”的局面,为此,本来是教育上的一些精英和骨干,因为“不识时务”、“不懂领导的心”,成为“刺头”、“异类”。

(二)根源剖析

1、当一个班交给一位班主任手中时,那么无论这个班里发生的任何事情都是班主任一个人的事,即使任课老师所代的成绩不理想,也都归咎于班主任一个人身上,“起的比鸡早,睡的比狗晚”,付出的多,但有时收获却很少很少。

2、出于对财政方面的考虑,不能过多考虑临时工的待遇问题。另一方面,临时工可以召之即来,挥之即去,不用去长久考虑。

3、长久以来,人们心中存在的上下级观念,导致一些领导利用手中的权利,或牟取私利,或公报私仇,或满足其虚荣心。造成这种现象不仅有领导的原因,但是也不能忽略使这种现象“开花结果”的群众“沃土”。

(三)整改措施

1、在分工上,班主任不“一肩挑”,在制度上约束一些代课教师的职责,同时,利用好新出台的 “设立副班主任”制度,不能只是挂职,而没有作用。最后,考虑在班主任待遇上,多在政策和补贴上予以倾斜。

2、在制度上,给临时工一些政策支持,对于不同工龄和工种的临时工,分别对待,同时,建立考查机制和评价机制,多给这些同志步入“正式工”行列的机会。

3、让权利在阳光下行使,不搞一权独大,在制度上,要建立有效的监督机制,把权利关在制度的牢笼里。

三、政令不畅打折扣

(一)具体体现

1、在制定决策上,出现“朝令夕改”的现象,今天一个样,明天又换成另一个样,今天一个主意,明天又是另一个方案,政策缺乏延续性。

2、利于自己的政策就大肆的宣传执行,不利于自己的政策就千方百计的隐瞒封杀,导致上级的政令不能贯彻。

3、一些决策者把上级的规定命令指示当成传话筒,上级怎么说的原封不动的传给下级,不调查不摸底,不是吃透上情了解下情,而是下一通命令指示像传话筒一样使落实者知其然,不知其所以然。

(二)根源剖析

1、由于一些领导的能力和水平限制,在制定决策时出现缺乏主见的现象,今天有人提出意见,觉得有道理,明天又有人提出新主张,感觉也不错,这样跟着他人思维走。

2、这是一种典型的“地方保护主义”,凡事不从大局着眼,而是从自己的利益出发,过分追求自己的教学成绩,而不管学校发展的大局。

3、好多同志本着“明哲保身”的原则,只是机械化的执行决策,缺少独立思考和结合实际的能力。

(三)整改措施

1、制定决策时,听取他人的合理化意见和建议的同时,也不能奢望别人能为自己提供“包治百病”的“万金油”。对于他人的经验,不能盲目照搬照抄,应该合理取舍,大胆超越。

2、在制度上约束这种“我行我素”中透着些自私的行为,在评价成绩时,不仅看其结果如何漂亮,还要看其在过程中所带来的影响。

3、加强学习,让这些“传话筒”能够清醒的理解每一项政策的重要性和实施的必要性。建立和健全完整的评价机制,防止这类思想的蔓延。

四、工作疲沓不作为

(一)具体表现

1、有些领导在针对自己部门作出的决定,只是说说,走过场,具体如何落实,却没有了下文,本来一个很好的决策,却因为实施不力,没有结果了。

2、在学习怀仁以及山东一些教育先进校的时候,照搬照抄,不考虑自己学校和学生的实际情况,盲目作为。

3、在解决教师们生活中的实际问题时,总是以各种政策和实际困难搪塞,如学校书店的管理问题,幼儿园家长车辆乱停乱放,横冲直撞的问题等。

(二)根源剖析

1、缺乏开拓创新的精神,固步自封;怕承担风险,干脆不作为,话说的漂亮,做事却畏手畏脚,前怕狼,后怕虎。

2、为了迎合领导喜好,盲目照搬照抄,不管实际情况,认为只要学习了,领导就会开心,就会不找麻烦,自己就会成为落实有力的典型。

3、责任心不强,本着“事不关己,高高挂起”的原则,不涉及到自身利益,绝对不会去触碰,忘记自己身在领导岗位。

(三)整改措施

1、以刚性的约束机制真正形成“能者上、庸者下”的选人用人机制

2、加强勤政文化建设,使“无须扬鞭自奋蹄”蔚然成风。

3、要走进教室和学生的学习生活中去,拉近与他们的距离,领导不能只会高高在上,也要低头聆听民意民情。

高二年级杨海娥

《struts2 漏洞自查报告.doc》
struts2 漏洞自查报告
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

相关推荐

实施方案自查报告整改措施先进事迹材料应急预案工作计划调研报告调查报告工作汇报其他范文
下载全文