我正在使用eclipse中的Web应用程序。 弹簧MVC网络应用程序将被准确。 我创建了servlet xml并将其映射到web.xml中。 一切都很好,直到这里和Servlet加载HTML页面 但现在我想添加一个JPA图层。 所以我在WEB-INF中创建了applicationContext.xml,并将所有与JPA相关的spring配置放在该文件中。 但是,当我启动我的Web应用程序时,JPA相关的东西没有被加载。 我相信,applicationContext.xml本身没有被加载。 我在这里缺少任何想法或任何其他配置?
答案 0 :(得分:3)
除非您在
applicationContext.xml
或其他类似配置文件中配置springContextLoaderListener
,否则默认情况下不会加载web.xml
文件。
我假设applicationContext.xml
文件夹中存在WEB-INF
。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
如果您有多个配置文件,可以将它们指定为,
分隔值,如
<param-value>
classpath:applicationContext.xml,
classpath:securityContext.xml
</param-value>
答案 1 :(得分:1)
您之前的配置似乎有效,因为您为调度程序servlet提供了与其关联的应用程序上下文的命名格式匹配的名称。
现在,由于您要加载根Web应用程序上下文,您需要在web.xml中定义名为ContextLoaderListener的侦听器,默认情况下将从/WEB-INF/applicationContext.xml中读取上下文定义
<asp:Repeater ID="rptrCategory" runat="server"
OnItemCommand="rptrCategory_ItemCommand">
<ItemTemplate>
<asp:LinkButton CssClass='<%# (Container.ItemIndex==0)?"active clsCategory":"clsCategory" %>' ID="lnkCategory" runat="server" CommandName="Category" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"CategoryID")%>' Text='<%# DataBinder.Eval(Container.DataItem,"Category")%>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
<asp:UpdatePanel runat="server" ID="UpdatePanel" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rptrCategory" />
</Triggers>
<ContentTemplate>
<asp:Repeater ID="rptrQuestion" runat="server">
<ItemTemplate>
<a href="javascript:void(0)" onclick="javascript:addQuestion(escape('<%# Convert.ToString(DataBinder.Eval(Container.DataItem,"Question")).Replace("'","\\'") %>'));">
<asp:Label ID="litQuestion" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Question")%>'></asp:Label>
<asp:Literal ID="litAlter" runat="server" Text='<%# GetAlterText(Convert.ToInt32(Eval("QuestionID")), Eval("AlterText").ToString(), Eval("AlterInfo").ToString()) %>'></asp:Literal>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>