配置Struts-2.5.10

最近在学习JavaEE开发,今天学了下Struts2, 发现和书上略有不同,麻痹,新手学这个,感觉还真是有点操蛋,搞了TM一上午,终于把书上的第一个Struts2程序跑出来了,骂了隔壁,记录一下,要是以后再碰到,就有个参考了。

Filter的配置

在web.xml中,配置Filter,如果没有web.xml,在项目上单击右键,选择”JavaEE Tools”-“Generate Deployment Descriptor Stub”则会自动生成web.xml。在该文件中的配置如下:

<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>

我完全按照书上的步骤来,第一个坑就出现了。书上使用的类是

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

但是搞来搞去也搞不成,总是抛出java.lang.ClassNotFoundException,于是我把包打开一看,发现Struts2.5.10已经修改了路径,正确的路径如下:

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

为防止输入出错,建议打开struts2-core-2.5.10.jar,然后进入到org.apache.struts2.dispatcher.filter包,找到下面的类,然后右键选择“Copy Qualified Name”,这样可确保不会出错。

struts.xml

在Eclipse中生成xml文件,麻痹,不知道是不是我方法有问题,反正我生成的就是一个空白的xml文件,除了一个version声明,从structs目录下打开apps目录,里面有两个war文件,解压出来,依次打开”WEB-INF”-“src”,里面有一个struts.xml,可以从里面复制出DOCTYPE,如下:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

这样,Eclipse才会有提示。而且名字文件名字必须叫struts.xml,我在搞的时候写成了struts2.xml,结果TM又搞了好久才发现。

依赖包的问题

书上说要把依赖包加到”WEB-INF”-“lib”目录下,于是我右键选择”Import”,然后按书上导入依赖包,如下:
Struts2依赖包

但是却出现了问题,经过百度,最终发现,原来需要手动把文件Copy到lib目录下,然后再Import才有用。麻蛋,搞个东西这么麻烦,可能是我初学,所以觉得真TM坑爹。

动态Action的问题

动态Action会出现两个很操蛋的问题,一个是
动态Action-问题1
这个问题真TM操蛋,我TM大网上找了好多,全部都是说什么struts.xml文件名写错了,要么就是类名写错了什么,或者是位置一定要在src下,我检查一下,发现情况全部都符合,但还是出问题了,原来是要在struts.xml下加一句代码:

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

第二个问题是
动态Action-问题2

这个问题的解决方案是在package节点下添加一个允许方法列表

<global-allowed-methods>add, update</global-allowed-methods>

这样,动态Action就能正式跑起来了。

吐槽

麻痹,老子忍不住要说赃话,谁TM想出来的这种反人类的配置,简单直操蛋的一逼。搞了一天,身边也没什么人懂,就搞出来这样一个东西,日了狗了。

结束

好像听说现在企业用Struts2的企业已经不多了,新项目都不用这个了。但是书上按这个顺序来,我也就这么学了,不管有没有用,新技术总是从老技术的基础上发展过来的,所以继续学吧。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
<?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> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.mytest.HelloWorldAction"> <result> /result.jsp </result> </action> </package> <package name="LoginForm" extends="struts-default"> <action name="login" class="com.mytest.LoginAction" method="execute"> <result> /login.jsp </result> </action> </package> </struts> <!--1.使用 struts2.5.16 版本 2.lib 文件夹下放置:工程所需jar包 3.xml标签库为远程获取,路径:http://struts.apache.org/dtds/struts-2.5.dtd 可设置为本地【xml输入语法快捷提示】,就不用远程获取了:window-->preference-->输入Catalog-->xml下的Catalog-->Add-->location:解压缩struts-core-2.5.16.jar 后,文件struts-2.5.dtd文件路径。 4.设置开发者模式: <constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="utf-8" /> 每次HTTP请求系统都重新加载资源文件,有助于开发 5.struts配置文件改动后,是否重新加载 <constant name="struts.configuration.xml.reload" value="true" /> 6.查看源码:Build path 后的类库中,奶瓶图标找到struts-core-2.5.16.jar 右键-->properties-->java Source Attachment-->External location :源码路径 7.查看文档API:Build path 后的类库中,奶瓶图标找到struts-core-2.5.16.jar 右键-->properties-->javadoc location :输入网址 或选择源码DOC目录 8.拦截器:web.xml 配置拦截器<filter> struts2.5的filter-class 与struts2.5以前版本有所不同 <!-- 浏览器访问 http://localhost:8080/MyWeb/helloworld --> --> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>Struts 2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置核心拦截器 --> <filter> <filter-name>struts2</filter-name> <!-- Filter的实现类 struts2.5 --> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <!-- 拦截所有的url --> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值