zoukankan      html  css  js  c++  java
  • 练习Struts2遇到的问题

    今天在练习Struts2时,使用分模块来加载xml文件时遇到了一个问题,调试了一整天,问题是这样的:

    在struts.xml文件中配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    <include file="/struts/struts-common.xml"></include>
    <include file="/struts/struts-item.xml"></include>
    </struts>

    下图是两个文件的目录结构

    在struts-item.xml中配置内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    <package name="item" extends="common" namespace="/item">
    <action name="*" class="cn.itcast.action.ItemAction" method="{1}">
    <result name="success" type="dispatcher">/jsp/{1}.jsp</result>
    </action>
    </package>
    </struts>

    在struts-common.xml配置内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    <!-- 配置常量 -->
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true"></constant>
    <constant name="struts.configuration.xml.reload" value="true"></constant>
    <constant name="struts.i18n.reload" value="true"></constant>
    <!-- 主题 -->
    <constant name="struts.ui.theme" value="simple"></constant>
    <!-- 扩展名 -->
    <constant name="struts.action.extension" value="action"></constant>
    <package name="common" extends="struts-default">
    <!-- 公用的action、result等配置 -->
    </package>
    </struts>

    当在浏览器中输入地址“http://localhost:8080/temp/item/queryitem”进行访问时总是报出

    HTTP Status 404 - /temp/item/queryitem

    上网查阅资料都说是路径有include标签里的file路径有问题,于是乎我不断变换路径如下:

    <include file="/config/struts/struts-common.xml"></include>
    <include file="/config/struts/struts-item.xml"></include>

    <include file="config/struts/struts-common.xml"></include>
    <include file="config/struts/struts-item.xml"></include>

    进而报出:

    HTTP Status 404 - There is no Action mapped for action name queryitem

    令我很是神伤啊,最后我发现其实我原来的file路径并没有错,错误是在于上面红色部分冲突,原因是拦截器只能拦截.action的请求而我的访问路径没有加.action后缀导致了此问题。改正之后问题解决。

    注:图中config目录是源文件夹;源文件夹的作用是使得编译器在编译时将其下的java文件编译成class文件,资源文件原样(目录不变)拷贝到类路径(classpath),在我们用eclipse创建javaweb项目的时候注意指定class文件的输出路径,默认为buildclasses,但是我们一般都将其改变为WebRootWEB-INFclasses目录。

    <include file="">不能加载不存在的xml文件,否则浏览器端无法访问,别的对象。

  • 相关阅读:
    专业工具,网络随行
    大话设计模式C++实现-文章7章-代理模式
    socket抓取网页
    Android系统Surface机制的SurfaceFlinger服务对帧缓冲区(Frame Buffer)的管理分析
    Android系统Surface机制的SurfaceFlinger服务的启动过程分析
    Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
    Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
    Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
    Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析
    Android应用程序与SurfaceFlinger服务的连接过程分析
  • 原文地址:https://www.cnblogs.com/itzfz/p/6224507.html
Copyright © 2011-2022 走看看