本人最近二年一直在用struts2,对struts2的安全问题一直没多大关心,认为一个大家可以公认的框架,应该不会出现大的安全问题,自己考虑到的东西,别人估计已经考虑到了。为了自己用的踏实就做了一次小小的测试。可能我的这次测试没测试到要点,还喜欢大家多提意见,小弟在这里先说一声谢谢了。
测试目的:测试struts2 同一个action连续2次请求是否线程安全
测试内容: 第一:写一个线程
public class Test implements Runnable {
public void run() {
}
}
第二:写一个action
String name="cccc";
String str="";
//str 的get set方法略
public String test() throws Exception
{
Test t=new Test();
name=str+name;
if(b.getName().equals("dd")){
Thread.sleep(10000);
}else
{
Thread.sleep(10000*3);
}
t.run();
}
第三: 页面:
<s:form action="taction!test.action" method="post">
<s:textfield name="str" label="名称"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
struts配置文件略
第四: 显示页面
${name}
测试操作过程: 在同一个action请求下 先输入 “MMM” 立刻输入“dd”
测试预想错误结果:ddMMcc MMcc
测试理想结果: ddccc MMccc
测试最终结果:ddccc MMccc
得出结论:struts2 每次请求 action 是重新开启一个线程进行处理 但是我不能下结论是否线程安全。。希望大家做处更详细的解释,但是在我们B/S结构中 大家可以放心用struts2 .不必过多考虑线程安全问题
以上完全是个人观点 。。。希望大家别拍砖 这是我的第一篇博客
测试目的:测试struts2 同一个action连续2次请求是否线程安全
测试内容: 第一:写一个线程
public class Test implements Runnable {
public void run() {
}
}
第二:写一个action
String name="cccc";
String str="";
//str 的get set方法略
public String test() throws Exception
{
Test t=new Test();
name=str+name;
if(b.getName().equals("dd")){
Thread.sleep(10000);
}else
{
Thread.sleep(10000*3);
}
t.run();
}
第三: 页面:
<s:form action="taction!test.action" method="post">
<s:textfield name="str" label="名称"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
struts配置文件略
第四: 显示页面
${name}
测试操作过程: 在同一个action请求下 先输入 “MMM” 立刻输入“dd”
测试预想错误结果:ddMMcc MMcc
测试理想结果: ddccc MMccc
测试最终结果:ddccc MMccc
得出结论:struts2 每次请求 action 是重新开启一个线程进行处理 但是我不能下结论是否线程安全。。希望大家做处更详细的解释,但是在我们B/S结构中 大家可以放心用struts2 .不必过多考虑线程安全问题
以上完全是个人观点 。。。希望大家别拍砖 这是我的第一篇博客