文档章节

2014年工作中遇到的20个问题:41-60

FansUnion
 FansUnion
发布于 2015/10/22 10:30
字数 1674
阅读 11
收藏 0
点赞 0
评论 0
41.Maven工程中,src/main/webapp目录结构太深,不方便点击。
在普通的Web工程中,WebContent直接就在项目的根目录下,打开页面比较方便。
因此,为了方便,把Maven工程的src/main/webapp直接作为“Source  Code”加入到Build Path下,
这样可以方便编辑webapp目录中的页面。
但是,导致的结果是:Maven打包时,不会把webapp目录下的页面打包到target目录对应的文件中。
因此,把src/main/webapp作为Source Code目录,从而方便编辑web页面的方式,是不行的。


另外,加入build path时,貌似会自动修改Jetty的Run Configuration的选项,
WebApp Folder:src/main/webapp被改成了 build/classed/main/webapp。


这个问题还有待进一步尝试~

最终结论,把src/main/webapp作为Source Code目录是可行的,可以减少编辑web页面的点击次数,非常方便。
上面的问题,根本原因是“不知道怎么修改了Run Configuration-Jetty的Webapp Folder”,错误地改成了“build/classed/main/webapp”
而不是正确的"src/main/webapp"。


终于找到了一种比较好的方法,在Maven工程中,也可以象普通项目那样,方便地编辑页面了。


42.Freemarker数字转时间
http://my.oschina.net/u/1458693/blog/293697


如果字段是字符串格式,就要先转换为number,支持链式调用
<#setting datetime_format="yyyy-MM-dd HH:mm"/>
${profile.createTime?number?number_to_datetime}


${"1411009099377"?number?number_to_datetime}


43.SpringMVC,modelMap中加入参数,如果跳转到某个url,会把这些参数也附在url后面。


@RequestMapping(value = "/testReceive")
public String testReceive(HttpServletResponse response,
ReceivePaymentModel receivePaymentModel,ModelMap map) {
map.addAttribute("test", "Test");
return "redirect:http://www.baidu.com";
}
会跳转到;http://www.baidu.com?test=Test


44.Sitemesh显示title
直接通过$来获取几个元素,${title}、 ${head}、${base}、${title}、${body}




JSP需要引入Taglib
<%@taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
<sitemesh:head/>


<sitemesh:title/>


在Freemarker中,没有Taglib,直接用${title}。




45.Maven配置war包
  <build>
    <finalName>funds</finalName>
  如果pom.xml文件中,有finalName这个配置,生成的war和jar包的格式是funds.war,即不带版本号。
  
  如果没有配置,默认的格式是funds-1.0.0.war。
  
46.tomcat启动的时候增加全局变量,-Dp2p_config_dir=/user/local/p2p
Spring项目中的properties配置文件可以和项目分离。
 <!-- 将多个配置文件读取到容器中,交给Spring管理 -->  
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
               <!--  这里支持多种寻址方式:classpath和file  
              <value>classpath:config/demo.properties</value>
              --> 
              <!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->  
              <value>classpath:config/activemq.properties</value> 
              <value>classpath*:config/domain.properties</value>
<value>classpath:file:/usr/local/p2p</value> 
              <value>classpath*:${p2p_config}/config/domain.properties</value>
            </list>
        </property>
    </bean>




47.Spring和属性文件<context:property-placeholder location="classpath:config/global.properties" ignore-unresolvable="true"/>。


配置之后,就可以使用${jdbc.properties}。
这个地方有疑问的是:"location"这个地方是不能使用${}的。


使用PropertiesFactoryBean,可以使用${}了。为了达到一个目的“指定配置文件的完整路径时,需要一个${}计算相对路径,从而达到Web工程和属性配置完全分离”。
<bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
              <value>${p2p.config_path}config/p2p_db.properties</value>
            </list>
        </property>
    </bean>
<!-- <context:property-placeholder location="${p2p.config_path}/p2p_db.properties" ignore-unresolvable="true"/> -->

用了PropertiesFactoryBean之后,values中可以使用${}了,但是接下来的
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxConnectionsPerPartition" value="15" />
</bean>
${jdbc.driverClassName}没有解析。

现在的结论是,PropertiesFactoryBean和PropertyPlaceholderConfigurer都不能解决问题额。




