我的JSP页面需要根据它们所处的环境(开发,生产,沙箱等)显示不同的信息.我希望每个环境都有一个属性文件,其中包含它们可能需要的所有参数.如何在JSP页面中引用此文件的属性?
我的想法是:
更新 - 我应该提到我使用的是Spring 3.0和Spring webmvc.所以,如果有一些最好的实践方法,使用Spring做到这一点,这是理想的!
我知道以下两者之间的性能差异
Include指令(<%@ include file="test.jsp" %>):这包括编译阶段文件的内容 - 即页面转换为servlet时的内容.
包含action(<jsp:include page="test.jsp" flush="true" />):这包括运行时文件的内容 - 即用户请求页面时的内容.
但是JSTL标签<c:import url="child.jsp" />
是在编译阶段或运行时包含的内容呢?
谢谢!
当我在Eclipse中创建实现Serializable接口的Java类时,我收到警告
可序列化类ABCD不声明long类型的静态最终serialVersionUID字段
所以当我点击警告时,我会在Eclipse中获得一个选项
添加生成的串行版本ID
一旦我选择了该选项,Eclipse就会自动serialVersionUID为我创建一个变量.
现在我想知道这个数字是以什么为基础生成的.它只是一个随机数?我可以提供自己的随机数吗?
我在文档中找不到对此的明确答案,虽然似乎有一个合乎逻辑的答案,但人们无法确定.场景是这样的 - 你有一个基于xml的事务定义,如:
<tx:advice id="txAdvice" transaction-manager="jpaTransactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
Run Code Online (Sandbox Code Playgroud)
建议所有服务方法.但是你有@Transactional一个具体的类/方法,你想要覆盖propagation属性.
很明显,@Transactional在类级别覆盖同一级别,但它是否覆盖<tx:advice>(实际上<aop:pointcut>)?
我希望不会在同一个类上创建两个拦截器(并且无论哪个首先都会启动事务)
An Id作为Url参数传入.我试着确保它id是一个数字.如果没有重定向到主页面
if(facilityId != null){
try{
Long.parseLong(facilityId);
}catch(NumberFormatException e){
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("DisplayList.jsf");
} catch (IOException ex) {}
}
facility = documentSBean.findFacilityById(Long.parseLong(facilityId));
...
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我传入这样的id
www....?facilityId=3?sdfasfda
Run Code Online (Sandbox Code Playgroud)
我发现这3?sdfasfda不是一个数字,并且转到redirect语句,但它没有正确地重定向,它执行下一对试图转换3?sdfasfda为Long的行,因此产生NumberFormatException.那么有没有办法立即强制重定向,或者是否有其他方法来解决这个问题.希望有一个else后catch:D:D.上面的代码在我的@PostConstruct init()方法中
很抱歉这个问题必须经过多次询问,但我无法成功解决问题.我已经阅读了很多博客,网站,论坛......并且在我的案例中找不到任何解决方案.
案例: 我需要将我的盒子上的VisualVM连接到远程服务器(tomcats,weblogics)以进行性能/线程/内存监控.这些服务器安装在受防火墙保护的(物理或虚拟)计算机上.防火墙中可以使用大间隔的端口,但可以使用,但不是所有端口.
测试
-Djava.rmi.server.hostname=[hostname]
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[port]
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
我已经预先设置了主机名,因为从我的网络中,主机名和服务器的IP地址与远程服务器网络中的主机名和IP地址不同.
没有成功,VisualVM似乎总是在寻找未知的服务器.
尝试在服务器端从可访问的端口(-p选项)启动jstatd从我的盒子(此端口上的telnet工作),但是当使用jstatd端口在此主机上启动visualVM时,它似乎仍在等待无法访问的东西...... .Jps连接到此远程主机的行为相同.
尝试在网络保护较少的服务器上使用相同的工具,并且它可以工作.所以我看到了我的盒子和服务器之间的连接,它们是在不同于我指定的jstatd的端口上完成的.据我所知,第一次通信需要这个端口(握手类型),真正的通信是在其他端口上完成的,但不可预测(例如:60305,55197,...).我不确定我很清楚RMI是如何工作的.
拜托,帮助我,我疯了!
@RequestMapping(..)
@ResponseBody
public SearchResponse search(SearchRequest request) throws SearchException { .. }
Run Code Online (Sandbox Code Playgroud)
我想回到请求者:
SearchException抛出JSON序列化的异常详细信息.第一部分工作正常(杰克逊在类路径上<mvc:annotation-driven />),但我没有看到一个简单的方法将异常序列化为json.
我可以注册一个自定义处理程序,并从那里写一个JSON字符串,但我可能还需要XML序列化,这意味着我将需要处理程序中的条件.那不是有什么准备好的吗?
ResourceServlet的JavaDoc声明它可以返回资源列表.但这种使用模式的例子似乎很少.
我们有一个带有以下内容的web.xml:
<servlet>
<servlet-name>Resource</servlet-name>
<servlet-class>org.springframework.web.servlet.ResourceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>/combo</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
当我们按以下方式提出url请求: http:// localhost:8080/app/combo?resource = js/file1.js; js/file2.js
我们似乎只在响应中获取了file1.
这个用例的正确配置是什么?
GenericServlet实现ServletConfig接口,这意味着可以从init()函数中调用所有接口函数GenericServlet.鉴于此上下文,为什么Servlet容器将ServletConfig对象发送给init()方法?我还想知道ServletConfig传递给GenericServlet.init(ServletConfig)GenericServlet对象的对象是否不同.
此致,拉维