一起smart社区 - iqismart.comhttps://iqismart.comzh-cn一起smart社区,iqismart.com - 汇聚众多程序员、开发者、运维,一起学习一起进步,致力于时下流行技术研究、知识分享。同时,本站也为SmartAPI项目提供支持。github下载的项目pom.xml一直报错。https://iqismart.com/topic/5a21ed0897409eac3c85e199https://iqismart.com/topic/5a21ed0897409eac3c85e199<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVYqET?w=1346&amp;h=211&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVYqE2?w=1182&amp;h=249&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;具体报错信息如下:&lt;br&gt;1 problem was encountered while building the effective model for org.codehaus.mojo:aspectj-maven-plugin:1.8 [ERROR] ‘dependencies.dependency.systemPath’ for com.sun:tools:jar must specify an &lt;br&gt; absolute path but is ${toolsjarSystemPath} @ &lt;/p&gt; &lt;p&gt;还请解答一下&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>pangguomingSat, 02 Dec 2017 20:36:50 GMT怎么序列化继承自HashMap<String,Object>的bean为Json?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce8https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce8<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;h3&gt;User实体&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;public class User extends HashMap&lt;String, Object&gt; { private String name;</p> <pre class="prettyprint"><code>public String getName() { return this.name; } public void setName(String name) { this.name = name; } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;h3&gt;user对象&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;{ User user = new User(); user.setName(“123”); user.put(“address”, “北京”); user.put(“phone”, “110”); }&lt;/code&gt;&lt;/pre&gt; &lt;h3&gt;使用jackson或gson序列化后name的值没有了&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;{“address”:“北京”,“phone”:“110”}&lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>think2011Sat, 02 Dec 2017 20:31:51 GMTscript src 路径加不加/https://iqismart.com/topic/5a217c8ae1b3c3c91ec123adhttps://iqismart.com/topic/5a217c8ae1b3c3c91ec123ad<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVTrjC?w=1618&amp;h=347&quot;&gt;&lt;/span&gt;&lt;br&gt;这个文件的位置是WEB-INF下的&lt;br&gt;像这种src使用加了/的绝对路径就找不到资源。那么src不能使用绝对路径吗?&lt;br&gt;可是没加/也不是相对路径吧?求解,感谢。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>mrlongSat, 02 Dec 2017 19:22:17 GMT多线程的启动时机和执行?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce4https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce4<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZw1r?w=522&amp;h=159&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;一段业务代码如图所示,我想给线程传入2位置dbresult。比如1位置的dbresult有4条数据,2位置的dbresult有2条数据,为什么debug发现线程接收的是没有处理之前的1位置的dbresult数据,而我需要的是2位置的dbresult.跪求指导&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jyspermSat, 02 Dec 2017 18:55:17 GMTJava 集合从倒数第二个开始取值的问题!https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce5https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce5<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;项目中音乐播放器模块 有个 随机播放功能, 下一首是随机的,然而我把上一首也做成了随机了, 我看好多音乐播放器 如果是随机模式的话 按上一首直接回到刚刚听过的那首歌! 我现在的思路是, 如果是随机模式, 我把用户点击的下一首 那些歌曲存到一个集合中, 然后 当他点击上一首的时候 我判断 如果是随机 那么就从这个集合中取值即可, 但问题是 咋从倒数第二个开始取值啊!? 并且还是依次从倒数第二个开始往前取值! 用户点击下一首 点了10来次了 我得把这10来条依次从倒数第二个开始取值啊 求思路!&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jyspermSat, 02 Dec 2017 18:14:35 GMTscript src 路径加不加/https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce7https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce7<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVTrjC?w=1618&amp;h=347&quot;&gt;&lt;/span&gt;&lt;br&gt;这个文件的位置是WEB-INF下的&lt;br&gt;像这种src使用加了/的绝对路径就找不到资源。那么src不能使用绝对路径吗?&lt;br&gt;可是没加/也不是相对路径吧?求解,感谢。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>lonsoSat, 02 Dec 2017 16:16:51 GMTidea无限indexing如何解决?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce3https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce3<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;今天打开idea突然就这样了,无限indexing,一直没找到解决办法,求助各位。文件里面没有node_modules。&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZx7n?w=778&amp;h=204&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZx7D?w=1264&amp;h=338&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZx7J?w=1262&amp;h=336&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>hpgtSat, 02 Dec 2017 15:36:12 GMTspring没法找到servicehttps://iqismart.com/topic/5a21ed0c15a77e6e5e80bcebhttps://iqismart.com/topic/5a21ed0c15a77e6e5e80bceb<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;测试类action&lt;/p&gt; &lt;pre&gt;&lt;code&gt;@ParentPackage(“basePackage”) @Namespace(&quot;/&quot;) @Action(value = “testAction”) @Controller public class TestAction { private static final Logger logger = Logger.getLogger(TestAction.class);</p> <pre class="prettyprint"><code>public void test() { logger.info(&quot;进入action&quot;); ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()); if (ac == null) { logger.info(&quot;ac为空&quot;); } logger.info(&quot;ac不为空&quot;); TestServiceI userservicei = (TestServiceI) ac.getBean(&quot;testServiceImpl&quot;); if(userservicei==null) { logger.info(&quot;userservicei为空&quot;); } userservicei.test(); } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;service&lt;/p&gt; &lt;pre&gt;&lt;code&gt; @Service(“testServiceImpl”) public class TestServiceImpl implements TestServiceI { private static final Logger logger = Logger.getLogger(TestServiceImpl.class);</p> <pre class="prettyprint"><code>@Override public void test() { logger.info(&quot;进入TestServiceImpl&quot;); } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;出错提示&lt;/p&gt; &lt;pre&gt;&lt;code&gt;Struts Problem Report</p> <p>Struts has detected an unhandled exception:</p> <p>Messages:<br> No bean named ‘testServiceImpl’ is defined File: org/springframework/beans/factory/support/DefaultListableBeanFactory.java Line number: 553 Stacktraces</p> <p>org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘testServiceImpl’ is defined org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:553) org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1098) timlcy.action.TestAction.test(TestAction.java:29) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) java.lang.Thread.run(Thread.java:619)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;spirng.xml文件和web.xml文件&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;beans xmlns=“<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xmlns:context=“<a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>” xsi:schemaLocation=“ <a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a> <a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</a> <a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a> <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a> ”&gt;</p> <pre class="prettyprint"><code>&lt;!-- 引入属性文件 --&gt; &lt;context:property-placeholder location=&quot;classpath:config.properties&quot; &#x2F;&gt; &lt;!-- 自动扫描dao和service包(自动注入) --&gt; &lt;context:component-scan base-package=&quot;timlcy.dao,timlcy.service,timlcy.action&quot; &#x2F;&gt; </code></pre><p>&lt;/beans&gt;&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;web-app version=“3.0” xmlns=“<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xsi:schemaLocation=“<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <a href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd</a>”&gt; &lt;display-name&gt;&lt;/display-name&gt; &lt;!-- spring配置文件位置 --&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;classpath:spring.xml,classpath:spring-hibernate.xml&lt;/param-value&gt; &lt;/context-param&gt;</p> <pre class="prettyprint"><code> &lt;!-- Struts2配置 --&gt; &lt;filter&gt; &lt;filter-name&gt;struts2&lt;&#x2F;filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;&#x2F;filter-class&gt; &lt;&#x2F;filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;&#x2F;filter-name&gt; &lt;url-pattern&gt;*.action&lt;&#x2F;url-pattern&gt; &lt;&#x2F;filter-mapping&gt; </code></pre><p>&lt;!-- spring监听器 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt;</p> <p>&lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;/web-app&gt; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;已经中junit中测试能找到service,但在web环境中不能找到bean&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class TestSpring { @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { “classpath:spring.xml”,“classpath:spring-hibernate.xml” }); TestServiceI userservicei = (TestServiceI) ac.getBean(“testServiceImpl”); userservicei.test(); } } &lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>andyhuSat, 02 Dec 2017 15:27:14 GMT【299天】每日项目总结系列037(2017.12.01)https://iqismart.com/topic/5a217c88e1b3c3c91ec123abhttps://iqismart.com/topic/5a217c88e1b3c3c91ec123ab<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;h2&gt;叨叨两句&lt;/h2&gt; &lt;blockquote&gt;&lt;ol&gt;&lt;li&gt;~&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt; &lt;h2&gt;邮件协议&lt;/h2&gt; &lt;h3&gt;SMTP协议-发邮件协议&lt;/h3&gt; &lt;p&gt;全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP服务器之间、以及两台 SMTP服务器之间的通讯规则&lt;/p&gt; &lt;h3&gt;POP3协议-收邮件协议&lt;/h3&gt; &lt;p&gt;全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。&lt;/p&gt; &lt;h2&gt;内存结构&lt;/h2&gt; &lt;h3&gt;栈&lt;/h3&gt; &lt;p&gt;每个线程私有,不能实现线程间的共享&lt;br&gt;局部变量放置于栈中。&lt;br&gt;栈是由系统自动分配,速度快!栈是一个连续的内存空间!&lt;/p&gt; &lt;h3&gt;堆&lt;/h3&gt; &lt;p&gt;放置new出来的对象&lt;br&gt;堆是一个不连续的内存空间,分配灵活,速度慢&lt;/p&gt; &lt;h3&gt;方法区(也是堆)&lt;/h3&gt; &lt;p&gt;被所有线程共享&lt;br&gt;用来存放程序中永远是不变或唯一的内容。(类代码信息、静态变量、字符串常量)&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>HanggiSat, 02 Dec 2017 14:33:32 GMT为什么有些java项目访问地址是以.dll结尾的?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce6https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce6<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;有的java项目是以*/admin/crawler-config.dll?形式访问的,但是对应目录里都是jsp文件,请问是如何实现的,如何找到源文件?&lt;br&gt;运行环境是tomcat 7.0&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>klausgaoSat, 02 Dec 2017 14:13:14 GMT在eclipse中创建servlet程序的小问题?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bcechttps://iqismart.com/topic/5a21ed0c15a77e6e5e80bcec<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRn70?w=527&amp;h=532&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRn73?w=1034&amp;h=435&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>captainblue2013Sat, 02 Dec 2017 13:50:40 GMTspring data jpa 联合主键 使用save(list) 无法新增https://iqismart.com/topic/5a21ed0897409eac3c85e19bhttps://iqismart.com/topic/5a21ed0897409eac3c85e19b<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;使用spring data jpa JpaRepository的save(list) 方法,控制台sql输出insert语句和update语句,抛出&lt;code&gt; org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1&lt;/code&gt; 异常, entity使用的是联合主键,一个id是自增,另外一个是非空的字段,请教这个是什么问题??? 有什么解决办法?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>artisanSat, 02 Dec 2017 12:54:24 GMT如何实现当当网购物车跳转订单页,当收货地址为空,弹出表单让用户填写的功能?https://iqismart.com/topic/5a21ed0897409eac3c85e19ahttps://iqismart.com/topic/5a21ed0897409eac3c85e19a<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZu4b?w=1229&amp;h=136&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVZu4i?w=1276&amp;h=759&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;如图,当点击结算,从数据库读取用户收货地址,若为空,弹出form让用户填写,填写完提交数据库,并返回当前页面,显示用户的地址列表,若不为空,直接显示用户所有地址列表。&lt;br&gt;这个功能用jsp+struts2+ajax应该怎么实现?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>DoubleSpoutSat, 02 Dec 2017 12:31:56 GMTosgi框架下开发的web应用,可以启动,但是无法访问https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce9https://iqismart.com/topic/5a21ed0c15a77e6e5e80bce9<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;osgi初学者,刚刚接触,还不算入门,才跑成功hello world;最近在参照博客&lt;a href=“<a href="http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html">http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html</a>”&gt;&lt;/a&gt;&lt;a href=“<a href="http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html">http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html</a>”&gt;<a href="http://www.cnblogs.com/eastso">http://www.cnblogs.com/eastso</a>…&lt;/a&gt;&lt;br&gt;做一个web的简单例子,但是无法出现效果。我新建的项目名称是osgi_servlet,运行后,截图如下:&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVSi0n?w=1366&amp;h=720&quot;&gt;&lt;/span&gt;&lt;br&gt;看到8 ACTIVE osgi_servlet_1.0.0.qualifier,表示工程是已经成功启动了的,但是使用&lt;a href=“<a href="http://localhost/demo/hello">http://localhost/demo/hello</a>”&gt;<a href="http://localhost/demo/hello">http://localhost/demo/hello</a>&lt;/a&gt;访问,是没有任何内容的,提示“This site can’t be reached”,原因实在找不到。&lt;br&gt;特别说明:&lt;br&gt;在运行时候,bundles–target platform这里,我没按照作者那样去添加&lt;/p&gt; &lt;pre&gt;&lt;code&gt;org.eclipse.equinox.http.servlet org.eclipse.equinox.http.jetty org.mortbay.jetty.server org.mortbay.jetty.util&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这四个我没有添加,因为添加时候,发现org.mortbay.jetty.server,org.mortbay.jetty.util是没有的,如果添加了org.eclipse.equinox.http.servlet,与org.eclipse.equinox.http.jetty,运行会报错org.osgi.framework.BundleException: Could not resolve module: org.eclipse.equinox.http.jetty [10]&lt;br&gt;Unresolved requirement: Import-Package: org.eclipse.jetty.http; version=&quot;[9.0.0,10.0.0)&quot;。而且我在新建工程时候,选择的是standard osgi framwork。不知道是不是需要选择equinox这个。但是选择equinox,在下面的osgi_web项目中,依然同样的问题。&lt;/p&gt; &lt;p&gt;代码如下:&lt;br&gt;Activator.java&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class Activator implements BundleActivator, ServiceListener { private BundleContext context; private ServiceReference&lt;HttpService&gt; ref;</p> <pre class="prettyprint"><code>&#x2F;* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) *&#x2F; public void start(BundleContext context) throws Exception { System.out.println(&quot;Hello World!!&quot;); this.context=context; context.addServiceListener(this, &quot;(objectClass=&quot;+HttpService.class.getName()+&quot;)&quot;); } &#x2F;* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) *&#x2F; public void stop(BundleContext context) throws Exception { System.out.println(&quot;Goodbye World!!&quot;); context.removeServiceListener(this); } @Override public void serviceChanged(ServiceEvent event) { switch(event.getType()){ case ServiceEvent.REGISTERED:registerServlet();break; case ServiceEvent.UNREGISTERING:unregisterServlet();break; } } private void registerServlet(){ if(ref==null){ ref=context.getServiceReference(HttpService.class); if(ref!=null){ try{ HttpService service=context.getService(ref); service.registerServlet(&quot;&#x2F;demo&#x2F;hello&quot;, new HelloServlet(context),null,null); System.out.println(&quot;&#x2F;demo&#x2F;hello已经被注册&quot;); }catch(Exception ex){ ex.printStackTrace(); } } } } private void unregisterServlet(){ if(ref!=null){ try{ HttpService httpservice=context.getService(ref); httpservice.unregister(&quot;&#x2F;demo&#x2F;hello&quot;); System.out.println(&quot;&#x2F;demo&#x2F;hello已经被卸载&quot;); ref=null; }catch(Exception ex){ ex.printStackTrace(); } } } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;helloServlet.java&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class HelloServlet extends HttpServlet{ private BundleContext context;</p> <pre class="prettyprint"><code>public HelloServlet(BundleContext context){ this.context=context; } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ HttpSession session=request.getSession(); response.setCharacterEncoding(&quot;UTF-8&quot;); response.setContentType(&quot;text&#x2F;html&quot;); PrintWriter out=response.getWriter(); out.println(&quot;&lt;html&gt;&quot;); out.println(&quot;&lt;head&gt;&quot;); out.println(&quot;&lt;title&gt;hello world&lt;&#x2F;title&gt;&quot;); out.println(&quot;&lt;&#x2F;head&gt;&quot;); out.println(&quot;&lt;body&gt;&quot;); out.println(&quot;hello wolrd!&quot;); out.println(&quot;&lt;&#x2F;body&gt;&quot;); } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;尝试好几遍,实在没有找到问题的原因所在。然后试着换了一种方式,参照网页&lt;a href=“<a href="https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/">https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/</a>”&gt;&lt;/a&gt;&lt;a href=“<a href="https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/">https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/</a>”&gt;<a href="https://www.ibm.com/developer">https://www.ibm.com/developer</a>…&lt;/a&gt;&lt;br&gt;,按照“将 HTTP Server 置于 Equinox 框架中开发 Web 应用”一步一步操作,但是结果一样,这几个地址无法访问&lt;/p&gt; &lt;pre&gt;&lt;code&gt;<a href="http://localhost/images/1.jpg">http://localhost/images/1.jpg</a> <a href="http://localhost/jsp/index.jsp">http://localhost/jsp/index.jsp</a> <a href="http://localhost/servlet/myfirstservlet?userName=Levin">http://localhost/servlet/myfirstservlet?userName=Levin</a>&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;工程也是成功启动了的,截图如下:&lt;br&gt;成功名是osgi_web&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVSi1p?w=1366&amp;h=720&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;最终发现是Caused by: java.lang.NullPointerException: A null service reference is not allowed.&lt;/strong&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>yorkieSat, 02 Dec 2017 09:47:50 GMTReplicated session 也会和Primary Session 一样触发SessionDestroyedEvent?https://iqismart.com/topic/5a217c8ae1b3c3c91ec123achttps://iqismart.com/topic/5a217c8ae1b3c3c91ec123ac<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;我有一个 &lt;strong&gt;weblogic 12c&lt;/strong&gt;, 一个集群, 四个节点, 默认负载均衡算法是 &lt;strong&gt;Round Robin&lt;/strong&gt;, Replication Type 是 &lt;strong&gt;MAN&lt;/strong&gt;. 我在每个节点上都部署了同一个web application, session超时时间是一小时。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;问题:&lt;/strong&gt; &lt;br&gt;登陆系统, 再关闭所有页面,等待session超时后,weblogic不仅会触发Primary Session的session destroyed 事件,也会触发replicated session的session destroyed 事件。 导致SessionListener中和Logout相关的业务逻辑代码被执行两次,导致错误。 请问有什么办法避免这种重复执行的情况?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;这是发现问题的Log&lt;/strong&gt;&lt;br&gt;第一二行是primary session, 第三行是replicated session, 末尾有session id 可以区别。&lt;/p&gt; &lt;pre&gt;&lt;code&gt;DEBUG Oct-20-17 01:53:40 [[ACTIVE] ExecuteThread: ‘9’ for queue: ‘weblogic.kernel.Default (self-tuning)’] (AMCSessionListener-27 ) - Session: wIc4WB62vlaYR_tMRMIc0WpBHchh5fbwpinxgaig4mJRJFhlPUcj!-1795465203!1400921280!1508478820022 Created at Fri Oct 20 01:53:40 EDT 2017 DEBUG Oct-20-17 02:54:05 [[ACTIVE] ExecuteThread: ‘9’ for queue: ‘weblogic.kernel.Default (self-tuning)’] (AMCSessionListener-46 ) - Session: wIc4WB62vlaYR_tMRMIc0WpBHchh5fbwpinxgaig4mJRJFhlPUcj!-1795465203!1400921280!1508478820022 Destroyed at Fri Oct 20 02:54:05 EDT 2017 DEBUG Oct-20-17 02:55:12 [[ACTIVE] ExecuteThread: ‘17’ for queue: ‘weblogic.kernel.Default (self-tuning)’] (AMCSessionListener-46 ) - Session: wIc4WB62vlaYR_tMRMIc0WpBHchh5fbwpinxgaig4mJRJFhlPUcj!173379423!1400921280!1508478820022 Destroyed at Fri Oct 20 02:55:12 EDT 2017 &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;这是weblogic.xml配置&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;weblogic-web-app xmlns=&quot;<a href="http://www.bea.com/ns/weblogic/90">http://www.bea.com/ns/weblogic/90</a>&quot; xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>&quot; xsi:schemaLocation=“<a href="http://www.bea.com/ns/weblogic/90">http://www.bea.com/ns/weblogic/90</a> <a href="http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd</a>”&gt; &lt;session-descriptor&gt; &lt;cookie-path&gt;/AppName&lt;/cookie-path&gt; &lt;persistent-store-type&gt;replicated&lt;/persistent-store-type&gt; &lt;http-proxy-caching-of-cookies&gt;true&lt;/http-proxy-caching-of-cookies&gt; &lt;cookie-secure&gt;true&lt;/cookie-secure&gt;<br> &lt;/session-descriptor&gt;<br> &lt;/weblogic-web-app&gt; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;这是session超时的配置&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;session-config&gt; &lt;session-timeout&gt;60&lt;/session-timeout&gt; &lt;/session-config&gt; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;这是SessionListener.java&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class SessionListener implements HttpSessionListener {</p> <pre class="prettyprint"><code>private static Logger logger = Logger.getLogger(SessionListener.class); @Override public void sessionCreated(HttpSessionEvent se) { if (logger.isDebugEnabled()) { logger.debug(&quot;Session: &quot; + se.getSession().getId() + &quot; Created at &quot; + (new java.util.Date())); } } @Override public void sessionDestroyed(HttpSessionEvent se) { &#x2F;** * 被重复执行的业务逻辑代码: * 。。。 * 。。。 **&#x2F; if (logger.isDebugEnabled()) { logger.debug(&quot;Session: &quot; + se.getSession().getId() + &quot; Destroyed at &quot; + (new java.util.Date())); } } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>xiuxu123Sat, 02 Dec 2017 09:47:41 GMTjsp的输出表达式 <%=refName1%>和${name}有何区别? 转译的.class有何不同呢?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bceahttps://iqismart.com/topic/5a21ed0c15a77e6e5e80bcea<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;最近在学习jsp,遇到了问题.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;% //此时相当于往session对象中存放了一个name属性,等价于 session.setAttribute(“name”,“孤傲苍狼”); pageContext.setAttribute(“name”, “孤傲苍狼”, PageContext.SESSION_SCOPE); %&gt; &lt;% //取得session对象的属性值,使用pageContext对象获取 String refName1 = (String) pageContext.getAttribute(“name”, PageContext.SESSION_SCOPE); //由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型 String refName2 = (String) session.getAttribute(“name”); %&gt; &lt;h1&gt;取出存放在session对象中的属性值:&lt;/h1&gt; &lt;p&gt;第一种做法:使用pageContext.getAttribute(“attributeName”,PageContext.SESSION_SCOPE);去取出session对象中值&lt;/p&gt; &lt;h3&gt; 姓名:${name} &lt;%–正常输出,而用&lt;%=name%&gt;输出空字符 --%&gt; &lt;/h3&gt; 姓名:&lt;%=refName1 %&gt;&lt;%–正常输出,而用${refName1},输出为空字符 --%&gt; &lt;p&gt;第二种做法:使用session.getAttribute(“attributeName”);去取出session对象中值&lt;/p&gt; &lt;h3&gt; 姓名:&lt;%=refName2 %&gt;&lt;/h3&gt; &lt;/code&gt;&lt;/pre&gt; &lt;h2&gt; &lt;code&gt;${name}&lt;/code&gt; 转译后的.java代码&lt;/h2&gt; &lt;pre&gt;&lt;code&gt;out.write((java.lang.String) org.apache.jasper.runtime .PageContextImpl.proprietaryEvaluate(&quot;${name}&quot;, java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null, false));&lt;/code&gt;&lt;/pre&gt; &lt;h2&gt; &lt;code&gt;&lt;%=refName1%&gt;&lt;/code&gt;转译后的.java代码&lt;/h2&gt; &lt;pre&gt;&lt;code&gt;out.print(refName1 ); &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;请问这两个到底什么区别呢?谢谢大神,第一次提问,排版可能不是很好。&lt;br&gt;这些代码是我在&lt;a href=“<a href="http://www.cnblogs.com/xdp-gacl/p/3779872.html">http://www.cnblogs.com/xdp-gacl/p/3779872.html</a>”&gt;这里&lt;/a&gt;弄来的,修改一些。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>hpgtSat, 02 Dec 2017 09:42:46 GMTjava多线程在单核CPU上,还是需要volatile synchronized吗?https://iqismart.com/topic/5a21ed0c15a77e6e5e80bcedhttps://iqismart.com/topic/5a21ed0c15a77e6e5e80bced<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;假设单核CPU的情况下。(既高速缓存都是一样的)&lt;/p&gt; &lt;p&gt;一 一个变量a被线程A和线程B共享,A、B线程同时做a++操作。CPU切换时间片实际还是顺序操作,会有问题吗?如何理解?&lt;br&gt;二 一个变量a被线程A和线程B共享,A写,B读,会出现B读不到最新的值吗?&lt;/p&gt; &lt;p&gt;应该如何解释清楚以及如何证明(官方文档等)?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>magicdawnSat, 02 Dec 2017 07:12:17 GMT请问SpringMVC如何把参数对象的字段转化为GET的URL方式?比如:title=你好&id=1&type=3https://iqismart.com/topic/5a21ed0897409eac3c85e19chttps://iqismart.com/topic/5a21ed0897409eac3c85e19c<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;pre&gt;&lt;code&gt;public class Tag { private int id; private int fid; private String title; private int sort; private String type; private String type_name; private String uuid; private String url; private String description; private String src; private String createTime; public int getId() { return id; } public void setId(int id) { <a href="http://this.id">this.id</a> = id; } public int getFid() { return fid; } public void setFid(int fid) { this.fid = fid; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getSort() { return sort; } public void setSort(int sort) { this.sort = sort; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getType_name() { return type_name; } public void setType_name(String type_name) { this.type_name = type_name; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getSrc() { return src; } public void setSrc(String src) { this.src = src; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } } &lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;@Controller public class TagPageController { @RequestMapping(“tag”) public String navi(ModelMap modelMap,Tag tag,HttpServletRequest req) throws IOException{</p> <pre class="prettyprint"><code> return &quot;page&quot;; } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;访问地址比如是 tag?title=你好&amp;id=1&amp;type=3&lt;br&gt;怎么在navi方法里对Tag tag参数转化为title=你好&amp;id=1&amp;type=3,&lt;br&gt;springmvc有没有提供什么快速的方法?&lt;br&gt;难道要自己手写实现?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>struCoderSat, 02 Dec 2017 06:33:19 GMT关于SpringMvc下载文件时自定义文件名的问题https://iqismart.com/topic/59df09c723917aa53706d6behttps://iqismart.com/topic/59df09c723917aa53706d6be<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;是这样的,我们的项目用的框架是SpringMvc+Spring+Mybatis,其中有一个下载文件的功能,在下载下来的时候需要对其自定义文件名,我们在本地测试这个功能毫无问题,试了几台电脑都行,然后我们把它发布到服务器上去,服务器环境是Tomcat7.0+Jdk1.8和本地开发环境一样,但是测试下载功能的时候,下载下来的文件的文件名就变成了download&lt;/p&gt; &lt;p&gt;这是本地测试的情况,文件名和显示的文件名一样&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVQog0?w=1307&amp;h=509&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;这是服务上下载的情况,显示的文件名就是download&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVQojE?w=686&amp;h=171&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;hr&gt; &lt;hr&gt; &lt;p&gt;这是控制层的代码&lt;/p&gt; &lt;pre&gt;&lt;code&gt; @RequestMapping(value=&quot;/download&quot;,method={RequestMethod.GET,RequestMethod.POST}) public ResponseEntity&lt;byte []&gt; downloadFiles(String f0901,HttpServletRequest req,HttpServletResponse resp) {</p> <pre class="prettyprint"><code> T09 t09 = lowCardService.selectLowByPrimaryKey(Integer.parseInt(f0901)); String filenameIdname = t09.getF0903(); String filename=t09.getF0902(); ResponseEntity&lt;byte []&gt; rr; resp.reset(); try { &#x2F;&#x2F;传入文件UUID形成的文件名filenameIdname,再加入本件本身的名字filename rr=Utils.downloadfile(filenameIdname,filename,req,resp); return rr; } catch (Exception e) { System.out.println(e.getMessage()); return null; } }&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt; </code></pre><p>&lt;p&gt;这是实现下载的代码&lt;br&gt;` public static ResponseEntity&lt;byte []&gt; downloadfile(String filenameIdname,String filename,HttpServletRequest req,HttpServletResponse resp) {&lt;/p&gt; &lt;pre&gt;&lt;code&gt;<br> //下载文件路径 String path = req.getServletContext().getRealPath(&quot;/&quot;)+“file/”; File file = new File(path+filenameIdname); HttpHeaders headers = new HttpHeaders();</p> <pre class="prettyprint"><code>try { &#x2F;&#x2F;下载显示的文件名,解决文件乱码问题 String downlaodFilename = URLEncoder.encode(filename); &#x2F;&#x2F;new String(filename.getBytes(&quot;UTF-8&quot;), &quot;iso-8859-1&quot;); &#x2F;&#x2F;通知浏览器以attachment(下载方式) headers.setContentDispositionFormData(&quot;attachment&quot;, downlaodFilename); &#x2F;&#x2F;二进制流数据 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); System.out.println(&quot;-11111&quot;); resp.setHeader(&quot;Content-Disposition&quot;, &quot;attachment;fileName=&quot; + downlaodFilename); return new ResponseEntity&lt;byte []&gt;(FileUtils.readFileToByteArray(file), headers,HttpStatus.CREATED); } catch (Exception e) { System.out.println(e.getMessage()); return null; } </code></pre><p>}` &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这是SpringMvc的配置文件&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;beans xmlns=&quot;<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>&quot; xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xmlns:mvc=&quot;<a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a>&quot; xmlns:context=&quot;<a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>&quot; xmlns:aop=“<a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>” xmlns:tx=&quot;<a href="http://www.springframework.org/schema/tx">http://www.springframework.org/schema/tx</a>&quot; xsi:schemaLocation=&quot;<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a> <a href="http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">http://www.springframework.org/schema/beans/spring-beans-4.3.xsd</a> <a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a> <a href="http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd</a> <a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a> <a href="http://www.springframework.org/schema/context/spring-context-4.3.xsd">http://www.springframework.org/schema/context/spring-context-4.3.xsd</a> <a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a> <a href="http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">http://www.springframework.org/schema/aop/spring-aop-4.3.xsd</a> <a href="http://www.springframework.org/schema/tx">http://www.springframework.org/schema/tx</a> <a href="http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">http://www.springframework.org/schema/tx/spring-tx-4.3.xsd</a> &quot;&gt;</p> <pre class="prettyprint"><code>&lt;!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --&gt; &lt;context:component-scan base-package=&quot;com.wh.controller&quot; &#x2F;&gt; &lt;mvc:annotation-driven&gt; &lt;&#x2F;mvc:annotation-driven&gt; &lt;mvc:default-servlet-handler &#x2F;&gt; &lt;mvc:annotation-driven&gt; &lt;!-- 处理responseBody 里面日期类型 --&gt; &lt;mvc:message-converters&gt; &lt;bean class=&quot;org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&quot;&gt; &lt;property name=&quot;objectMapper&quot;&gt; &lt;bean class=&quot;com.fasterxml.jackson.databind.ObjectMapper&quot;&gt; &lt;property name=&quot;dateFormat&quot;&gt; &lt;bean class=&quot;java.text.SimpleDateFormat&quot;&gt; &lt;constructor-arg type=&quot;java.lang.String&quot; value=&quot;yyyy-MM-dd&quot; &#x2F;&gt; &lt;&#x2F;bean&gt; &lt;&#x2F;property&gt; &lt;property name=&quot;timeZone&quot;&gt; &lt;bean class=&quot;java.util.TimeZone&quot; factory-method=&quot;getTimeZone&quot;&gt; &lt;constructor-arg value=&quot;GMT+08&quot; &#x2F;&gt; &lt;&#x2F;bean&gt; &lt;&#x2F;property&gt; &lt;&#x2F;bean&gt; &lt;&#x2F;property&gt; &lt;&#x2F;bean&gt; &lt;&#x2F;mvc:message-converters&gt; &lt;&#x2F;mvc:annotation-driven&gt; &lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt; &lt;bean id=&quot;viewResolver&quot; class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&gt; &lt;property name=&quot;prefix&quot; value=&quot;&#x2F;jsp&#x2F;&quot; &#x2F;&gt; &lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot; &#x2F;&gt; &lt;&#x2F;bean&gt; &lt;bean class=&quot;org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&quot;&gt; &lt;property name=&quot;messageConverters&quot;&gt; &lt;list&gt; &lt;!--配置下载返回类型 --&gt; &lt;bean class=&quot;org.springframework.http.converter.ByteArrayHttpMessageConverter&quot; &#x2F;&gt; &lt;bean id=&quot;jsonHttpMessageConverter&quot; class=&quot;org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&quot; &gt; &lt;property name = &quot;supportedMediaTypes&quot;&gt; &lt;list&gt; &lt;value&gt;text&#x2F;plain;charset=UTF-8&lt;&#x2F;value&gt; &lt;&#x2F;list&gt; &lt;&#x2F;property&gt; &lt;&#x2F;bean&gt; &lt;&#x2F;list&gt; &lt;&#x2F;property&gt; &lt;&#x2F;bean&gt; &lt;bean id=&quot;multipartResolver&quot; class=&quot;org.springframework.web.multipart.commons.CommonsMultipartResolver&quot;&gt; &lt;property name=&quot;defaultEncoding&quot;&gt; &lt;value&gt;UTF-8&lt;&#x2F;value&gt; &lt;&#x2F;property&gt; &lt;property name=&quot;maxUploadSize&quot;&gt; &lt;value&gt;32505856&lt;&#x2F;value&gt;&lt;!-- 上传文件大小限制为31M,31*1024*1024 --&gt; &lt;&#x2F;property&gt; &lt;property name=&quot;maxInMemorySize&quot;&gt; &lt;value&gt;4096&lt;&#x2F;value&gt; &lt;&#x2F;property&gt; &lt;&#x2F;bean&gt; </code></pre><p>&lt;/beans&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;本地测试正常,服务器上就这样,真的不知道是什么原因了,请各位大佬帮忙看看,小弟先谢谢各位了&lt;/p&gt; &lt;pre&gt;&lt;code&gt;请输入代码&lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>hadesThu, 12 Oct 2017 21:57:52 GMT循环里的求模计算到最后怎么让它也执行?https://iqismart.com/topic/59df09b123917aa53706d69dhttps://iqismart.com/topic/59df09b123917aa53706d69d<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;pre&gt;&lt;code&gt;int[] d = {2,3,4,5,6,7,8,9,55,64,7,3,4};</p> <pre class="prettyprint"><code> for(int y=1; y&lt;=d.length;y++) { if(y % 3 == 0) { System.out.println(&quot;ok&quot;); } }&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt; </code></pre><p>&lt;p&gt;这个代码每3个执行一次 ok&lt;br&gt;但是到最后,只有一个4或者两个数字的时候 求摸计算不能等于0. 怎么让它也计算一次ok?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>HanggiThu, 12 Oct 2017 21:33:54 GMT为什么有些java项目访问地址是以.dll结尾的?https://iqismart.com/topic/59df09c623917aa53706d6b7https://iqismart.com/topic/59df09c623917aa53706d6b7<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;有的java项目是以*/admin/crawler-config.dll?形式访问的,但是对应目录里都是jsp文件,请问是如何实现的,如何找到源文件?&lt;br&gt;运行环境是tomcat 7.0&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>DoubleSpoutThu, 12 Oct 2017 21:28:57 GMTjsp的输出表达式 <%=refName1%>和${name}有何区别? 转译的.class有何不同呢?https://iqismart.com/topic/59df09b223917aa53706d6abhttps://iqismart.com/topic/59df09b223917aa53706d6ab<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;最近在学习jsp,遇到了问题.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;% //此时相当于往session对象中存放了一个name属性,等价于 session.setAttribute(“name”,“孤傲苍狼”); pageContext.setAttribute(“name”, “孤傲苍狼”, PageContext.SESSION_SCOPE); %&gt; &lt;% //取得session对象的属性值,使用pageContext对象获取 String refName1 = (String) pageContext.getAttribute(“name”, PageContext.SESSION_SCOPE); //由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型 String refName2 = (String) session.getAttribute(“name”); %&gt; &lt;h1&gt;取出存放在session对象中的属性值:&lt;/h1&gt; &lt;p&gt;第一种做法:使用pageContext.getAttribute(“attributeName”,PageContext.SESSION_SCOPE);去取出session对象中值&lt;/p&gt; &lt;h3&gt; 姓名:${name} &lt;%–正常输出,而用&lt;%=name%&gt;输出空字符 --%&gt; &lt;/h3&gt; 姓名:&lt;%=refName1 %&gt;&lt;%–正常输出,而用${refName1},输出为空字符 --%&gt; &lt;p&gt;第二种做法:使用session.getAttribute(“attributeName”);去取出session对象中值&lt;/p&gt; &lt;h3&gt; 姓名:&lt;%=refName2 %&gt;&lt;/h3&gt; &lt;/code&gt;&lt;/pre&gt; &lt;h2&gt; &lt;code&gt;${name}&lt;/code&gt; 转译后的.java代码&lt;/h2&gt; &lt;pre&gt;&lt;code&gt;out.write((java.lang.String) org.apache.jasper.runtime .PageContextImpl.proprietaryEvaluate(&quot;${name}&quot;, java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null, false));&lt;/code&gt;&lt;/pre&gt; &lt;h2&gt; &lt;code&gt;&lt;%=refName1%&gt;&lt;/code&gt;转译后的.java代码&lt;/h2&gt; &lt;pre&gt;&lt;code&gt;out.print(refName1 ); &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;请问这两个到底什么区别呢?谢谢大神,第一次提问,排版可能不是很好。&lt;br&gt;这些代码是我在&lt;a href=“<a href="http://www.cnblogs.com/xdp-gacl/p/3779872.html">http://www.cnblogs.com/xdp-gacl/p/3779872.html</a>”&gt;这里&lt;/a&gt;弄来的,修改一些。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>DoubleSpoutThu, 12 Oct 2017 20:54:42 GMT在eclipse中创建servlet程序的小问题?https://iqismart.com/topic/59df09c623917aa53706d6b0https://iqismart.com/topic/59df09c623917aa53706d6b0<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRn70?w=527&amp;h=532&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRn73?w=1034&amp;h=435&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>airylandThu, 12 Oct 2017 20:31:46 GMT微信小程序 安卓手机 网络错误https://iqismart.com/topic/59df09b123917aa53706d69ehttps://iqismart.com/topic/59df09b123917aa53706d69e<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWtkC?w=768&amp;h=1280&quot;&gt;&lt;/span&gt;&lt;br&gt;苹果手机能正常请求到数据, 而安卓手机就提示网络错误&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWtkN?w=768&amp;h=1280&quot;&gt;&lt;/span&gt;&lt;br&gt;调试模式中,也没有任何网络请求失败的提示&lt;/p&gt; &lt;p&gt;测试了一下 TLS 版本&lt;br&gt;1.0 1.1 1.2 都支持, 是什么情况呢&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWtkX?w=963&amp;h=293&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>alsotangThu, 12 Oct 2017 19:55:20 GMT为什么我的第一个Servlet程序无法运行(图文并茂)https://iqismart.com/topic/59df09c723917aa53706d6bahttps://iqismart.com/topic/59df09c723917aa53706d6ba<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;pre&gt;&lt;code&gt;1.在目录D:\com\servlet下编写一个Servlet程序(如图) &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRiye?w=1348&amp;h=353&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;编译得到一个HelloWorldServlet.class文件(如图) &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRiyo?w=922&amp;h=316&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;2.在Tomcat的webapps下创建目录chapter01, 然后在chapter01目录下创建WEB-INF目录, 在WEB-INF目录下创建classes目录和web.xml文件 &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRiCs?w=937&amp;h=366&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;其中web.xml文件如图: &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRizz?w=915&amp;h=442&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;3.把第一步的com文件夹(里面含有servlet文件夹,servlet文件夹 下有HelloWorldServlet.class文件)复制到classes目录下</p> <p>4.在浏览器的地址栏中输入 <a href="http://localhost:8080/chapter01/HelloWorldServlet">http://localhost:8080/chapter01/HelloWorldServlet</a></p> <p>&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt; 5.结果失败 &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRizJ?w=866&amp;h=436&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>zhs077Thu, 12 Oct 2017 19:50:26 GMT@RequestBody参数封装https://iqismart.com/topic/59df09b123917aa53706d6a0https://iqismart.com/topic/59df09b123917aa53706d6a0<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;在看别人的代码时,对于请求参数的封装是这样的写的:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;@RequestMapping(value = “/getUserInfo”, method = { RequestMethod.POST, RequestMethod.GET }, name=“getUserInfo”) public String getUserInfo(@RequestBody User user, List&lt;String&gt; list, int[] num, String str) { }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这里使用 @RequestBody 来获取请求体中封装的 json 对象。 但是后面又跟了一个或多个参数,这里让我很迷惑。&lt;/p&gt; &lt;p&gt;除了第一个参数加了 @RequestBody 注解,其他参数并没有加注解。&lt;/p&gt; &lt;p&gt;这些参数是如何封装解析的? 代码中并没有做特殊的配置,所以也没法贴出更多的代码。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>thesadboyThu, 12 Oct 2017 19:36:43 GMT懂远程调用Rpc框架的同学来解答一下https://iqismart.com/topic/59df09b123917aa53706d6a1https://iqismart.com/topic/59df09b123917aa53706d6a1<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;看了一下rpc框架的作用,是可以实现远程调用,可以基于http协议,也可以用别的协议。&lt;br&gt;这里的远程调用,指的应该是后端服务A和后端服务B互调吧(虽然有些地方会把调用方称作客户端,但其实还是服务端和服务端互调)。&lt;br&gt;那如果前端,就比如浏览器端,想通过post或者get方式去调后端的接口,也能称之为RPC方式吗?应该不是吧,充其量就是基于http的restful接口调用吧。而且前端(浏览器端)想去调后端接口,只能通过http协议,如果那些实现了别的协议的rpc框架,根本没法处理http请求吧&lt;br&gt;不知道我的理解对不对&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>XGHeavenThu, 12 Oct 2017 19:17:19 GMT怎么移除响应头里面的set-cookie headerhttps://iqismart.com/topic/59df09ad23917aa53706d69bhttps://iqismart.com/topic/59df09ad23917aa53706d69b<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;pre&gt;&lt;code&gt;Set-Cookie:JSESSIONID=9C0EEC4F59859A2FF4FB44A34F2705B5; Path=/; HttpOnly&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;好像是自动添加的,不想要设置这个,java,请问怎么做&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>alsotangThu, 12 Oct 2017 19:11:17 GMTjava多线程在单核CPU上,还是需要volatile synchronized吗?https://iqismart.com/topic/59df09c623917aa53706d6b5https://iqismart.com/topic/59df09c623917aa53706d6b5<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;假设单核CPU的情况下。(既高速缓存都是一样的)&lt;/p&gt; &lt;p&gt;一 一个变量a被线程A和线程B共享,A、B线程同时做a++操作。CPU切换时间片实际还是顺序操作,会有问题吗?如何理解?&lt;br&gt;二 一个变量a被线程A和线程B共享,A写,B读,会出现B读不到最新的值吗?&lt;/p&gt; &lt;p&gt;应该如何解释清楚以及如何证明(官方文档等)?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jiangzhuoThu, 12 Oct 2017 18:49:47 GMTspring没法找到servicehttps://iqismart.com/topic/59df09c623917aa53706d6b9https://iqismart.com/topic/59df09c623917aa53706d6b9<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;测试类action&lt;/p&gt; &lt;pre&gt;&lt;code&gt;@ParentPackage(“basePackage”) @Namespace(&quot;/&quot;) @Action(value = “testAction”) @Controller public class TestAction { private static final Logger logger = Logger.getLogger(TestAction.class);</p> <pre class="prettyprint"><code>public void test() { logger.info(&quot;进入action&quot;); ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()); if (ac == null) { logger.info(&quot;ac为空&quot;); } logger.info(&quot;ac不为空&quot;); TestServiceI userservicei = (TestServiceI) ac.getBean(&quot;testServiceImpl&quot;); if(userservicei==null) { logger.info(&quot;userservicei为空&quot;); } userservicei.test(); } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;service&lt;/p&gt; &lt;pre&gt;&lt;code&gt; @Service(“testServiceImpl”) public class TestServiceImpl implements TestServiceI { private static final Logger logger = Logger.getLogger(TestServiceImpl.class);</p> <pre class="prettyprint"><code>@Override public void test() { logger.info(&quot;进入TestServiceImpl&quot;); } </code></pre><p>} &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;出错提示&lt;/p&gt; &lt;pre&gt;&lt;code&gt;Struts Problem Report</p> <p>Struts has detected an unhandled exception:</p> <p>Messages:<br> No bean named ‘testServiceImpl’ is defined File: org/springframework/beans/factory/support/DefaultListableBeanFactory.java Line number: 553 Stacktraces</p> <p>org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘testServiceImpl’ is defined org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:553) org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1098) timlcy.action.TestAction.test(TestAction.java:29) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) java.lang.Thread.run(Thread.java:619)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;spirng.xml文件和web.xml文件&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;beans xmlns=“<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xmlns:context=“<a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>” xsi:schemaLocation=“ <a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a> <a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</a> <a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a> <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a> ”&gt;</p> <pre class="prettyprint"><code>&lt;!-- 引入属性文件 --&gt; &lt;context:property-placeholder location=&quot;classpath:config.properties&quot; &#x2F;&gt; &lt;!-- 自动扫描dao和service包(自动注入) --&gt; &lt;context:component-scan base-package=&quot;timlcy.dao,timlcy.service,timlcy.action&quot; &#x2F;&gt; </code></pre><p>&lt;/beans&gt;&lt;/code&gt;&lt;/pre&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;web-app version=“3.0” xmlns=“<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xsi:schemaLocation=“<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <a href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd</a>”&gt; &lt;display-name&gt;&lt;/display-name&gt; &lt;!-- spring配置文件位置 --&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;classpath:spring.xml,classpath:spring-hibernate.xml&lt;/param-value&gt; &lt;/context-param&gt;</p> <pre class="prettyprint"><code> &lt;!-- Struts2配置 --&gt; &lt;filter&gt; &lt;filter-name&gt;struts2&lt;&#x2F;filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;&#x2F;filter-class&gt; &lt;&#x2F;filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;&#x2F;filter-name&gt; &lt;url-pattern&gt;*.action&lt;&#x2F;url-pattern&gt; &lt;&#x2F;filter-mapping&gt; </code></pre><p>&lt;!-- spring监听器 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt;</p> <p>&lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;/web-app&gt; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;已经中junit中测试能找到service,但在web环境中不能找到bean&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class TestSpring { @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { “classpath:spring.xml”,“classpath:spring-hibernate.xml” }); TestServiceI userservicei = (TestServiceI) ac.getBean(“testServiceImpl”); userservicei.test(); } } &lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>coordcnThu, 12 Oct 2017 18:46:53 GMT怎么序列化继承自HashMap<String,Object>的bean为Json?https://iqismart.com/topic/59df09e523917aa53706d6c1https://iqismart.com/topic/59df09e523917aa53706d6c1<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;h3&gt;User实体&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;public class User extends HashMap&lt;String, Object&gt; { private String name;</p> <pre class="prettyprint"><code>public String getName() { return this.name; } public void setName(String name) { this.name = name; } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;h3&gt;user对象&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;{ User user = new User(); user.setName(“123”); user.put(“address”, “北京”); user.put(“phone”, “110”); }&lt;/code&gt;&lt;/pre&gt; &lt;h3&gt;使用jackson或gson序列化后name的值没有了&lt;/h3&gt; &lt;pre&gt;&lt;code&gt;{“address”:“北京”,“phone”:“110”}&lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>SamuraisThu, 12 Oct 2017 18:43:15 GMT如何把红框中的内容写成一个css,只要给“营销推广”这个div加入class,就自动实现上下都加红框中div的效果?https://iqismart.com/topic/59df09b123917aa53706d6a5https://iqismart.com/topic/59df09b123917aa53706d6a5<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWscq?w=620&amp;h=149&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;每次写标题,都要加入两个红框中的div太麻烦了&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>reverlandThu, 12 Oct 2017 17:37:16 GMTJAVA Non-static method cannot be referencedhttps://iqismart.com/topic/59df09c623917aa53706d6b3https://iqismart.com/topic/59df09c623917aa53706d6b3<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;Non-static method cannot be referenced from a static context&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVQbDS?w=1091&amp;h=180&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;code&gt;operationInfos.stream().collect(Collectors.toMap(OperationThisMonthVO::getSurgeryDate, Function.identity(), surgeryCountMerge)); public static final BinaryOperator&lt;OperationCountVO&gt; surgeryCountMerge = (v1, v2) -&gt; { v1.setSurgeryCount(v1.getSurgeryCount() + v2.getSurgeryCount()); return v1; }; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;我想对operationInfos进行分组,然后算个数,但是爆了这个错。我这个方法不是静态的方法…&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>coolicerThu, 12 Oct 2017 16:24:55 GMTmaven项目pom.xml出错https://iqismart.com/topic/59df09c623917aa53706d6b1https://iqismart.com/topic/59df09c623917aa53706d6b1<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;pom.xml&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;project xmlns=“<a href="http://maven.apache.org/POM/4.0.0">http://maven.apache.org/POM/4.0.0</a>” xmlns:xsi=“<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>” xsi:schemaLocation=“<a href="http://maven.apache.org/POM/4.0.0">http://maven.apache.org/POM/4.0.0</a> <a href="http://maven.apache.org/xsd/maven-4.0.0.xsd">http://maven.apache.org/xsd/maven-4.0.0.xsd</a>”&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;sy.sshe&lt;/groupId&gt; &lt;artifactId&gt;sshe&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;war&lt;/packaging&gt; &lt;name /&gt; &lt;description /&gt; &lt;dependencies&gt;</p> <pre class="prettyprint"><code>&lt;!-- spring3 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-core&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-context&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-jdbc&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-beans&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-web&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-expression&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;&#x2F;groupId&gt; &lt;artifactId&gt;spring-orm&lt;&#x2F;artifactId&gt; &lt;version&gt;3.1.2.RELEASE&lt;&#x2F;version&gt; &lt;&#x2F;dependency&gt; &lt;&#x2F;dependencies&gt; &lt;&#x2F;project&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt; </code></pre><p>&lt;p&gt;出现Connect times out&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVQ0r0?w=4552&amp;h=1692&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>yuu2lee4Thu, 12 Oct 2017 16:12:15 GMT关于log4j2无法打印服务器启动日志的问题https://iqismart.com/topic/59df09c723917aa53706d6bfhttps://iqismart.com/topic/59df09c723917aa53706d6bf<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;问题有两个。我新建了SpringMVC+log4j2的简单项目,确保了它能够跑起来,并尝试着重现了一下问题&lt;/p&gt; &lt;hr&gt; &lt;p&gt;第一个问题时是日志无法正确打印。&lt;/p&gt; &lt;hr&gt; &lt;p&gt;参考下图…&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRDiU?w=1690&amp;h=331&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;蓝线以上都是jetty插件启动的日志,到蓝线为止启动完毕,这部分仅仅配了SpringMVC时就是这样,配了log4j2之后也没有任何变化;&lt;br&gt;蓝线以下都是Controller运行的日志,从蓝线开始用浏览器发送了一个请求,这部分跟我想象的完全一致,没有问题。&lt;/p&gt; &lt;h2&gt;&lt;strong&gt;请问一下有方法或是配置能让蓝线以上的部分正确打印吗?&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt;这是我的Maven依赖列表&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRDk8?w=302&amp;h=158&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;这是我的控制器的请求方法&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRDng?w=872&amp;h=217&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;这是我的web.xml&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;web-app xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>&quot; xmlns=&quot;<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>&quot; xsi:schemaLocation=&quot;<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <a href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd</a>&quot; version=“3.0”&gt;</p> <pre class="prettyprint"><code>&lt;display-name&gt;web-integration&lt;&#x2F;display-name&gt; &lt;servlet&gt; &lt;servlet-name&gt;spring-webmvc&lt;&#x2F;servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;&#x2F;servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;&#x2F;param-name&gt; &lt;param-value&gt;classpath:springframework&#x2F;dispatcherservlet-servlet.xml&lt;&#x2F;param-value&gt; &lt;&#x2F;init-param&gt; &lt;load-on-startup&gt;1&lt;&#x2F;load-on-startup&gt; &lt;&#x2F;servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;spring-webmvc&lt;&#x2F;servlet-name&gt; &lt;url-pattern&gt;&#x2F;&lt;&#x2F;url-pattern&gt; &lt;&#x2F;servlet-mapping&gt; &lt;filter&gt; &lt;filter-name&gt;encodingFilter&lt;&#x2F;filter-name&gt; &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;&#x2F;filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;&#x2F;param-name&gt; &lt;param-value&gt;UTF-8&lt;&#x2F;param-value&gt; &lt;&#x2F;init-param&gt; &lt;init-param&gt; &lt;param-name&gt;forceEncoding&lt;&#x2F;param-name&gt; &lt;param-value&gt;true&lt;&#x2F;param-value&gt; &lt;&#x2F;init-param&gt; &lt;&#x2F;filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;encodingFilter&lt;&#x2F;filter-name&gt; &lt;url-pattern&gt;&#x2F;*&lt;&#x2F;url-pattern&gt; &lt;&#x2F;filter-mapping&gt; &lt;listener&gt; &lt;listener-class&gt;org.apache.logging.log4j.web.Log4jServletContextListener&lt;&#x2F;listener-class&gt; &lt;&#x2F;listener&gt; &lt;filter&gt; &lt;filter-name&gt;log4jServletFilter&lt;&#x2F;filter-name&gt; &lt;filter-class&gt;org.apache.logging.log4j.web.Log4jServletFilter&lt;&#x2F;filter-class&gt; &lt;&#x2F;filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;log4jServletFilter&lt;&#x2F;filter-name&gt; &lt;url-pattern&gt;&#x2F;*&lt;&#x2F;url-pattern&gt; &lt;dispatcher&gt;REQUEST&lt;&#x2F;dispatcher&gt; &lt;dispatcher&gt;FORWARD&lt;&#x2F;dispatcher&gt; &lt;dispatcher&gt;INCLUDE&lt;&#x2F;dispatcher&gt; &lt;dispatcher&gt;ERROR&lt;&#x2F;dispatcher&gt; &lt;&#x2F;filter-mapping&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;&#x2F;listener-class&gt; &lt;&#x2F;listener&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;&#x2F;param-name&gt; &lt;param-value&gt; classpath:springframework&#x2F;application-context.xml &lt;&#x2F;param-value&gt; &lt;&#x2F;context-param&gt; </code></pre><p>&lt;/web-app&gt;&lt;/code&gt;&lt;/pre&gt; &lt;hr&gt; &lt;p&gt;第二个问题是多个LOG依赖存在的问题。&lt;/p&gt; &lt;hr&gt; &lt;p&gt;关于spring-webmvc这个依赖,&lt;br&gt;我通过eclipse的Dependency Hierachy观察了一下它。&lt;br&gt;它内部有spring-core,而spring-core内部有commons-logging&lt;br&gt;这样一来,我感觉项目里面有两个关于LOG的facede依赖了,&lt;br&gt;分别是commons-logging和log4j2-api。这个冲突又该如何解决?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>imheredThu, 12 Oct 2017 15:47:34 GMTjava processhttps://iqismart.com/topic/59df09b223917aa53706d6achttps://iqismart.com/topic/59df09b223917aa53706d6ac<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;两台服务器,其中一台正常,另外一台,总是进程卡死!实在找不到原因,求助!!!&lt;br&gt;服务器配置分别是:&lt;br&gt;异常的服务器:Linux vultr.guest 4.4.0-87-generic #110-Ubuntu SMP x86_64 GNU/Linux&lt;br&gt;java version “1.8.0_144” , tomcat8.5.23,Python 3.5.2&lt;br&gt;正常的服务器:Linux 2.6.32-042stab123.9 #1 SMP x86_64 GNU/Linux&lt;br&gt;tomcat8.5.15,Python 3.5.2&lt;/p&gt; &lt;p&gt;最关键的是:代码一模一样,java与tomcat版本几乎都一样(大版本号一致,小版本号不同),但是一个会经常进程假死,另外一个完全没有任何异常。可以从哪些方面分析呢?&lt;/p&gt; &lt;p&gt;代码片段如下:&lt;br&gt;以下代码片段,包含于一个循环语句中,根据DB中的某一个字段值来判断是否执行以下代码&lt;/p&gt; &lt;pre&gt;&lt;code&gt;//for循环里面 String[] args = {…};//args[0]是python3,args[1]是python文件名 ProcessBuilder processBuilder = new ProcessBuilder(args); processBuilder.redirectErrorStream(true); Process process = processBuilder.start(); StringBuilder result = new StringBuilder(); final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); try { String line; while ((line = reader.readLine()) != null) { result.append(line);<br> <a href="http://logger.info">logger.info</a>(line); } } catch (IOException e) { logger.warn(“failed to read output from process”, e); } finally { IOUtils.closeQuietly(reader); } process.waitFor(); process.destroy();//这里,process起的进程,并没有关闭 int exit = process.exitValue(); //后面其他逻辑 … Thread.sleep(3000)&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;process.destroy();&lt;br&gt;这里,好像没起作用!!!&lt;br&gt;用java 调用 python 命令,通过python产生的文件来判断python是否正在运行。经常性的,python进程还在,但是就是没有文件产生。kill此python进程之后,才恢复运行。&lt;br&gt;OS是ubuntu16,java版本是&lt;br&gt;java version “1.8.0_144”&lt;br&gt;Java™ SE Runtime Environment (build 1.8.0_144-b01)&lt;br&gt;Java HotSpot™ 64-Bit Server VM (build 25.144-b01, mixed mode)&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jingsamThu, 12 Oct 2017 15:44:39 GMTeclipse 下的项目错误: 找不到或无法加载主类 org.apache.catalina.startup.Bootstraphttps://iqismart.com/topic/59df09b223917aa53706d6aahttps://iqismart.com/topic/59df09b223917aa53706d6aa<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWr9T?w=1200&amp;h=606&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;不知道是哪里的错误 谢谢!&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>hwoarangzkThu, 12 Oct 2017 15:18:31 GMTjfinal 自动生成的映射文件mappingkit里,视图没有primaryKey,导致启动报错https://iqismart.com/topic/59df09ad23917aa53706d69chttps://iqismart.com/topic/59df09ad23917aa53706d69c<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;jfinal2.2 框架下,使用generator自动生成model,mappingkit文件里生成的语句是类似下面这样的,但是没办法启动,因为第二个参数是主键,视图CV_VEHICLE因为没有主键,报错java.lang.IllegalArgumentException: Primary key can not be blank&lt;/p&gt; &lt;pre&gt;&lt;code&gt;arp.addMapping(“CV_VEHICLE”, “”, CvVehicle.class);&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;现在我的解决办法是手动把所有视图的第二个参数去掉,变成 arp.addMapping(“CV_VEHICLE”, CvVehicle.class); &lt;/p&gt; &lt;p&gt;可这样每次重新生成都得去修改一遍很是麻烦,请教各位大神,除了改generator源码以外有没有什么办法解决????&lt;/p&gt; &lt;p&gt;====================&lt;/p&gt; &lt;p&gt;另外修改源码的办法,我在源码&lt;strong&gt;MappingKitGenerator&lt;/strong&gt;类中找到这一节&lt;/p&gt; &lt;pre&gt;&lt;code&gt;protected void genMappingMethod(List&lt;TableMeta&gt; tableMetas, StringBuilder ret) { ret.append(String.format(this.mappingMethodDefineTemplate)); Iterator i$ = tableMetas.iterator();</p> <pre class="prettyprint"><code> while(i$.hasNext()) { TableMeta tableMeta = (TableMeta)i$.next(); boolean isCompositPrimaryKey = tableMeta.primaryKey.contains(&quot;,&quot;); if (isCompositPrimaryKey) { ret.append(String.format(this.compositeKeyTemplate, tableMeta.primaryKey)); } &#x2F;&#x2F;就是这一句在拼addMapping语句,表名,主键,model类 String add = String.format(this.mappingMethodContentTemplate, tableMeta.name, tableMeta.primaryKey, tableMeta.modelName); ret.append(add); } ret.append(String.format(&quot;\t}%n&quot;)); }&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt; </code></pre><p>&lt;p&gt;我想问的是这玩意里该如何判断是视图还是表?&lt;br&gt;还是只能在命名的时候用前缀区分表和视图,可是这样用在不同前缀的数据库时就又要改源码了,刚接触这个jfinal,也不知道说清楚没有,我也是很纠结啊。。。。&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jiyinyiyongThu, 12 Oct 2017 14:38:51 GMTwar部署到tomcat后要做小修改应该改哪里?https://iqismart.com/topic/59df09c623917aa53706d6b2https://iqismart.com/topic/59df09c623917aa53706d6b2<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;war部署到tomcat后要做小修改应该改哪里?是不是还要把开发环境的代码做修改后重新生成war?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>xiuxu123Thu, 12 Oct 2017 13:56:27 GMTServlet中 ServletRequest接口与HttpServletRequest接口 的小疑问https://iqismart.com/topic/59df09c723917aa53706d6bdhttps://iqismart.com/topic/59df09c723917aa53706d6bd<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVRm6V?w=985&amp;h=615&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>meteormattThu, 12 Oct 2017 13:45:31 GMTArrayList遍历输出的会和添加的顺序不一致吗?https://iqismart.com/topic/59df09b223917aa53706d6a9https://iqismart.com/topic/59df09b223917aa53706d6a9<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;pre&gt;&lt;code&gt;List&lt;String&gt; aList = Arrays.asList(“1”,“2”,“3”,“4”,“5”); for (String string : aList) { System.out.println(string); }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;为什么说ArrayList是随机访问,不能保证添加的顺序一定和访问的顺序一致?这句话是否是错误的,我测试多次遍历的结果和添加的顺序都是一致的&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>jeremy16601Thu, 12 Oct 2017 12:48:20 GMT阿里云cenOS部署node,安装pm2错误,如图https://iqismart.com/topic/59df09b223917aa53706d6a7https://iqismart.com/topic/59df09b223917aa53706d6a7<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;h2&gt;问题&lt;/h2&gt; &lt;p&gt;近来学习node部署到阿里云(cenos),已经可以正常浏览了,但是就只有pm2这里还有点问题&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWsmd?w=607&amp;h=382&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;h2&gt;按文档操作&lt;/h2&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWslv?w=1117&amp;h=694&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWslx?w=1149&amp;h=652&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;h2&gt;错误提示&lt;/h2&gt; &lt;p&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWsk8?w=800&amp;h=319&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>saighostThu, 12 Oct 2017 12:31:20 GMTArrayList和LinkedList查询速度问题https://iqismart.com/topic/59df09b123917aa53706d6a4https://iqismart.com/topic/59df09b123917aa53706d6a4<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;例子:测试ArrayList和LinkedList在检索数据的时候性能对比时出现了问题,按理来说在ArrayList读取数据是会比LinkedList快的,但我设置了50W的数据,得出结果不明显。。望解答~&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class Test_ArrayList_LinkedList02 { static final int N = 500000; // 计算查询所需的值 static long readList(List list) { long start = System.currentTimeMillis(); for (int i = 0; i &lt; list.size(); i++) { //模拟查询,只循环什么都不做 } return System.currentTimeMillis() - start; }</p> <pre class="prettyprint"><code>&#x2F;&#x2F; 给集合里添加大量值 @SuppressWarnings(&quot;unchecked&quot;) static List addList(List list) { Object o = new Object(); for (int i = 0; i &lt; N; i++) { list.add(0, o); } return list; } @SuppressWarnings(&quot;rawtypes&quot;) public static void main(String[] args) { ArrayList arraylist = (ArrayList) addList(new ArrayList()); LinkedList linkedlist = (LinkedList) addList(new LinkedList()); System.out.println(&quot;ArrayList查找&quot; + arraylist.size() + &quot;条耗时:&quot;+ readList(arraylist)); System.out.println(&quot;LinkedList查找&quot; + linkedlist.size() + &quot;条耗时:&quot;+ readList(linkedlist)); } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;效果&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWjo3?w=316&amp;h=52&quot;&gt;&lt;/span&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>haozxuanThu, 12 Oct 2017 12:27:25 GMTJava: 增强for循环针对list的时候,是严格按照list的顺序依次遍历的吗?https://iqismart.com/topic/59df09b123917aa53706d6a2https://iqismart.com/topic/59df09b123917aa53706d6a2<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;在java中,增强for循环针对list的时候,是严格按照list的顺序依次遍历的吗?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>struCoderThu, 12 Oct 2017 11:50:44 GMTJQ Ajax应该选择Json还是Json字符串向后端传递比较合适?https://iqismart.com/topic/59df09d923917aa53706d6c0https://iqismart.com/topic/59df09d923917aa53706d6c0<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;比如说,现在需求是希望把前端的数据传向SpringMVC,绑定在请求方法的一个实体参数中&lt;/p&gt; &lt;pre&gt;&lt;code&gt;@Request(value=“test”, method=RequestMethod.POST) @ResponseBody public String test(TwoDate td) { return td.toString(); }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;其中,TwoDate是那个实体类,有两个被@DateTimeFormat所标记的Date类型的私有域。&lt;/p&gt; &lt;p&gt;1、我尝试了一下以下的方式&lt;/p&gt; &lt;pre&gt;&lt;code&gt;$.ajax({ type:“post”, url:&quot;/test&quot;, data:saveData, success:function(data) { alert(data); }, error:function(data) { alert(‘error’); } });&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;没有问题,前端的saveData成功绑定到了TwoDate td中。&lt;/p&gt; &lt;p&gt;2、随后,我换了以下的方式&lt;/p&gt; &lt;pre&gt;&lt;code&gt; $.ajax({ type:“post”, url:&quot;/test&quot;, dataType:“json”, contentType : ‘application/json’, data:JSON.stringify(saveData), success:function(data) { alert(data); }, error:function(data) { alert(‘error’); } });&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;并在请求方法的参数前面追加了个@RequestBody 注解,&lt;br&gt;报了HTTP-400错误,控制台提示我&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpMessageNotReadable&lt;br&gt;Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Can not deserialize value of type java.util.Date from String “2017-01-01 02:03:04”: not a valid representation (error: Failed to parse Date value ‘2017-01-01 02:03:04’: Can not parse date “2017-01-01 02:03:04Z”: while it seems to fit format ‘yyyy-MM-dd’T’HH:mm:ss.SSS’Z’’, parsing fails (leniency? null))&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;非常奇怪,而当我把实体类的&lt;strong&gt;两个域的类型从Date改成String&lt;/strong&gt;后,又正常了&lt;/p&gt; &lt;p&gt;3、我的dispatcherservlet.xml的配置关于消息转换的配置是这样的&lt;/p&gt; &lt;pre&gt;&lt;code&gt; <a href>mvc:annotation-driven</a> <a href>mvc:message-converters</a> &lt;bean class = “org.springframework.http.converter.json.MappingJackson2HttpMessageConverter”&gt; &lt;/bean&gt; &lt;bean class = “org.springframework.http.converter.StringHttpMessageConverter”&gt; &lt;/bean&gt; &lt;/mvc:message-converters&gt; &lt;/mvc:annotation-driven&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;所以我想问一下,实际开发中,向后端传递JSON字符串是否更合适?&lt;br&gt;JSON字符串有办法绑定到含有Date类型的实体中吗?&lt;br&gt;如果没有办法,那么大家的做法是否是将这些Date类型换成String类型吗?&lt;/p&gt; &lt;p&gt;不胜感激:)&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>sumoryThu, 12 Oct 2017 11:11:14 GMTspring data jpa 联合主键 使用save(list) 无法新增https://iqismart.com/topic/59df09c323917aa53706d6afhttps://iqismart.com/topic/59df09c323917aa53706d6af<div class="markdown-text"><p>&lt;div&gt; &lt;p&gt;使用spring data jpa JpaRepository的save(list) 方法,控制台sql输出insert语句和update语句,抛出&lt;code&gt; org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1&lt;/code&gt; 异常, entity使用的是联合主键,一个id是自增,另外一个是非空的字段,请教这个是什么问题??? 有什么解决办法?&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>hyj1991Thu, 12 Oct 2017 10:44:23 GMT关于String的一个疑问https://iqismart.com/topic/59df09b123917aa53706d6a3https://iqismart.com/topic/59df09b123917aa53706d6a3<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;先看一段代码:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class JavaTest {</p> <pre class="prettyprint"><code>public static void changeStr(String str){ str=&quot;welcome&quot;; } public static void main(String[] args) { String str=&quot;1234&quot;; changeStr(str); System.out.println(str); } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;String不是引用类型吗?为什么输出来的还是1234?&lt;/p&gt; &lt;p&gt;针对 @喵了个咪 的回答,贴段代码:&lt;/p&gt; &lt;pre&gt;&lt;code class=“java”&gt; public static void change(List list){ list.add(“welcome”); } public static void main(String[] args) { String str=“1234”; List&lt;String &gt;list = new ArrayList&lt;&gt;(); list.add(str); change(list); assert list.size() == 2; }&lt;/code&gt;&lt;/pre&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>struCoderThu, 12 Oct 2017 10:40:45 GMTSpringMVC下的欢迎页面无法访问到某个Controller内的请求方法。https://iqismart.com/topic/59df09c723917aa53706d6bbhttps://iqismart.com/topic/59df09c723917aa53706d6bb<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;我的控制器是TestController,请求方法是@RequestMapping(value=“welcome”) public String welcome()…&lt;/p&gt; &lt;p&gt;请求方法最后会转发到一个html页面,&lt;/p&gt; &lt;p&gt;经测试&lt;a href=“<a href="http://localhost:8080/welcome">http://localhost:8080/welcome</a>”&gt;<a href="http://localhost:8080/welcome">http://localhost:8080/welcome</a>&lt;/a&gt;是一切正常的。&lt;/p&gt; &lt;p&gt;现在希望让/welcome作为欢迎页面,&lt;/p&gt; &lt;p&gt;我在web.xml中,追加了标签&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;welcome-file-list&gt; &lt;welcome-file&gt;welcome&lt;/welcome-file&gt; &lt;/welcome-file-list&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;并在DispatcherServlet后面,追加了/welcome的&lt;servlet-mapping&gt;&lt;/p&gt; &lt;p&gt;但结果是,&lt;a href=“<a href="http://localhost:8080/welcome">http://localhost:8080/welcome</a>”&gt;<a href="http://localhost:8080/welcome">http://localhost:8080/welcome</a>&lt;/a&gt;依然能正常访问,&lt;a href=“<a href="http://localhost:8080">http://localhost:8080</a>”&gt;<a href="http://localhost:8080">http://localhost:8080</a>&lt;/a&gt;报404,后台提示No mapping found for HTTP request with URI [/] in DispatcherServlet with name ‘spring-webmvc’&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>qxl1231Thu, 12 Oct 2017 10:38:43 GMT根据菜鸟教程学习servlet,手打例子代码,但是出现404错误;求指导~https://iqismart.com/topic/59df09b223917aa53706d6a8https://iqismart.com/topic/59df09b223917aa53706d6a8<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;&lt;a href=“<a href="http://www.runoob.com/servlet/servlet-form-data.html">http://www.runoob.com/servlet/servlet-form-data.html</a>”&gt;<a href="http://www.runoob.com/servlet">http://www.runoob.com/servlet</a>…&lt;/a&gt;&lt;br&gt;我是用这个网址学习的。&lt;/p&gt; &lt;p&gt;这个是Java;&lt;/p&gt; &lt;pre&gt;&lt;code class=“java”&gt;package com.runoob.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;</p> <p>/**</p> <ul> <li> <p>Servlet implementation class HelloForm */ @WebServlet(&quot;/HelloForm&quot;) public class HelloForm extends HttpServlet { private static final long serialVersionUID = 1L;</p> <p>/**</p> <ul> <li>@see HttpServlet#HttpServlet() */ public HelloForm() { super(); // TODO Auto-generated constructor stub }</li> </ul> <p>/**</p> <ul> <li> <p>@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType(“text/html;charset=UTF-8”);</p> <p>PrintWriter out = response.getWriter(); String title = “使用 GET 方法读取表单数据”; // 处理中文 String name =new String(request.getParameter(“name”).getBytes(“ISO8859-1”),“UTF-8”); String docType = “&lt;!DOCTYPE html&gt; \n”; out.println(docType + &quot;&lt;html&gt;\n&quot; + &quot;&lt;head&gt;&lt;title&gt;&quot; + title + “&lt;/title&gt;&lt;/head&gt;\n” + &quot;&lt;body bgcolor=&quot;#f0f0f0&quot;&gt;\n&quot; + &quot;&lt;h1 align=“center”&gt;&quot; + title + “&lt;/h1&gt;\n” + &quot;&lt;ul&gt;\n&quot; + &quot; &lt;li&gt;&lt;b&gt;站点名&lt;/b&gt;:&quot; + name + “\n” + &quot; &lt;li&gt;&lt;b&gt;网址&lt;/b&gt;:&quot; + request.getParameter(“url”) + “\n” + &quot;&lt;/ul&gt;\n&quot; + &quot;&lt;/body&gt;&lt;/html&gt;&quot;); }</p> </li> </ul> <p>// 处理 POST 方法请求的方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这个是web.xml配置文件&lt;/p&gt; &lt;pre&gt;&lt;code class=“xml”&gt;&lt;?xml version=“1.0” encoding=“UTF-8”?&gt; &lt;!– Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at</p> <p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p> </li> </ul> <p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. –&gt; &lt;web-app xmlns=&quot;<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a>&quot; xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>&quot; xsi:schemaLocation=&quot;<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a> <a href="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd</a>&quot; version=&quot;3.1&quot; metadata-complete=“true”&gt;</p> <p>&lt;display-name&gt;Welcome to Tomcat&lt;/display-name&gt; &lt;description&gt; Welcome to Tomcat &lt;/description&gt;<br> &lt;servlet&gt; &lt;servlet-name&gt;HelloForm&lt;/servlet-name&gt; &lt;servlet-class&gt;com.runoob.test.HelloForm&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;HelloForm&lt;/servlet-name&gt; &lt;url-pattern&gt;/TomcatTest/HelloForm&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;/web-app&gt; &lt;/code&gt;&lt;/pre&gt; &lt;p&gt;我用chrome调试器是看到这样的页面:&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVWezT?w=1600&amp;h=868&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;请大神指导&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>dlutwuweiThu, 12 Oct 2017 10:38:14 GMTosgi框架下开发的web应用,可以启动,但是无法访问https://iqismart.com/topic/59df09c623917aa53706d6b6https://iqismart.com/topic/59df09c623917aa53706d6b6<div class="markdown-text"><p>&lt;div&gt;</p> <p>&lt;p&gt;osgi初学者,刚刚接触,还不算入门,才跑成功hello world;最近在参照博客&lt;a href=“<a href="http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html">http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html</a>”&gt;&lt;/a&gt;&lt;a href=“<a href="http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html">http://www.cnblogs.com/eastson/archive/2012/05/17/2505897.html</a>”&gt;<a href="http://www.cnblogs.com/eastso">http://www.cnblogs.com/eastso</a>…&lt;/a&gt;&lt;br&gt;做一个web的简单例子,但是无法出现效果。我新建的项目名称是osgi_servlet,运行后,截图如下:&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVSi0n?w=1366&amp;h=720&quot;&gt;&lt;/span&gt;&lt;br&gt;看到8 ACTIVE osgi_servlet_1.0.0.qualifier,表示工程是已经成功启动了的,但是使用&lt;a href=“<a href="http://localhost/demo/hello">http://localhost/demo/hello</a>”&gt;<a href="http://localhost/demo/hello">http://localhost/demo/hello</a>&lt;/a&gt;访问,是没有任何内容的,提示“This site can’t be reached”,原因实在找不到。&lt;br&gt;特别说明:&lt;br&gt;在运行时候,bundles–target platform这里,我没按照作者那样去添加&lt;/p&gt; &lt;pre&gt;&lt;code&gt;org.eclipse.equinox.http.servlet org.eclipse.equinox.http.jetty org.mortbay.jetty.server org.mortbay.jetty.util&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这四个我没有添加,因为添加时候,发现org.mortbay.jetty.server,org.mortbay.jetty.util是没有的,如果添加了org.eclipse.equinox.http.servlet,与org.eclipse.equinox.http.jetty,运行会报错org.osgi.framework.BundleException: Could not resolve module: org.eclipse.equinox.http.jetty [10]&lt;br&gt;Unresolved requirement: Import-Package: org.eclipse.jetty.http; version=&quot;[9.0.0,10.0.0)&quot;。而且我在新建工程时候,选择的是standard osgi framwork。不知道是不是需要选择equinox这个。但是选择equinox,在下面的osgi_web项目中,依然同样的问题。&lt;/p&gt; &lt;p&gt;代码如下:&lt;br&gt;Activator.java&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class Activator implements BundleActivator, ServiceListener { private BundleContext context; private ServiceReference&lt;HttpService&gt; ref;</p> <pre class="prettyprint"><code>&#x2F;* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) *&#x2F; public void start(BundleContext context) throws Exception { System.out.println(&quot;Hello World!!&quot;); this.context=context; context.addServiceListener(this, &quot;(objectClass=&quot;+HttpService.class.getName()+&quot;)&quot;); } &#x2F;* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) *&#x2F; public void stop(BundleContext context) throws Exception { System.out.println(&quot;Goodbye World!!&quot;); context.removeServiceListener(this); } @Override public void serviceChanged(ServiceEvent event) { switch(event.getType()){ case ServiceEvent.REGISTERED:registerServlet();break; case ServiceEvent.UNREGISTERING:unregisterServlet();break; } } private void registerServlet(){ if(ref==null){ ref=context.getServiceReference(HttpService.class); if(ref!=null){ try{ HttpService service=context.getService(ref); service.registerServlet(&quot;&#x2F;demo&#x2F;hello&quot;, new HelloServlet(context),null,null); System.out.println(&quot;&#x2F;demo&#x2F;hello已经被注册&quot;); }catch(Exception ex){ ex.printStackTrace(); } } } } private void unregisterServlet(){ if(ref!=null){ try{ HttpService httpservice=context.getService(ref); httpservice.unregister(&quot;&#x2F;demo&#x2F;hello&quot;); System.out.println(&quot;&#x2F;demo&#x2F;hello已经被卸载&quot;); ref=null; }catch(Exception ex){ ex.printStackTrace(); } } } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;helloServlet.java&lt;/p&gt; &lt;pre&gt;&lt;code&gt;public class HelloServlet extends HttpServlet{ private BundleContext context;</p> <pre class="prettyprint"><code>public HelloServlet(BundleContext context){ this.context=context; } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ HttpSession session=request.getSession(); response.setCharacterEncoding(&quot;UTF-8&quot;); response.setContentType(&quot;text&#x2F;html&quot;); PrintWriter out=response.getWriter(); out.println(&quot;&lt;html&gt;&quot;); out.println(&quot;&lt;head&gt;&quot;); out.println(&quot;&lt;title&gt;hello world&lt;&#x2F;title&gt;&quot;); out.println(&quot;&lt;&#x2F;head&gt;&quot;); out.println(&quot;&lt;body&gt;&quot;); out.println(&quot;hello wolrd!&quot;); out.println(&quot;&lt;&#x2F;body&gt;&quot;); } </code></pre><p>}&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;尝试好几遍,实在没有找到问题的原因所在。然后试着换了一种方式,参照网页&lt;a href=“<a href="https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/">https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/</a>”&gt;&lt;/a&gt;&lt;a href=“<a href="https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/">https://www.ibm.com/developerworks/cn/web/0907_osgiweb_liuqing/</a>”&gt;<a href="https://www.ibm.com/developer">https://www.ibm.com/developer</a>…&lt;/a&gt;&lt;br&gt;,按照“将 HTTP Server 置于 Equinox 框架中开发 Web 应用”一步一步操作,但是结果一样,这几个地址无法访问&lt;/p&gt; &lt;pre&gt;&lt;code&gt;<a href="http://localhost/images/1.jpg">http://localhost/images/1.jpg</a> <a href="http://localhost/jsp/index.jsp">http://localhost/jsp/index.jsp</a> <a href="http://localhost/servlet/myfirstservlet?userName=Levin">http://localhost/servlet/myfirstservlet?userName=Levin</a>&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;工程也是成功启动了的,截图如下:&lt;br&gt;成功名是osgi_web&lt;br&gt;&lt;span class=“img-wrap”&gt;&lt;img data-src=&quot;/img/bVSi1p?w=1366&amp;h=720&quot;&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;最终发现是Caused by: java.lang.NullPointerException: A null service reference is not allowed.&lt;/strong&gt;&lt;/p&gt;</p> <pre class="prettyprint"><code> &lt;&#x2F;div&gt;</code></pre></div>leaponThu, 12 Oct 2017 10:30:54 GMT