【问题标题】:HTTP Status 404 - tomcat 7HTTP 状态 404 - tomcat 7
【发布时间】:2015-03-13 12:14:45
【问题描述】:

我正在构建一个 spring + hibernate 应用程序。运行项目时出现 404 错误。编译器没有显示任何错误信息,它表明应用服务器(tomcat 7)加载了 servlet,但没有显示控制器类中指示的根页面。

请帮忙......

配置..... `

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <context:property-placeholder location="classpath:resources/database.properties" />
    <context:component-scan base-package="langS.com" />

    <tx:annotation-driven transaction-manager="hibernateTransactionManager" />

    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${database.driver}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.user}" />
        <property name="password" value="${database.password}" />
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan">
            <list>
                <value>com.langS.model.Employee</value>
                <value>com.langS.EmployeeBean</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
            </props>
        </property>
    </bean>

    <bean id="hibernateTransactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>`

控制器

@Controller
public class NewController {

    @Autowired
    private EmployeeService employeeService;

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public String welcomeHome(){
        return "index";
    }

    @RequestMapping(value = "/addEmployee", method = RequestMethod.GET)
    public String addEmployeeRecord(){
        return "addEmployee";
    }

    @RequestMapping(value = "/employeeList", method = RequestMethod.GET)
    public String listEmployeesPage(){
        return "employeesList";
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">

    <servlet>
        <servlet-name>sdnext</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>sdnext</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

【问题讨论】:

  • 你能访问你的服务器吗:localhost:8080?
  • 是的,我可以。我尝试通过 3 种方式访问​​它,部署项目,在 eclipse 中运行它,以及我的 chrome 浏览器。
  • 请再次验证您的网址,注意:您的网址区分大小写。

标签: java spring hibernate jakarta-ee


【解决方案1】:

404 表示,您的 tomcat 服务器正在获取请求,但现在不知道如何处理给定的请求路径。

换句话说,您的 URL 中有错误,或者您的配置不符合您的要求。

我们需要您的配置和所需的 URL 来帮助您。

【讨论】:

    【解决方案2】:

    问题是您只将调度程序 servlet 映射到 *.html,但您映射控制器时没有使用 .html 后缀。

    要使其正常工作,请以不同的方式映射您的控制器,即:

    @RequestMapping(value = "/index.html", method = RequestMethod.GET)
    public String welcomeHome(){
        return "index";
    }
    

    或者(以及我会做什么): 将调度程序 servlet 映射到 web.xml 中的所有请求:

    <servlet-mapping>
        <servlet-name>sdnext</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    然后,如果您想使用如下所示的 url 调用您的应用程序:

    http://somehost:someport/YourApplication/
    

    然后你需要像这样映射一些控制器方法:

    @RequestMapping(value = {"/", "/index"}, method = RequestMethod.GET)
    public String home() {
      // your code here
    }
    

    这样,调用http://somehost:someport/YourApplication/http://somehost:someport/YourApplication/index 将导致调用相同的控制器方法。

    【讨论】:

    • 我已经映射了,我想让它先加载索引页
    • 我在问题中看不到该映射。您还可以显示您的调度程序 servlet 映射吗? (在 web.xml 中)如果你明确地调用 somehost:someport/YourApplication/index ,你看到你的索引页了吗?
    • 当我在浏览器的地址栏中显式调用它时,服务器启动后,仍然出现404错误。请看上面一开始的问题,我贴了2段代码
    • 如果您向我们展示您的 servlet 映射 (web.xml),也许我们可以提供更多帮助
    • 好的,我因此更新了我的答案。希望对您有所帮助。
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 2017-01-04
    • 2018-11-09
    • 2016-01-05
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多