struts2 案例代码实现及遇到的问题【struts2.5版本】

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的配置 
<?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>






  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值