如何检查用户是否使用Android浏览器?

我的Util.java包含以下方法: public static boolean isAndroid(HttpServletRequest request) { boolean retVal = false; String browser = request.getHeader(“User-Agent”); if (browser != null && !browser.trim().equals(“”) && browser.contains(“Android”)) { retVal = true; } return retVal; } 我在BaseAction.java下面的代码(它还有HttpServletRequest类型的请求变量)扩展了ActionSupport并实现了ServletRequestAware,ServletResponseAware。 public boolean isAndroid(){ return Util.isAndroid(request); } 现在,我想检查JSP是否设备是android并且是否执行某些操作,所以我使用下面的代码: …. 但上面的代码似乎不起作用。 可以任何人建议为什么它不工作&如果有另一种方法来检查JSP,看看用户是否使用Android浏览器? 谢谢!

检查pst文件是否受java-libpst密码保护

我正在使用开源库java-libpst来解析outlook pst文件。在解析之前我想知道文件是否受密码保护。问题我们这个库打开密码保护文件没有密码,所以我没找到以任何方式检查文件是否受密码保护。 我可以使用任何其他java库来实现此目的,前提是它们是开源的。

Quartz Scheduler:如何通过API从Java动态读取quartz属性?

Quartz通常通过类路径上的quartz.properties进行配置。 例如: org.quartz.scheduler.instanceName = BagginsScheduler org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount=5 org.quartz.threadPool.threadPriority=1 从运行Quartz作业的同一个应用程序中, 我想读出属性。 读取调度程序名称很简单: Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); String name = scheduler.getSchedulerName(); 但是我如何阅读`threadPriority’属性? 以下不起作用: scheduler.getContext().getString(“org.quartz.threadPool.threadPriority”); 更新的解决方案 :似乎无法通过Quartz API读取属性,您必须通过常规Properties : Properties prop = new Properties(); prop.load(AnyClassUsedByJVM.class.getClassLoader().getResourceAsStream(“quartz.properties”)); String prio = prop.getProperty(“org.quartz.threadPool.threadPriority”); 这很好用。

如何使用范围标题汇编文件?

我使用范围黑客,但不创建正确的文件。 如果我发送Range bytes=0-8999文件重9000字节并正确工作。 如果我发送Range bytes=0-8999,9000-9999文件重Range bytes=0-8999,9000-9999字节并且不正确工作。 文件类型mp3。 可能有什么不对? HttpGet first = new HttpGet(“http://cs4832.vkontakte.ru/u50184979/audio/ef64581d913c.mp3”); first.addHeader(“Accept-Ranges”, “bytes”); first.addHeader(“Range”, “bytes=0-8999,9000-9999”); //first.addHeader(“Accept-Ranges”, “bytes”); HttpResponse response = httpclient.execute(first, localContext); InputStream instream = response.getEntity().getContent(); File f = new File(“outFile1.mp3”); OutputStream out = new FileOutputStream(f); byte buf[] = new byte[1024]; int len; while ((len = instream.read(buf)) > 0) { out.write(buf, 0, len); […]

FileUpload文件名编码

我已经有一段时间了,因为我正在敲打这个:多部分/混合内容。 @RequestPart(name=”view”) CoolView, @RequestPart(name=”files”) Part [] files 也使用spring(因为CommonsMultipartResolver失败也没关系): StandardServletMultipartResolver 现在的问题是,当上传具有US_ASCII字符之外的某些名称的文件时,服务器会将它们转换为奇怪的东西。 奇怪的是,我的意思是它将它们转换为ISO_8859_1,我想我已经设想了UTF-8编码可以想象到的地方。 -Dfile.encoding = UTF-8 LANG =“en_US.UTF-8”LC_ALL =“en_US.UTF-8” URIEncoding = UTF-8(在server.xml中的tomcat) CharacterEncodingFilter是第一个被拾取的filter 有趣的是,这只发生在我在azure linux机器上尝试这个时,本地一切都很好。 例如,我使用curl发送一些要上传的文件: curl -X POST -F “files=@Définition fonctionnalités.pdf” 在Controller中,我试图查看实际从Content-Disposition文件名中捕获的名称。 Définition fonctionnalités.pdf 在这一点上,我会接受任何建议。 感谢你

通用DAO和嵌套属性支持

我试图通过DAO对象执行数据库访问,我遇到了需要查询另一个实体中的字段的情况。 考虑通过外键EntityA.idEntityB在实体A中连接的两个实体(EntityA和EntityB)。 我有GenericDao daoA ,我试图得到所有与EntityB的确定字段匹配的结果: idEntityB.fieldOfB都在dao的相同find方法中。 可能吗? 如果是这样,一些方向会很好。 谢谢 编辑 我的代码示例: 实体 public class EntityA { @JoinColumn(name = “id_entity_b”, referencedColumnName = “id”) @ManyToOne(optional = false, fetch = FetchType.EAGER) private EntityB idEntityB; // getter+setter… } public class EntityB { // … private String fieldOfB; // getter+setter… } DAO访问 GenericDao daoA = // … Set filter = […]

在有限的时间内进行多个查询的最佳解决方案

对于MORPG Hack’n’Slash游戏,我目前正在使用Neo4j,其模式如下: 我有一个Neo4J连接器类,创建我的连接并实现Singleton,每个xxxMapper类使用此实例,调用Neo4jConnetor.getInstance()。query(String query),它返回queryresult的迭代器。 Atm我问自己一个问题,游戏每秒会有大量的查询(比如每秒每位玩家5次)。 所以我不知道,就perfs而言,使用哪种模式,如果我应该继续使用我的Singleton系统或使用另一个像Neo4jConnector池或其他我还不知道的东西。 这是连接器类: public class Neo4jConnector{ private String urlRest; private String url = “http://localhost:7474″; protected QueryEngine engine; protected static Neo4jConnector INSTANCE = new Neo4jConnector(); private Neo4jConnector(){ urlRest = url+”/db/data”; final RestAPI graphDb = new RestAPIFacade(urlRest); engine = new RestCypherQueryEngine(graphDb); } public static Neo4jConnector getInstance(){ if (INSTANCE == null) { INSTANCE = […]

Autobean和XSS问题

我在后端有一个Spring应用程序,在前端有一个GWT应用程序。 当用户登录时,”index.jsp”将用户信息输出为javascript变量。 我使用AutoBeanFactory将用户信息编码和解码为json。 因为用户可以注册并且用户信息存储在数据库中,所以我尝试通过转义JSP页面中的用户信息来遵循OWASP XSS预防备忘单 。 我正在使用esapi库进行编码。 服务器端代码如下所示: public static String serializeUserToJson(CustomUser user) { String json; AppUserProxy appUserProxy = appUserFactory.appuser().as(); appUserProxy.setFirstname(encoder.encodeForHTML(user.getFirstname())); appUserProxy.setLastname(encoder.encodeForHTML(user.getLastname())); AutoBean bean = appUserFactory.appuser(appUserProxy); json = AutoBeanCodex.encode(bean).getPayload(); return json; } 我尝试使用encodeForHTML和encodeForJavaScript() 。 这适用于普通字符但是只要我使用Umlaute字符(ü,ä,ö)我遇到问题。 如果我使用encodeforHTML()函数,javascript变量看起来像这样(注意firstname有一个ü): var data = {‘user’:'{“email”:”john.doe@gmail.com”,”lastname”:”Doe”,”firstname”:”Über”}’}; 使用Autobean进行解码工作正常,但字符ü未正确显示但HTML转义了一个( Über )。 当我使用encodeForJavaScript()函数时,输出如下: var data = {‘user’:'{“email”:”john.doe@gmail.com”,”lastname”:”Doe”,”firstname”:”\\xDCber”}’}; 当我尝试解码JSON字符串时,我遇到了一个奇怪的问题。 在开发模式/托管模式下,解码工作正常,并且正确显示变音符号。 但是,只要我在生产模式下运行代码,我就会得到一个未被捕获的exception: java.lang.IllegalArgumentException: Error parsing JSON: […]

Spring MVC的问题。 如何从两个或多个对象创建视图?

[春季3.0.5] [jboss 5.1] 一个有两个class级 public class User { private String name; private String surname; private Address address; … sets and gets setters and getters } public class Address { private String street; … setters and getters } 在Controller我有这个代码: @Controller public class MyController { @RequestMapping(value = “/index”) public ModelAndView showForm() { ModelAndView mav = new ModelAndView(); […]

Android到Google App Engine序列化exception

我在android代码中序列化对象图并将结果传递给GAE servlet。 在反序列化时,我有时会遇到以下exception: java.io.StreamCorruptedException:类型代码无效:71 我将问题追溯到其中一个领域。 如果我将其设置为null或标记为瞬态,则问题将消失。 但是,如果我只对这个字段进行序列化/反序列化 – 我也没有看到任何问题。 有任何想法吗?