apache struts2升级后系统不能重启(apache无法启动的原因)

admin 255 0

大家好,如果您还对apache struts2升级后系统不能重启不太了解,没有关系,今天就由本站为大家分享apache struts2升级后系统不能重启的知识,包括apache无法启动的原因的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

一、怎么知道网站是否有apache struts 2

1、通过网站页面的回显错误消息来判断,页面不回显错误消息时则无效。

2、Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

3、Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

二、Struts2的系统怎么做到同一帐号不能多人登陆

思路是这样的。每个用户登陆成功的时候获取他的sessionId并且把他的用户名当做key sessionId当做value来存到Application里

(也就是容器里。Application是一个容器共用一个)

import com.opensymphony.xwork2.ActionContext;

ActionContext ac= ActionContext.getContext();

Map sessionMap= ac.getSession();

Map applicationMap= ac.getApplication();//struts2吧application这些对象做了封装所以你对这个map操作也就是对Application操作。(如果你不习惯这样做也可以用原始的方法)

application..put(你的用户名, sessionId);

并且要在session里存入你的用户名。

sessionMap.put("username",你的用户名);

---------------------------------------------

如果有账号登录了。先去applicationMap里找一下。看这个账户有没有登陆

String lu= applicationMap.get(username);

在applicationMap里存入相应信息。也就是上面的代码

如果不等于空,就获取自己的sessionId然后放入application里把之前的登陆的那个session覆盖掉。

application..put(username, mySessionId);这里的mySessionId是自己的sessionId

这样做了以后你要修改你的程序,在每次请求的时候都去你的session里找到你的用户名(在登陆的时候已经保存了)

Srtring username= sessionMap.get("username")

String sessionId= applicationMap.get(username);

在从你session里获取mySessionId和 sessionId对比。

如果一样就继续如果不一样就跳转到登陆页面。

你可以不修改程序。而去写一个Interceptor,在里面拦截每个请求。这样更方便。

PS:上面的代码里用到struts2封装的一些session。。等

如果用的不习惯可以换一下,就写成原始获取session的方法也行。

三、怎样查出是否使用Apache struts 2

1、找到struts.jar文件,然后在MATE-INF的MAINIFEST.MF中,找到Implementation-version,它后面显示的就是所用的记录。

2、Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器来建立模型与视图的数据交互。Struts

3、 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts

4、2的体系结构与Struts 1的体系结构差别巨大。

5、Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

6、struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的返回类型还有redirect,redirectAction,chain。对于这三种返回类型之间肯定是有区别的,下面我们来看看关于redirect

7、 redirectAction chain这三种struts2的返回类型之间的区别。当使用type=“redirectAction”

8、或type=“redirect”提交到一个action并且需要传递一个参数时。

四、org.apache.struts2属于哪个包

终于推出Struts2.1.x正式版,下载后按照Struts 2.0.14版进行配置,抛出异常说无法装载(org.apache.struts2.dispatcher.multipart.MultiPartRequest),异常信息提示摘不到 org.apache.commons.fileupload.RequestContext类,搜索struts2.1.6带的所有jar包,发现RequestContext类并不在struts2-core-2.1.6.jar中,在commons-fileupload-1.2.1.jar包中,之前struts2.0.14并不需要此包,只有在要用到上传组件的时候才需要。可能是struts2.1.6对文件上传功能的改进。因此要想正常使用struts2.1.6,至少需要如下6个jar包:

要注意的是,Struts 2.1.6的最小jar包配置比Struts2.0.14多了一个commons-fileupload-1.2.1.jar。

如果要使用Struts2的注释功能,在Struts2.0.14中只要引用了struts2-core-2.1.6.jar文件即可,而在 struts2.1.6中还需要引用struts2-convention-plugin-2.1.6.jar文件,而且注释类的包也变了(又增加了一些新的注释类),Struts2.0.14中的注释类在org.apache.struts2.config包中,而struts2.1.6的注释类在 org.apache.struts2.convention.annotation包中。除此之外,有些注释的属性名也变了,如Result注释在 struts2.0.14中有一个value属性,表示一个要转入的URL,而

Struts2.1.6的Result注释中使用location属性代替了value属性(不再有value属性了),但它们的使用方法相同。

因此,读者在使用Struts2.1.x时要注意,这一版本与Struts2.0.x并不完全兼容(但大部分还是兼容的)。据我的经验,Struts2.1.x版本将是比较稳定的一个Struts2版本,因此,Struts1.x就是在Struts1.1版本才开始流行起来的。

以前也测试过Struts2的其他版本,经部分测试,目前Struts 2分为三个版本阶段:Struts 2.0.9及以前版本、Struts2.0.10至Struts2.0.14、Struts 2.1.x,这三类版本都不太兼容,如果确定使用struts2来开发程序,建议直接使用struts2.1.6及以后的版本,这是一个比较稳定的Struts2版本。

五、如何查看apache是否存在struts2 漏洞

试试腾讯电脑管家,杀毒+管理2合1,还可以自动修复漏洞:第一时间发现并修复系统存在的高危漏洞,在不打扰您的情况下自动为系统打上漏洞补丁,轻轻松松将病毒木马拒之门外。自动修复漏洞电脑管家可以在发现高危漏洞(仅包括高危漏洞,不包括其它漏洞)时,第一时间自动进行修复,无需用户参与,最大程度保证用户电脑安全。尤其适合老人、小孩或计算机初级水平用户使用

六、struts2+Hibernate4 JDBC连接问题 只能重启tomcat才能解决

validationQuery="SELECT 1"验证连接是否可用,使用的SQL语句

testWhileIdle="true"指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.

testOnBorrow="false"借出连接时不要测试,否则很影响性能

timeBetweenEvictionRunsMillis="30000"每30秒运行一次空闲连接回收器

minEvictableIdleTimeMillis="1800000"池中的连接空闲30分钟后被回收,默认值就是30分钟。

numTestsPerEvictionRun="3"在每次空闲连接回收器线程(如果有)运行时检查的连接数量,默认值就是3.

如果用DHCP的话,建议把以上参数配置进去,有些数据库比如mysql就会碰到这种问题。原因是数据库那边有个连接超时时间,多少时间没有连接数据库会将连接池断开,但是DHCP这边确没有断开,当应用去获取这个连接会话的时候就会出错。

下面有详细的解释,你可以参考下。

http://blog.csdn.net/siwangying/article/details/24379285

好了,文章到此结束,希望可以帮助到大家。