struts2 案例代码实现及遇到的问题【struts2.5版本】
2016-12-19 15:25
405 查看
1、Struts是什么?
Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架;
2、使用Struts的目的?
使用它的目的:为了帮助我们减少在运用MVC设计模型来开发WEB应用的时间;
MVC是模型社团控制器,一种软件设计典范,用一种业务逻辑,数据,界面显示分享的方法组织代码,将业务逻辑聚焦到一个部件里面在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
3、搭建环境步骤:
(1)下载相关JAR包;http://struts.apache.org/
(2)创建WEB项目,并导入Struts相关jar包;
1.struts2-core-2.3.1.1.jar struts核心包
2.freemarker-2.3.18.jar freeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具
3.commons-logging-1.1.1.jar Jakarta的通用日志记录包
4.ognl-3.0.3.jar 支持ognl表达式
5.xwork-core-2.3.1.1.jar xwork的包 由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类(但是从Struts2.5.5开始就没有这个包,都合并到struts2-core里面了)
6.commons-fileupload-1.2.2.jar struts的上传下载
7、log4j-api-2.7.jar struts2.5版本开始必须导入该包,不然会无法开启tomcat服务器
(3)创建并完善相关配置文件;
1、web.xml的配置
注意:这里的struts版本为2.5.5,所以过滤器类所在目录为
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>,
可能与其它版本的不一样,但是你按住Ctrl并把鼠标放在上面,如果变成链接可以跳转,则说明过滤器类是正确的。
2.struts2.xml的配置
(4)创建ACTION并测试启动;
这里启动服务器,在浏览器中输入网址:localhost:8080/HelloStruts2/hellostruts2.action,页面就会跳转到result.jsp,并且显示页面中的内容。
(5)遇到的问题
Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
解:因为struts2.5以上的版本中,StrutsPrepareAndExecuteFilter类存在于包“org.apache.struts2.dispatcher.filter”中,所以过滤器类所在目录为<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
Tomcat无法正常启动,出现如下错误:
1、首先,一定要把输出的异常好好看一遍,也许你就会发现问题出在哪里了;
2、如果是因为缺少了jar包,只需要把相关的包导入问题即可解决;
3、如果没有发现是什么问题,可以尝试把项目从tomcat服务器卸载,再重新部署,问题就可以解决。
在本实例中,我就遇到了下列问题,无法正常启动tomcat服务器:
java.lang.NoClassDefFoundError: Lorg/apache/logging/log4j/Logger;
其实是因为少导入了一个包(Caused
by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger):log4j-api-2.7.jar 。
该包在你下载的struts2框架lib目录下,就可以找到,将包导入后问题即可解决。
在struts.xml中使用通配符时,编译没有问题,但浏览器访问抛出异常:Struts has detected an unhandled exception:
为了提高安全性,内部会验证是否允许访问该方法,所以要在struts.xml文件中的Action标签里面加上:
<allowed-methods>方法名1,方法名2…</allowed-methods>
Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架;
2、使用Struts的目的?
使用它的目的:为了帮助我们减少在运用MVC设计模型来开发WEB应用的时间;
MVC是模型社团控制器,一种软件设计典范,用一种业务逻辑,数据,界面显示分享的方法组织代码,将业务逻辑聚焦到一个部件里面在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
3、搭建环境步骤:
(1)下载相关JAR包;http://struts.apache.org/
(2)创建WEB项目,并导入Struts相关jar包;
1.struts2-core-2.3.1.1.jar struts核心包
2.freemarker-2.3.18.jar freeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具
3.commons-logging-1.1.1.jar Jakarta的通用日志记录包
4.ognl-3.0.3.jar 支持ognl表达式
5.xwork-core-2.3.1.1.jar xwork的包 由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类(但是从Struts2.5.5开始就没有这个包,都合并到struts2-core里面了)
6.commons-fileupload-1.2.2.jar struts的上传下载
7、log4j-api-2.7.jar struts2.5版本开始必须导入该包,不然会无法开启tomcat服务器
(3)创建并完善相关配置文件;
1、web.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>HelloStruts2</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
注意:这里的struts版本为2.5.5,所以过滤器类所在目录为
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>,
可能与其它版本的不一样,但是你按住Ctrl并把鼠标放在上面,如果变成链接可以跳转,则说明过滤器类是正确的。
2.struts2.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="hellostruts2" class="com.imooc.action.HelloStruts2Action"> <result>/result.jsp</result> </action> </package> </struts>注意:这里的action类,路径一定要写对(包括包名和类名),写好之后,按住Ctrl键,把鼠标放在上面,确定可以跳转到你编写的action类文件中,则说明路径没有问题。
(4)创建ACTION并测试启动;
package com.imooc.action; import com.opensymphony.xwork2.ActionSupport; public class HelloStruts2Action extends ActionSupport { @Override public String execute() throws Exception { System.out.println("execute HelloAction"); return SUCCESS; } }
这里启动服务器,在浏览器中输入网址:localhost:8080/HelloStruts2/hellostruts2.action,页面就会跳转到result.jsp,并且显示页面中的内容。
(5)遇到的问题
Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
解:因为struts2.5以上的版本中,StrutsPrepareAndExecuteFilter类存在于包“org.apache.struts2.dispatcher.filter”中,所以过滤器类所在目录为<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
Tomcat无法正常启动,出现如下错误:
1、首先,一定要把输出的异常好好看一遍,也许你就会发现问题出在哪里了;
2、如果是因为缺少了jar包,只需要把相关的包导入问题即可解决;
3、如果没有发现是什么问题,可以尝试把项目从tomcat服务器卸载,再重新部署,问题就可以解决。
在本实例中,我就遇到了下列问题,无法正常启动tomcat服务器:
java.lang.NoClassDefFoundError: Lorg/apache/logging/log4j/Logger;
其实是因为少导入了一个包(Caused
by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger):log4j-api-2.7.jar 。
该包在你下载的struts2框架lib目录下,就可以找到,将包导入后问题即可解决。
在struts.xml中使用通配符时,编译没有问题,但浏览器访问抛出异常:Struts has detected an unhandled exception:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].
为了提高安全性,内部会验证是否允许访问该方法,所以要在struts.xml文件中的Action标签里面加上:
<allowed-methods>方法名1,方法名2…</allowed-methods>
相关文章推荐
- Struts+DAO的向oracle数据库插入数据的实现代码及遇到的问题(已解决)
- 使用struts2.5版本遇到的问题
- 使用struts2.5版本遇到的问题
- Struts2 漏洞:Struts2.2.1版本紧急升级Struts2.3.15.1版本中遇到问题和解决方法,你中招了没?!
- 在struts2.5版本中使用DMI遇到问题
- struts2中改变struts.xml默认路径或可能遇到的问题
- tomcat下配置struts2,由于版本和教程不搭配而引起的蛋疼问题(我用的是struts-2.3.4-all.zip)
- 过滤器处理Struts2中文乱码的问题(struts2.1.3以后版本)
- 关于编译4+2版本遇到的不是代码的问题和添加launcher以及svn上传问题
- 【Struts】Struts2简介及实现用户登录代码示例
- struts2中改变struts.xml默认路径 或可能遇到的问题
- 使用struts2实现下载功能遇到的文件中文问题解决经验分享
- Struts2使用UrlRewriteFilter实现URL重写遇到的问题
- 关于struts2在struts.xml配置文件遇到的问题
- struts升级到最高版本后遇到的问题。关于actionmessage传递问题。
- struts2实现上传文件时遇到的若干问题
- https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- Struts2中实现文件上传遇到的问题
- struts升级到最高版本后遇到的问题。关于actionmessage传递问题。
- 用Entities Framework实现代码优先和依赖注入所遇到的问题总结