我的目标:
我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" ...>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>myApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
...
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myApp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
我的servlet.xml(使用Spring 3.0.3. RELEASE):
<beans ...>
<mvc:annotation-driven />
<context:component-scan ... />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="15728640" /> <!-- 15 MB -->
<property name="MaxInMemorySize" value="15728640" /> <!-- 15 MB -->
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="1" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="2" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultContentType" value="application/json" />
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</constructor-arg>
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
</beans>
我的控制器:
@Controller
@RequestMapping("about")
public class AboutController {
@RequestMapping(method=GET)
public String getStats() {
return "about";
}
@RequestMapping(value="log", method=GET)
public @ResponseBody List<String> getLog() {
...
}
}
在服务器(jetty 6,servlet api 2.5)启动时,我看到:
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about/log] onto handler [AboutController@63843ca4]
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about/log.*] onto handler [AboutController@63843ca4]
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about/log/] onto handler [AboutController@63843ca4]
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about] onto handler [AboutController@63843ca4]
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about.*] onto handler [AboutController@63843ca4]
INFO org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/about/] onto handler [AboutController@63843ca4]
上述目标的设置结果:
>
产生错误:
WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/myApp/WEB-INF/views/about.jsp] in DispatcherServlet with name 'myApp'
我检查/尝试过的事情:
>
WEB-INF/view/about.jsp
确实存在InternalResourceViewResolver
的顺序设置为第一。我知道Spring文档建议不要这样做,但是当我尝试将其放在最后时,我得到一个空的{}
返回,我认为这是因为ContentNelis atingViewResolver
拾取了“about”字符串并以某种方式解释它。我对顺序没有要求,但是ContentNelis atingViewResolver
中的设置需要保持原样(除非绝对有必要更改)。>
按预期工作
产生错误:
WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/myApp/about/log.json] in DispatcherServlet with name 'myApp'
有趣的是,url
http://host:port/myApp/about/about/log
适用于此url模式
所以,我有点纠结于要解决什么问题才能实现既定目标。
您是否有使用InternalResourceViewResolver的特定需求?
要配置jackson插件,我们只需要
<mvc:annotation-driven />
尝试使用此XML
<beans ...>
<context:annotation-config />
<mvc:annotation-driven />
<context:component-scan ... />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="15728640" /> <!-- 15 MB -->
<property name="MaxInMemorySize" value="15728640" /> <!-- 15 MB -->
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
我使用SpringBoot,有两个非常相似的服务,我想在。 配置大致如下所示: 是否可以创建一个带有注释的类,并在注入点设置前缀? 例如。 然后在服务本身: 不幸的是,我还没有在留档中找到关于这样一个功能的东西...非常感谢您的帮助!
问题内容: 我的应用程序的登录页面有两种状态:,。现在,我想在同一URL上显示这两种状态,但让控制器和模板取决于用户会话(用户是否登录?)。 有没有办法做到这一点? 问题答案: 您可以有一个基本状态来控制要加载的状态,并且可以简单地让声明该基本状态的子级没有url: 现在,在基本状态()的控制器中,您可以检查用户是否已登录,并用于加载适当的状态。 编辑 如所承诺的那样,正在努力工作。
问题内容: 我想解析一个json文件,但它经过这样的事情: 但是大约有三千个这样的对象。我一直在使用Gson解析我的json对象,但是我怎么解析这种文件呢?以及如何检索名称“ CDG”或“ ORY”? 问题答案: 您可以尝试如下操作: 使用gson,您可以按以下方式检索键名: 并使用java- json 可以执行以下操作: 从网址获取json:
问题内容: 我的目录中有大约500个文本文件,文件名中都带有相同的前缀。 文件的后半部分是文件的日期。(例如,) 我想使用Java过程删除这些文件(我可以使用shell脚本,然后在crontab中将其添加为作业,但该应用程序是供外行使用的)。 我可以使用类似的方法删除一个文件 但是我可以删除具有特定前缀的文件(例如:第8个月)吗,我可以使用轻松在shell脚本中执行此操作。 但是在Java中不起作
问题内容: 我想使用JLabel(Icon)来显示来自我网站(http://xxx.xxx.xxx.xxx/java_pic/test.jpg)的图像。我有一个刷新按钮来新建一个新的JLabel和ImageIcon(以获取最新的图像)该程序成功运行…但是当我上载新图像以覆盖旧图像时(http://xxx.xxx。 xxx.xxx/java_pic/test.jpg ),我按了刷新按钮…什么都没发生
有太多关于大致相同主题的问题,但我找不到我想要的。如果我错过了,我很抱歉。 我正在尝试散集具有公共逻辑元素但使用不同标记定义的XML文件: 两个<代码> 我可以这样做: 所需要的只是在和中实现并分别返回或。 然而,在中有一个属性并以某种方式告诉JAXB将这两个字段映射到它似乎更简单。 我是不是想多了?你将如何实现它? (当然,我无法控制输入XML。如果可能的话,我还想避免使用MOXy的解决方案,因