Tag: 拦截器

Struts 2 – Interceptor重置响应JSON对象

我在我的Web应用程序中使用Struts 2。 我编写代码来检查用户会话到拦截器,但是当我返回net.sf.json.JSONObject作为响应时,它重置响应对象并将null设置为对象。 请检查我的代码。 import net.sf.json.JSONObject; import com.opensymphony.xwork2.interceptor.Interceptor; public class AuthorizationInterceptor implements Interceptor { JSONObject response = new JSONObject(); public String intercept(ActionInvocation invocation) { try { Map session = invocation.getInvocationContext().getSession(); if (session.get(“userId”) == null) { response.put(“errorCode”, “SESSION_OUT”); return ActionSupport.ERROR; } else { System.out.println(“Session found”); Object action = invocation.getAction(); return invocation.invoke(); } } catch (Exception e) […]

Struts 2(版本2.3.28)仅接受已注册的区域设置

在Struts 2版本2.3.28中, i18n拦截器只接受注册到jvm的语言环境,该语句由Locale.getAvailableLocales()返回。 好吧,虽然我可以扩展可用的Java语言环境列表,如上所述如何扩展可用的Java语言环境列表 ,是否设置此拦截器接受所有字符串作为语言环境的简短方法(例如fa_IR )? 请注意:将默认语言环境设置为fa_IR ( )可以正常工作。

没有使用拦截器绑定调用拦截器方法

我正在使用Java EE 6和Jboss AS7.1并尝试使用拦截器绑定( 来自jboss站点的示例 )。 我有一个InterceptorBinding注释: @InterceptorBinding @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) public @interface GeoRestrictedEquipment { } 拦截器: @GeoRestrictedEquipment @Interceptor public class GeoRestrictedEquipmentInterceptor { @EJB EquipmentDao equipmenttDao; @EJB SecurityService securityService; @AroundInvoke public Object checker(InvocationContext ctx) throws Exception { Integer id = (Integer) ctx.getParameters()[0]; Equipment equipment = equipmenttDao.findById(id); GeoChecker.check(equipment.getSite(), securityService.getUser()); return ctx.proceed(); } } 还有一个豆子: […]

Struts2中的拦截器线程是否为UNsafe?

我知道Struts2 Action类是线程安全的,因为操作放在Value Stack中。 值栈依次是Action Context的一部分。 由于Action Context是线程本地的,因此存储在Action Context(包括值栈)中的值对于每个线程都是唯一的。 因此,Actions是线程安全的。 但考虑一下拦截器:它们非常有用,它们为程序员完成所有繁琐的小工作……比如validation,获取参数值等等。但需要考虑的是:拦截器可以在多个请求之间共享。 那么这会使拦截器线程不安全吗? 考虑到这个问题,我试图在网上浏览一些与此问题相关的好文章。 我发现了一篇非常好的文章,他们已经清楚地提到了一个例子拦截器如何不是线程安全的。 该网页是: http : //www.bullraider.com/java/struts2/tutorials/interceptors-and-thread-safety 我从这篇文章中得知,拦截器线程不安全的主要原因是拦截器只创建了一次。 即每个拦截器只有一个对象。 因此,当线程之间共享Interceptor的相同实例时,实例字段不安全。 在文章的最后,提到有些情况,甚至拦截器都是线程安全的。 但他们没有提到任何此类案件。 我在网上冲浪找到答案……但徒劳无功:( 任何人都可以告诉我或给我一个链接,在那里我可以找到如何使拦截器线程安全(或拦截器线程安全时的情况是什么)?

Struts 2 – 意外exception捕获设置’xx’

我试图从HTML表单提交未知数字输入到Action类,并使用Action类中的请求方法(使用ServletActionContext)获取Input参数信息。 但它的投掷 Unexpected Exception caught setting ‘xx’ on ‘class classname Error setting expression ‘xx’ with value [‘yy’, ] 由于表单中的输入元素是使用JS动态添加的,因此我无法在Action类中使用getter和setter。 如何处理Action类没有任何exception? JSP: Team Activity Log function addRow(tableid) { var table = document.getElementById(tableid); var rowCount = table.rows.length; var row = table.insertRow(rowCount); var cell1 = row.insertCell(0); var element1 = document.createElement(“select”); element1=document.getElementById(“sele”).cloneNode(true); element1.type=”select”; cell1.appendChild(element1); var cell2=row.insertCell(1); var element2 = […]

在Spring-mvc拦截器中,如何访问处理程序控制器方法?

在Spring-mvc拦截器中,我想访问处理程序控制器方法 public class CustomInterceptor implements HandlerInterceptor { public boolean preHandle( HttpServletRequest request,HttpServletResponse response, Object handler) { log.info(handler.getClass().getName()); //access to the controller class //I want to have the controller method … return true; } … } 我已经发现 : 如何对获得控制器,方法名,在弹簧拦截-prehandle法 但它只能解决。 我希望方法名称可以访问注释。

用于弹簧拦截器的Java配置拦截器使用自动assembly的弹簧豆

我想添加spring mvc拦截器作为Java配置的一部分。 我已经有了一个基于xml的配置,但我正在尝试转向Java配置。 对于拦截器,我知道可以从弹簧文档中这样做 – @EnableWebMvc @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LocaleInterceptor()); } } 但我的拦截器正在使用一个自动装入它的弹簧豆,如下所示 – public class LocaleInterceptor extends HandlerInterceptorAdaptor { @Autowired ISomeService someService; … } SomeService类如下所示 – @Service public class SomeService implements ISomeService { … } 我正在使用像@Service这样的注释来扫描bean,并且没有在配置类@Bean它们指定为@Bean 据我所知,由于java config使用new来创建对象,spring不会自动将依赖项注入其中。 我如何添加这样的拦截器作为java配置的一部分?

使用Interceptorvalidation用户访问权限

我试图使用Interceptor来限制用户执行某些操作。 ContainsKeyInterceptor : public class ContainsKeyInterceptor extends AbstractInterceptor implements SessionAware { private static final long serialVersionUID = 1L; private Map session; @Override public String intercept(ActionInvocation actionInvocation) throws Exception { if(session == null) { System.out.println(“session is null”); } if(session.containsKey(“currentId”)) { return “index”; } String result = actionInvocation.invoke(); return result; } @Override public void setSession(Map session) { […]

如何在Spring中拦截静态方法?

主题行基本上都说明了一切。 我有一个静态方法,我想拦截,以便可以应用它周围的建议。 我可以使用任何非静态方法,但我不确定如何允许拦截静态方法。

用户会话在tomcat上混淆了

我们在IIS7.5之后使用Tomcat 6.29,使用spring,hibernate和struts2框架。 我们现在开始注意到服务器会话正在混淆,特别是在Ajax请求中。 关于这个问题的更多细节 用户1请求page1,用户2请求page2。 但是user1获得了page2,而user2获得了server1。 会话ID也在变化,但在刷新页面时,会提供正确的页面。 当用户数量很多时,问题似乎更频繁发生。 任何指向问题根源的指针都会有所帮助,代码运行正常,用户数量较少,并且没有报告此类实例。 编辑 web.xml中 bm contextConfigLocation classpath:spring/*Context.xml encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter encodingFilter /* struts2 /* org.springframework.web.context.ContextLoaderListener org.apache.struts2.tiles.StrutsTilesListener 在struts.xml dojo\..*,^struts\..* 其他信息 1)用户通过提交表单登录,登录时我们执行以下操作, public class xxxAction extends ActionSupport implements SessionAware { public String execute() { session.clear(); if (session instanceof org.apache.struts2.dispatcher.SessionMap) { try { ((org.apache.struts2.dispatcher.SessionMap) session).invalidate(); } […]