使用Spring 3.0,我可以有一个可选的路径变量吗?
例如
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想/json/abc
或/json
称为相同的方法.
一个明显的解决方法是声明type
为请求参数:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
Run Code Online (Sandbox Code Playgroud)
然后/json?type=abc&track=aa
或/json?track=rr
将工作
<html>
<head>
</head>
<body>
<div>
<a href="http://www.google.com">
<span>title<br></span>
<span>description<br></span>
<span>some url</span>
</a>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我是CSS的新手,我有一个像上面这样的简单案例.我想使"标题"和"一些网址"可点击,但希望将描述视为不可点击.有没有办法通过在跨度上应用一些CSS来做到这一点,以便在该跨度内的任何内容,它是不可点击的.我的约束是,我不想改变div的结构,而只是应用css我们可以创建一个在锚标签内的span,而不是可点击的?
我有一个会话范围的bean,它保存每个http会话的用户数据.我想编写一个Junit测试用例来测试会话范围的bean.我想编写测试用例,以便它可以证明每个会话都会创建bean.任何指针如何编写这样的Junit测试用例?
在我的应用程序中,我必须通过执行许多network-io绑定任务来解决问题,有时一个io绑定任务并分成更小的io绑定任务.这些任务目前正在使用Java的标准线程池机制执行.我想知道我是否可以转向fork-and-join框架?但问题是,forkandjoin框架通常用于解决io绑定操作或CPU绑定吗?我假设它们主要用于CPU绑定操作,因为fork-and-join框架利用工作窃取技术来利用多核处理器,但如果我将它用于IO绑定任务,会不会有任何不利影响?
我有一个缓存,我使用simeple HashMap实现.喜欢 -
HashMap<String,String> cache = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)
大多数时候使用此缓存来从中读取值.我有另一个方法重新加载缓存,在这个方法内部我基本上创建一个新的缓存,然后分配引用.据我所知,对象引用的赋值是Java中的Atomic.
public class myClass {
private HashMap<String,String> cache = null;
public void init() {
refreshCache();
}
// this method can be called occasionally to update the cache.
public void refreshCache() {
HashMap<String,String> newcache = new HashMap<String,String>();
// code to fill up the new cache
// and then finally
cache = newcache; //assign the old cache to the new one in Atomic way
}
}
Run Code Online (Sandbox Code Playgroud)
我理解如果我不将缓存声明为volatile,其他线程将无法看到更改,但对于我的用例将缓存中的更改传播到其他线程并且它们可以继续使用旧缓存并不是时间关键延长时间.
你看到任何线程问题吗?考虑到许多线程正在从缓存中读取,并且有时只重新加载缓存.
编辑 - 我的主要困惑是我不必在这里使用AtomicReference,因为赋值操作本身是原子的?
编辑 - 我理解为了使顺序正确,我应该将缓存标记为volatile.但是如果refreshCache方法被标记为synchronized,我不必将缓存设置为volatile,因为Synchronized块将负责排序和可见性?
我使用的是tomcat 6.0版.我的要求是当tomcat启动时,我想启动一个QuartzScheduler
会定期安排一些工作的人.我试图找出最好的方法来做到这一点.以下是我能想到的选项 -
load-on-startup
"描述符的servlet web.xml
来启动调度程序并调度servlet中的作业.ContextListener
(这听起来比1更好).这可能是一种干净的方法来启动contextInitialized
方法内的调度程序并关闭contextDestroyed
方法内的调度程序.对我来说,看起来第二种方法更好.第三个可能不是一个好主意,因为它显然不是由jconsole监视的MBean.我的目的是启动调度程序并在tomcat停止时停止它.有没有更好,更清洁的方法来做到这一点?
我需要在没有构造函数参数的情况下创建一个完整的Object.像这样的东西
Class A {
private final int timeOut
public A(int timeout)
{
this.timeOut = timeout;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我希望这个Bean能够进行弹簧管理,以便我以后可以使用Spring AOP.
<bean id="myBean" class="A" singleton="false">
</bean>
Run Code Online (Sandbox Code Playgroud)
但是我的bean需要超时才能作为动态值传递 - 有没有办法在构造函数中创建一个动态值被绑定的spring托管bean?
我正在使用a WeaekHashMap
来实现Cache.我想知道我是否正在迭代这张地图的键,同时垃圾收集器正在主动从这张地图上删除键,我会收到ConcurrentModificationException
吗?我不这么认为,因为据我所知,并发修改是因为应用程序代码中的错误导致开发人员忘记了解相同的映射是由其他线程共享/使用的,在这种情况下,它不应该发生.但是想知道当WeakHashMap不同步时JVM会如何处理?
来自Twitter的鸵鸟项目似乎非常适合我的用例,我想跟踪大量基于JVM的统计信息以及一些自定义统计信息.
https://github.com/twitter/ostrich/
但是,我的代码库是纯Java + Spring 3.0,而不是Scala,所以我可以将Ostrich用于我的案例吗?
我有一个servlet,用于从许多第三方REST数据点获取数据,集成所有数据并以HTML格式报告数据.我也有一个过滤器,其流程如下 -
现在,如果我使用异步servlet AsyncContext context = request.getAsyncContext();
,它将与相同的REST数据点进行通信,但是当数据准备就绪时,它将写入响应流而不是等待所有REST数据点响应,我将如何重写我的过滤器?是否会附加到负责从REST数据点刷新数据的线程,以便一旦处理完所有数据并将其记录下来,它将记录事件记录?有没有可以学习的常见模式来理解如何使用Servlet 3.0的异步servlet处理这样的用例?我使用的是JDK 6.0,Tomcat 7.0.
java ×6
spring ×3
css ×1
fork-join ×1
java-ee-6 ×1
junit ×1
ostrich ×1
rest ×1
server-push ×1
servlet-3.0 ×1
spring-mvc ×1
spring-test ×1
tomcat ×1