Struts2问题汇总
- 格式:pptx
- 大小:99.63 KB
- 文档页数:5
学习struts2.2.1遭遇滑铁卢~~~~~好多异常~~~~~好多bug~~~~好多问题~~~~~~好多困难~~~好多肥羊~~~一、Filter mapping specifies an unknown filter name ----filter标签在web.xml 里的顺序<filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter>这样写启动服务器时报错 Filter mapping specifies an unknown filter nameadminOperateLogFilter将这两块换个顺序就没问题了,web.xml信息的加载是有顺序的,filter在mapping之前必须要让服务器找到其定义。
<filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter><filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>二、ng.IllegalArgumentException: Filter mapping specifies an unknown filter nameStruts2答:“Struts2”?大写的?are you sure?我猜你一定是看了某struts2.0的权威指南(那是一个chm文件电子书,而且你看的可能是翻译成中文的),我不知道英文版的有没有写错,但是我检查了很久后才发现中文版存在这个大小写错误。
1.以下属于struts2的控制器组件是()。
A.ActionB.ActionFormC.ActionServletD.dispatchAction2.以下属于struts2的体系结构的是()。
A.struts2控制器组件B.struts2配置文件C.FilterDispathcerD.Action3.以下属于struts2配置文件中的配置元素是()。
A.<package>B.<action>C.<form-beans>D.<action-mappings>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/classes目录下B.名字必须为struts.xmlC.配置Action时,必须配置包信息D.使用<forward>元素配置转发7.在struts2配置中用()元素来配置常量。
B.<constants>C.<constant>D.<constant-mapping>8.关于struts2包的说法正确的是()。
Struts2习题Struts2习题11.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?标识、可以、如果没写,说明该包为默认空间2.Action 的实现通集成常用那种方法?一种是直接实现自己的Action另一种是实现Action的接口继承ActionSupport3.不属于Struts2的动作类的常量返回值的是(C)A.successB.inputC.neverD.login4.以下不属于Struts2动作执行的结果类型是(A)a.actionb.redirectc.redirectActiond.dispatcher5.在struts.xml中。
假如在一个package中没有配置namespace,那么在其中配置一个Action名字叫做login,它的result是这样配置的/login.jsp,已知在此配置文件中还有另一个name为user的package其中也有一个Action名字为login,它的result是这样配置的/loginUser.jsp那么在以下什么情况下将能访问到login.jsp AA.在根路径后输入/loginB.在根路径后输入/user/loginC.在根路径后输入/login/userD.在根路径后输入/abc/login6.正规开发中,在使用struts2时定义Action使用哪种方式。
BA.直接定义Action类。
B.从ActionSupport继承。
C.从Action继承。
D.实现Action接口。
7.不同的线程在调用Action时创建几个Action实例。
CA.1个B.2个C.每个线程创建1个。
D.可以自定义配置。
8.struts提供了Action接口定义了5个标准字符串常量,不包括的有(C )A SUCCESSB NONEC REGD LOGIN9.列举出action执行结果类型,并说明用途。
Javastruts2捕获404错误的⽅法汇总如果我们在浏览器地址栏乱敲的时候,所敲⼊的所有未定义的URL都能被程序捕捉到,然后转到⼀个⾃制的404错误处理页⾯。
先看效果图登陆页⾯主页⾯随便输加上标点符号随便输的action⽅法⼀编写 web.xml<error-page><error-code>404</error-code><location>/404.html</location></error-page>注:1.所以未找到的404错误都会转到 404.jsp 接受处理。
2.但是经过试验,我发现以.action结尾的URL会先被struts2框架所捕获,⽽不会直接转⼊web.xml中配置的处理页⾯。
这样,如果在struts.xml没有配置相应的action。
前台报错:后台报错:⽅法⼆编写 struts.xml<default-action-ref name="pageNotFund"/><action name="pageNotFund"><result>/404.html</result></action>注:1.pageNotFund 是⾃⼰定义的⼀个acion,它的结果页⾯为 /404.html 。
2.pageNotFund 请求的action中也可以处理其他结果。
总结当访问⼀个不存在页⾯时,⼀般显⽰404错误,这是⼀个很不友好的页⾯,很多⽹站都会让应⽤捕获这个404错误,并跳到指定的友好页⾯。
随便输⼊,再也见不到404了。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助。
1、在struts.xml文件中添加:<constant name="struts.i18n.encoding" value="gb2312" />页面编码格式如果是gb2312那么value值就写gb2312,页面编码如果是GBK那么value值就写GBK;总之页面什么编码格式这里的value就写什么格式。
这样简单语句话就解决了乱码问题如下:<struts><constant name="struts.i18n.encoding" value="gb2312" /><package name="com" extends="convention-default">............</struts>2、url传值到Action的乱码解决方法jsp页面 URL传中文参数到Action里面出现乱码,用过滤器和控制器都解决不了,用了我两个多小时解决这个小问题!解决方法有以下几种:第一种:在Action中用 new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码,因为传递的时候,中文默人的是ISO8859_1第二种:可通过配置TOMCAT来解决此问题,具体解决方法如下:在tomcat的server.xml里,找到<Connector port="8080"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443"acceptCount="100"debug="0" connectionTimeout="20000"disableUploadTimeout="true"useBodyEncodingForURI="true" URIEncoding="gbk">其中是修改 disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="gbk" 其方法是防止在url中出现乱码然后在每个Jsp页面添加如下代码<%@ page pageEncoding=”gb2312″%><%@ page contentType=”text/html;charset=gb2312″%><%request.setCharacterEncoding(”gb2312″);%>第三种:直接在ACTION中利用以下方法解决:request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");我用的是struct1.2+Hibernate3.0+Spring2.0在做那个两个action的页面的时候,jsp页面的下拉列表通过actionForm传值给action,老是得到乱码,过滤器+server.xml+页面编码统一后,仍不能解决。
struts2常见面试题Introduction:Struts2是一种用于开发Java Web应用程序的开源Web应用框架。
在软件工程领域,Struts2常常是面试中的热门话题。
本文将介绍一些常见的Struts2面试题,并提供详细解答和示例。
Question 1: 什么是Struts2框架?它的主要特点是什么?Struts2是一个基于MVC设计模式的Web应用框架。
它通过集成多个核心组件(如拦截器、过滤器、表单验证等)提供了一套丰富的功能,用于简化开发和管理Java Web应用程序。
Struts2的主要特点包括:1. 松耦合:Struts2使用基于配置的方式来管理组件之间的依赖关系,降低了模块之间的耦合。
2. 灵活性:开发人员可以根据自己的需求进行扩展和定制,以适应不同的项目需求。
3. 可测试性:Struts2的组件松耦合特点使得单元测试变得容易,并且可以方便地模拟用户请求进行测试。
Question 2: Struts2的核心组件有哪些?Struts2的核心组件包括:1. Action:处理用户请求的核心组件,负责接收请求并执行相应的业务逻辑。
2. Interceptor:用于对请求进行预处理和后处理的拦截器组件。
3. Result:负责生成响应结果,可以是页面视图或其他格式的数据(如JSON、XML等)。
4. FilterDispatcher:负责将请求分发给合适的Action处理。
5. ValueStack:用于存储Action处理的结果数据,支持OGNL表达式以便于数据的访问和操作。
Question 3: 如何定义一个Struts2的Action?在Struts2中,可以通过以下几种方式来定义一个Action:1. 实现Action接口:通过实现Action接口,并提供相应的业务方法来处理请求。
2. 继承ActionSupport类:ActionSupport是一个提供了一些方便方法的抽象类,可以直接继承并实现自己的业务逻辑。
struts2漏洞解决方案对于Struts2漏洞的修复和预防是非常重要的,因为它可能导致严重的安全问题和系统遭受攻击。
在本文中,我们将介绍一些可行的解决方案和建议,以帮助您防范和修复Struts2漏洞。
1. 及时更新Struts2框架版本Struts2团队经常发布新版本来修复安全漏洞和其他bug。
您应该始终关注Struts2的官方网站,了解最新版本的发布情况,并尽快将您的应用程序升级到最新版本。
新版本通常会修复旧版本中存在的已知漏洞,并提供更好的安全性和稳定性。
2. 安全配置在您的Struts2应用程序中,您可以配置一些安全设置来增加系统的安全性。
例如,可以禁用用于开发和调试的Struts2调试模式,禁用动态方法调用,并且仅允许受信任的主机进行访问。
这些配置可以减少潜在的攻击面并增强您的应用程序的安全性。
3. 过滤用户输入用户输入是导致Struts2漏洞的常见来源之一。
为了避免潜在的安全问题,您应该始终对用户的输入数据进行有效的过滤和验证。
使用适当的输入验证和过滤技术,如正则表达式、白名单和黑名单等,可以防止常见的漏洞攻击,如SQL注入和跨站脚本攻击。
4. 使用安全框架或插件除了Struts2框架本身的安全性措施外,您还可以考虑使用安全框架或插件来增强您的应用程序的安全性。
例如,Apache Shiro是一个强大而灵活的安全框架,可以与Struts2无缝集成,并提供更高级的安全功能,如认证、授权和会话管理等。
5. 日志和监控为了及时发现和应对潜在的Struts2漏洞攻击,您应该启用详细的日志记录和监控机制。
定期审查日志记录,以便及早识别异常活动和攻击尝试。
同时,您还可以使用安全监控工具来实时监视您的应用程序,以便及时发现和应对任何安全威胁。
总结:通过及时更新Struts2框架版本、配置安全设置、过滤用户输入、使用安全框架或插件以及启用日志和监控机制,您可以有效地解决和预防Struts2漏洞。
在保障应用程序的安全性方面,持续的关注和努力非常重要。
struts2面试题Struts2是一个基于Java开发的Web应用程序框架,被广泛应用于企业级Java应用开发中。
在面试中,面试官可能会提出一些关于Struts2的问题,以评估应聘者的技术水平。
下面是一些常见的Struts2面试题及其详细答案,希望对你在面试中有所帮助。
1. 什么是Struts2?Struts2是一个轻量级的、基于MVC模式的Web应用程序框架。
它采用Java Servlet API和JavaServer Pages (JSP)技术,并提供了一种简单易用的方式来开发可维护和可扩展的Web应用程序。
2. Struts2的主要特性是什么?Struts2的主要特性包括:- MVC架构:将应用程序分为模型、视图和控制器,使开发更容易管理和扩展。
- 拦截器:通过拦截器可以在请求处理的各个阶段添加自定义的逻辑。
- 标签库:提供了丰富的标签库,简化了页面开发。
- 表单验证:提供了灵活且强大的表单验证机制,可以验证用户输入的数据。
- 国际化支持:支持多语言和本地化。
- 配置简单:通过配置文件来管理应用程序的行为。
3. Struts2的工作原理是什么?Struts2的工作原理如下:1) 客户端发送HTTP请求到服务器。
2) 服务器将请求交给Struts2的过滤器(Filter)。
3) 过滤器通过配置文件找到对应的Action,并调用相应的方法。
4) Action处理请求,并返回一个结果页面的名称或一个结果对象。
5) 结果页面的名称通过配置文件进行映射,服务器将其发送给客户端。
4. 什么是Struts2中的Action类?Action类是Struts2框架中的核心组件,用于处理Web请求。
一个Action类对应一个业务功能,其包含了要执行的方法和数据。
它负责接收请求、处理业务逻辑、将结果返回给前端页面。
5. Struts2中的拦截器是什么?有哪些内置的拦截器?拦截器是Struts2中的组件,用于在请求处理的各个阶段添加自定义的逻辑。
一、第一个异常处理严重: Servlet.service() for servlet jsp threw exceptionThe Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)atorg.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) atponentTagSupport.doStartTag(ComponentTagSupport.java:48) at_005fstruts2_005flz.YpxxbQuery_jsp._jspx_meth_s_005fdebug_005f0(Ypxxb Query_jsp.java:108)at_005fstruts2_005flz.YpxxbQuery_jsp._jspService(YpxxbQuery_jsp.java:83)解决的办法:(4种解决方案)1.web.xml 中添加一个filter<filter-mapping><filter-name>struts2</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/action/*</url-pattern></filter-mapping>2.<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意<url-pattern>这里一定要是/*3.这通常是由于不经由Filter访问包含struts标签的jsp页面导致的。
struts2的关于method=“{1}"意思详解<action name= "Login_* " method= "{1} " class= "mailreader2.Login ">中Login_*带*是什么意思?method= "{1} "带{}这个是什么意思?====================================================name= "Login_* "代表这个action处理所有以Login_开头的请求method= "{1} "根据前面请求Login_methodname,调用action中的以methodname命名的方法class= "mailreader2.Login "action的类名称如jsp文件中请求Login_validateUser的action名称,根据上面配置,调用action类mailreader2.Login类中方法validateUser()又如:对于Login_update请求,将会调用mailreader2.Login的update()方法。
它的用法同webwork中的!符号的作用,相当于是一个通配符。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++Struts2 学习笔记4--Action Method--接收参数文章分类:Java编程struts2中的路径问题注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp 的根路径,即MyEclipse web项目中的WebRoot路径。
总结:struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。