【问题标题】:Glassfish 404 error for Spring projectSpring 项目的 Glassfish 404 错误
【发布时间】:2012-11-12 02:21:45
【问题描述】:

我有与 Eclipse Helios 集成的 Glassfish3 服务器

我已经通过右键单击服务器使用添加和删除将我的示例 Spring 项目添加到服务器。

当我运行http://localhost:8080/SpringHibernateJSFTest/insertJdbcContact.do

我收到description The requested resource () is not available.

如何解决此错误?我做错了什么?

非常感谢任何帮助。

我的controller class

 @Controller
public class JBTJdbcController {
    @Autowired
    com.service.SpringJdbcService mfssService;
    @RequestMapping(value = "/insertJdbcContact", method = RequestMethod.GET)
    public ModelAndView insertMemDtls() {
        ModelAndView mav = new ModelAndView("JdbcInsert");
        VngMem mfssbean = new VngMem();
        mav.addObject("insertUser", mfssbean);
        mav.addObject("status", "success");
        return mav;
    }
    @RequestMapping(value = "/insertJdbcContact", method = RequestMethod.POST)
    public ModelAndView insertContact(
            @ModelAttribute("insertUser") VngMem vngmem) {
        ModelAndView mav = new ModelAndView("JdbcInsert");
        try {
            mfssService.insertMfssMemDts(vngmem);
        } catch (Exception e) {
            e.printStackTrace();
        }
        mav.addObject("searchResultPost", vngmem);
        return mav;
    }
}

这里是 web.xml

<display-name>SpringHibernateJSFTest</display-name>
    <display-name>SpringMVC</display-name>
    <welcome-file-list>
        <welcome-file>welcome.do</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
</web-app>

我的applicationContext.xml

<context:annotation-config />
<context:component-scan base-package="com.controller,com.beans" />
<mvc:annotation-driven />
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@server:1521:orcl"/>
        <property name="username" value="scott"/>
        <property name="password" value="tiger"/>

    </bean>
<bean id="SpringJdbcDao"  class="com.dao.SpringJdbcDaoImpl">
  <property name="dataSource" ref="dataSource"/>
</bean>
  <bean id="SpringJdbcService"  class="com.service.SpringJdbcServiceImpl">
  <property name="springJdbcDao" ref="SpringJdbcDao"/>
</bean>
</beans>

我的 dispatcher-servlet.xml

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

我在/WebContent/WEB-INF 中有JdbcInsert.jsp

更新 1

cannot Deploy SpringHibernateJSFTest
Deployment Error for module: SpringHibernateJSFTest: Exception while loading the app :
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: 
org.springframework.beans.factory.BeanDefinitionStoreException: 
IOException parsing XML document from class path resource [applicationContext.xml];
 nested exception is java.io.FileNotFoundException: class path resource 
 [applicationContext.xml] cannot be opened because it does not exist

【问题讨论】:

  • 你的控制器类返回什么?
  • @SazzadurRahaman 我已经用控制器类更新了我的问题。
  • 是的,我看过它,它看起来不错。我认为问题在于您的视图解析器 ID,您是否尝试过我回答的问题?

标签: eclipse spring spring-mvc glassfish http-status-code-404


【解决方案1】:

你应该搬家:

    <context:component-scan base-package="com.controller,com.beans" />
    <mvc:annotation-driven />

dispatcher-servlet.xml.

在您的 dispacher-servlet.xml 中,您的 InternalResourceViewResolver bean 的 id 应该是 internalResourceViewResolver,如下所示:

 豆>

你的jsp文件应该在/WEB-INF/jsp/目录下。

感谢和愉快的编码!

【讨论】:

  • 你的意思是 id viewResolver?我尝试了 id 以及 jsp,但没有解决错误。正确如果我在这里遗漏了一些愚蠢的东西。
  • @Polppan 你还有问题吗?
  • 是的,我在 WEB-INF 下创建了 jsp 文件夹并移动了文件。现在我在构建项目时遇到了其他错误(我已经包含在我的问题中),尽管我有applicationContext.xml
  • 我已经设法解决了上述错误,但是我仍然得到 404 状态。
  • 当我构建项目时,所有文件都会自动部署到 glassfish。当我检查 glassfish 文件夹时,我注意到 jsp 文件夹没有复制到 glassfish,所以我手动将文件夹复制到 glassfish。但是,当我再次构建项目时,glassfish 中的 jsp 文件夹丢失了。所以我怀疑与此有关。
【解决方案2】:

您的ViewResolver 使用/WEB-INF/jsp/ 前缀,而JdbcInsert.jsp 位于/WEB-INF,您应将前缀更正为"/WEB-INF/"

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

更新您在根Application Context instead of the Dispatcher Servlet Context 中声明了&lt;mvc:annotation-driven /&gt;,这可能会导致一些问题,例如viewResolver 在根应用程序上下文中实际上是不可见的。

您的 mvc 配置应驻留在调度程序 servlet 上下文中。

【讨论】:

猜你喜欢
  • 2016-05-13
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多