我使用 Intellij IDE 创建了一个 Java Spring 和 AngularJS 应用程序。我在 intellij 中创建了一个 war (Web Application:Exploded( 文件。我把这个战争文件放在Tomcat webapps目录中,AngularJS代码部署得很好,我可以在浏览器中打开它。当我尝试使用 REST 调用调用我的服务器代码时,我收到 404 未找到错误,我可以看到 tomcat 目录中没有 java 文件。我复制了java文件,但仍然没有快乐。 我是部署 Web 应用程序的新手。
如果有人能帮助我如何让angularJS文件正确调用我的java,那将不胜感激。
谢谢。
弹簧模块.xml:
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.services.impl"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- Creating TransactionManager Bean, since JDBC we are creating of type
DataSourceTransactionManager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="getUserRepo" class="com.Repo.impl.UserRepoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataManipulationRepo" class="com.Repo.impl.DataManipulationRepoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1/xx"/>
<property name="username" value="root"/>
<property name="password" value="xx"/>
</bean>
</beans>
MVC-dispatcher-servlet:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.controller"/>
<mvc:resources mapping="/app/**" location="/app/build/"/>
<mvc:annotation-driven/>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
项目结构
WEB-INF
|_ jsp folder
|_ lib folder
|_ web.xml
|_ mvc-dispatcher-servlet.xml
|_ classes folder
|_ com folder (controller, model, services, resources, Repo folders with .class files within each)
|_ Spring-Module.xml
app
|_ html files
溶液
我让它工作了!! 我的 REST 调用精确到大写字母。我在调用中使用大写作为项目名称,然后在导致问题的浏览器 URL 中使用小写。使用chrome Postman应用程序也非常有帮助。
根据您的回答,您已经使用 IntelliJ 创建了项目的 .war 文件。 基于此,请按照以下步骤在 tomcat 中正确部署您的应用程序。 以下说明基于 Linux 或 mac 系统。
- 去你的阿帕奇雄猫家,我们将这个目录称为
<tomcat-home>
. 例如/var/local/apache-tomcat-8/
- 在
<tomcat-home>
里面你会发现一些文件夹,如webapps
,log
,bin
. - 转到
webapps
文件夹并将 .war 文件放在其上。 默认情况下,tomcat 仅在 .war 文件正在运行时才尝试部署该文件。如果tomcat没有运行,那么转到bin
文件夹并找到一个名为startup.sh
的文件并像这样执行它(仅适用于linux系统(,就像这样<tomcat-home>/bin/startup.sh
。 执行 startup.sh 时,您将看到为 tomcat 设置的环境变量,如 CATALINA_HOME、JRE_HOME 等,如果 tomcat 无法启动,则会显示错误消息。 - 要做的第一个评估是查看
webapp
文件夹,看看上面是否有一个新文件夹,例如,如果我有myapp.war
那么tomcat应该创建一个名为myapp
的文件夹,并且该文件夹内应该存在一个WEB-INF
或META-INF
文件夹,这是java Web应用程序的标准。 - 查看
WEB-INF
文件夹,因为其中应该是一个classes
和lib
文件夹,在classes
文件夹中仅存在根据包组织在文件夹中组织的.class文件。 在lib
文件夹中,应该存在与您的项目相关的所有.jar文件夹,如 spring、hibernate 和许多其他文件夹。 - 最后查看
log
文件夹内部,其中有一个catalina.out
文件并阅读它以查看任何错误消息。 - 在linux中,要查看tomcat是否正在运行,您可以通过此突击队
ps -ef | grep java
- 为了
stop
tomcat转到bin
文件夹并执行shutdown.sh.
为了了解如何正确生成.war文件,您可以转到这篇文章IntelliJ社区找不到Web应用程序工件来生成WAR