struts2同一时间同一客户端能否同时执行多个action呢?
本人认为是不行的,比如我上传一个很大的文件,在Action中执行了saveImg方法,估计要好几分钟才能传完,当此时我又执行其它action方法时,
之前的上传图片的action方法就失效了...这不是我想要的结果,我想,执行后一个action时,不影响前面的action执行,即,让上传图片的action方法转到后台去执行,后面执行的action不影响前面的,怎么办呢?
我知道应该要用多线程,怎么用呢?有做过类似的朋友,贴些关键代码上来参考下吧,我一直没弄对.以下是相关代码:public class TestAction extends ActionSupport
{
public String saveImg() throws Exception
{
//执行图片保存,这里省略,多线程应该在这里做文章,怎么做呢?
return SUCCESS;
} public String other() throws Exception
{
//这里要不要写相关多线程的处理呢?
//执行其它action方法过程
return SUCCESS;
}}应该跟jsp代码没关系的,这里不贴出来了,就是提交到上面的两个action,类似<s:form action="testSaveImg.action">这样子的.
之前CS有做过简单的多线程程序,但运用不精,请教大虾们了!
注:这样做的好处很明显,大大提高效率,但不知有没什么安全隐患,也可说说这方面的吧
本人认为是不行的,比如我上传一个很大的文件,在Action中执行了saveImg方法,估计要好几分钟才能传完,当此时我又执行其它action方法时,
之前的上传图片的action方法就失效了...这不是我想要的结果,我想,执行后一个action时,不影响前面的action执行,即,让上传图片的action方法转到后台去执行,后面执行的action不影响前面的,怎么办呢?
我知道应该要用多线程,怎么用呢?有做过类似的朋友,贴些关键代码上来参考下吧,我一直没弄对.以下是相关代码:public class TestAction extends ActionSupport
{
public String saveImg() throws Exception
{
//执行图片保存,这里省略,多线程应该在这里做文章,怎么做呢?
return SUCCESS;
} public String other() throws Exception
{
//这里要不要写相关多线程的处理呢?
//执行其它action方法过程
return SUCCESS;
}}应该跟jsp代码没关系的,这里不贴出来了,就是提交到上面的两个action,类似<s:form action="testSaveImg.action">这样子的.
之前CS有做过简单的多线程程序,但运用不精,请教大虾们了!
注:这样做的好处很明显,大大提高效率,但不知有没什么安全隐患,也可说说这方面的吧
{
//执行图片保存,这里省略,多线程应该在这里做文章,怎么做呢?
。。
//执行其他动作
Thread t = new Thread();
t.start(); return SUCCESS;
}
struts采用多个线程并发的处理来自客户端(浏览器)的请求,它可不管这个请求来自于哪里。但我们首先要确定一个前提,就是一个Request-Response的基本过程,是不可再分的,不可能在这一次请求中再讨论多线程的问题,
所以,当做大文件上传的时候,这一个请求过程持续的时间比较长,所以当前负责上传的这个请求就不能干别的了,否则一被中端,数据就停止传输了。但这并不意味着你的浏览器不能再向服务器发出请求,比如,你再开一个新的窗口去访问其它页面,肯定是可以的。
也就是说前面的Request-Response过程没完成任务时,后面在相同的客户端又来另一个Request-Response,那前面的就失效了.那是不是说像2楼一样在方法里
加入多线程也无效呢?即另一个请求发生时,多线程也失效?也不会触发后台动作执行相关的任务?或者说后台动作也将失效?(注:还没试,先留这个疑问吧,后面再补充,我想应该是可以通过多线程执行后台的任务的)
当然,再打开一个新的窗口,执行其它的action那是没问题的,只要窗口没关闭,action方法将执行完后返回给当前窗口,这点是共识.
你把断点设置在action中,当程序进入到action断点,然后关掉页面,然后再运行。断点后面的代码其实还会运行。
如果说,相同的客户端 代表一个主机,那么当然可以同时进行多个请求,
如果说相同的客户端指的是正在提交上一个请求的那个页面,那肯定是无法再次请求的,否则上次请求就要断掉了。
但由于前面的请求已断,上传文件时表现在上传输入流中断,故给人的感觉之前的action执行失效了...这样就跟多线程没什么关系了.
好了,基本上可以结了,可能理解有误,有疑议的欢迎提出,贴先不结了.