<context:property-placeholder location="${p2p.config_path}config/p2p_db.properties" ignore-unresolvable="true"/>
p2p.config_path在JVM中指定参数。


48.单词拼写错误,导致按名字找不到,而按照类型找到多个。
@Resource
private Cache defaultCache;//"defalut"
“单词拼写错误很难找到”,某某同事的一个失误,花了不少时间。


49.mysql日期属性定义为bigint,而不是date,是为了“把日期作为索引,bigint效率更高”。


50.创建存储过程失败。

线上原服务器成功创建,root账户;
本地成功创建,root账户。
新服务器非root账户,报错,很可能是权限不足导致的。
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQ
L DATA in its declaration and binary logging is enabled (you *might* want to use
 the less safe log_bin_trust_function_creators variable)
 
51.
class Service{
@Transactional(readOnly=true,propagation=Propagation.REQUIRES_NEW)
public Long add();

public Long add2(){
  this.add2();
}

add2方法没有事务,要想让声明式事务Transactional起作用,需要经过代理类,一个类内部之间的方法调用,没有经过代理类,
类之间的方法调用才会经过代理类。
}


52.JSP等页面中,引入css时,需要放在“<head></head>”里,否则SiteMesh可能不会把它加进去。
<head>
<link rel="stylesheet" type="text/css" href="/public/hao/themes/default/css/index/index.css?v=20141010">
</head>


53.引入JS的时候,多个JS可能存在依赖关系,被其它js依赖的需要优先引入。


54.securecrt这块SSH访问工具可以记住用户名和密码,不用重新输入,而Putty就不行。

  公司某台服务器密码超级长,用putty不记住密码,简直折磨死人额。


55.Tomcat增加自定义配置参数。
set JAVA_OPTS = %JAVA_OPTS% -Dp2p.config_path=file:C:/Users/Administrator/git/p2p2/yiqihao/


56.运行Windows程序的时候,报错,但不知道错误原因。
  可以通过控制台cmd运行,能够看到更详细的错误提示。


57. Freemarker的include语法。
  在A页面引用,<#include "user_menu.ftl" />,提示user_menu.ftl找不到。
  按照HTML语法,不是“/”开头的url,应该是相对于当前页面的路径猜对,结果Freemarker中不是。
  <#include "common/user_menu.ftl" />,这样才行额。


58.Mybatis的Mapper不允许重名。
   Dao接口的方法虽然可以重名,但在运行的时候会报错。
   “Mapped Statements collection already contains value for com.p2p.user.dal.dao.LoanInfoDao.list”。
   
59.Mybatis的分页插件PageHelper的PageInfo不能用在WebService中。
Caused by: java.lang.NoSuchMethodError: com.github.pagehelper.PageInfo.<init>(Ljava/lang/Object;)V
at com.github.pagehelper.PageInfoFactory.createPageInfo(PageInfoFactory.java)
... 85 more
最奇怪的问题是“com.github.pagehelper.PageInfoFactory”这个类根本不存在PageHelper类库里额。

 解决办法是:新建一个简单的不依赖Page类的PageInfo2,把PageInfo的结果copy到PageInfo2。
 WebService接口:
    public PageInfo2 queryLogPageByConditions();


这个构造函数有点复杂
public PageInfo(List list) {
        if (list instanceof Page) {
            Page page = (Page) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.startRow = page.getStartRow();
            this.endRow = page.getEndRow();
            this.total = page.getTotal();
            this.pages = page.getPages();
            this.list = page;
        }
    }


60.数据库中一个字段apr存储了年利率apr(0.15),而Java的Model定义的数据类型是Integer,结果页面中显示的值总是0。
   因为int的默认值0,一直觉得数据没有查询出来。但是实际执行的sql语句,却查询出来了。
   最后突然才明白,数据类型不匹配,数据库的Double 0.15转换成Java的Integer总是0。
   修改Java Model的属性apr为Double类型就可以了。



版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
FansUnion
粉丝 56
博文 857
码字总数 825464
作品 0
丰台
高级程序员

暂无相关文章

iExec Blockchain Marketplace for Cloud

iExec Releases the First-Ever Blockchain Marketplace for Trading Cloud Computing Berlin, Germany, May 29, 2018. iExec has released its blockchain-based decentralized cloud marke......

openthings ⋅ 33分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 52分钟前 ⋅ 15

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 今天 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部