我在我的网络应用程序中收到"未找到线程绑定请求"错误,并希望得到一些帮助.我正在尝试使用struts2 + spring + hibernate,并使用spring来管理hibernate会话工厂,并将hibernate会话注入我的struts操作.我希望这是有道理的.当应用程序启动时,没有错误,但是当我发出第一个Web请求时,它会弹出"未找到线程绑定请求"错误.这是我的春季配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="hibernateSessionFactory" scope="singleton"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
<bean id="hibernateSession" factory-bean="hibernateSessionFactory"
factory-method="openSession" destroy-method="close" scope="request" class="org.hibernate.Session" />
</beans>
Run Code Online (Sandbox Code Playgroud)
这是我的行动:
package actions.events;
import org.hibernate.Session;
public class Listing {
Session session;
public void setHibernateSession(Session value) throws Exception
{
session = value;
}
public String execute() {
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
我唯一的领先是,如果我删除上面的'setHibernateSession'函数,我不会得到错误,因为如果动作不需要一个(懒惰的实例化),大概春天不打扰创建会话.
这是例外:
Unable to instantiate Action, actions.events.Listing, defined for 'Listing' in namespace '/events'Error creating bean with …Run Code Online (Sandbox Code Playgroud) 我ActionMessages在执行一个没有显示的动作时遇到了一些问题,我发现我的问题是由于我的前锋redirect=true在struts-config.xml中.
由于默认行为是redirect=false,我一直在考虑可以使用哪些好处redirect=true,我找不到任何答案.有谁知道何时以及为什么redirect=true应该在行动中使用?
我正在开发一个中型Java Web应用程序,Struts作为MVC框架,在数据访问层使用简单的JDBC.我一直在寻找这种应用程序中的异常处理最佳实践.我发现了几篇文章,其中一些是矛盾的,只会让我更加困惑,而不是让事情变得简单明了.有人说重用现有异常而不是定义特定于应用程序的异常更好,其他异常则为系统中可能发生的每个小麻烦提供了一个巨大的应用程序特定异常层次结构.有人说最好不要在数据访问层处理异常并将它们委托给服务层,其他人则说应该在本地捕获数据访问层异常,因为将它们委托给服务层会违反两层之间的抽象.等等.
如果您让我知道文章/书籍的链接/名称,我会非常感谢您提供在这种情况下适合您的可靠解决方案.解决方案应至少清楚以下几点,并提出理由:
谢谢
我想为我的Web应用程序实现跨站点请求防伪,这是基于struts 1.x框架.我知道struts 2框架为此提供了令牌拦截器,我可以使用过滤器实现类似的功能.
我很少有人认为1)我怎么能用简单的方式生成独特的令牌呢?(我可以为此目的使用Action类令牌,用于避免重复的表单提交)
使用struts 1.x框架令牌机制进行CSRF预防是否存在任何问题
这是WEB-INF中的文件web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>glpi.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<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>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud) 我正在使用Spring,Hibernate,Struts和Maven创建Web应用程序.
运行mvn clean install命令时出现以下错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.project.action.PasswordHintActionTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.project.action.PasswordHintAction com.project.action.PasswordHintActionTest.action; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.project.action.PasswordHintAction] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Run Code Online (Sandbox Code Playgroud)
以下是具有Autowired依赖关系的类:
import com.opensymphony.xwork2.Action;
import org.project.model.User;
import org.proejct.service.UserManager;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.subethamail.wiser.Wiser;
import static org.junit.Assert.*;
public class PasswordHintActionTest extends BaseActionTestCase { …Run Code Online (Sandbox Code Playgroud) 我是Java和Hibernate的新手(是Rails和C#开发人员).无论如何,我有一个测试程序,可以正常使用Hibernate但我的实际Web应用程序(Struts 1)崩溃:
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NoSuchFieldError: INSTANCE
我在用:
Hibernate 3.6.1 with Annotations
Struts 1 with Apache Tiles
C3P0 connection pool
下面是实际的程序WORKS.这是主要项目的一部分.只是一个简单的JAVA测试.
public class TestUser {
public static void main(String[] args) {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
String queryString = "from User where UserName = 'Quake'";
Query query = session.createQuery(queryString);
User quake = (User)query.uniqueResult();
session.getTransaction().commit();
System.out.println( quake.getEmail() );
System.out.println( "Active? " + quake.isActive() );
UserRepository userRepo = new UserRepository();
System.out.println( "User …Run Code Online (Sandbox Code Playgroud) 我正在使用下一个类(为了便于理解而简化)在struts web应用程序中下载图像.它在每个浏览器中运行良好,但firefox,它切割包含空格的名称.这就是说:带有spaces.pdf的文件在firefox中下载为:file,而在chrome中,IE7 IE6作为文件下载到spaces.pdf.
public class Download extends Action {
private static final int BUFFER_SIZE = 4096;
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
String filename = "file with spaces.pdf";
File file = ... // variable containing the file;
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType(getMimeType(request, file));
response.setHeader("Content-Type", getMimeType(request, file));
response.setHeader("Content-Disposition","attachment; filename="+ filename);
InputStream is = new FileInputStream(file);
sendFile(is, response);
return null;
}
protected String getMimeType(HttpServletRequest request, File file) {
ServletContext application …Run Code Online (Sandbox Code Playgroud) 我正在使用Struts开发Java EE Web应用程序.问题出在Internet Explorer缓存上.如果用户注销,他可以访问某些页面,因为它们被缓存并且没有请求.如果我点击刷新它工作正常.此外,如果用户再次进入登录页面,则不会重定向他,因为该页面也被缓存.
我想到了两个解决方案:
<meta>在每个页面上放置标签.我应该做哪一个?