开发过程中的疑问及解析_常用配置
来源:互联网 发布:选择排序java 编辑:程序博客网 时间:2024/04/20 02:29
前言:针对我在开发过程中的一些疑问进行整理,并对这些疑问进行有针对性的解析。当前正在学习阶段,如果发现有什么错误或疑问请留言,我会尽快的解决。
一、Maven
1.1 Eclipse中显示环境时JDK1.5,但是我安装的是1.8
场景:除了默认JDK变更为1.5,有的时候在项目上进行更新时也会恢复到1.5。
解析:
Maven官方文档有如下描述:
编译器插件用来编译项目的源文件.从3.0版本开始, 用来编译Java源文件的默认编译器是javax.tools.JavaCompiler (如果你是用的是java 1.6) . 如果你想强制性的让插件使用javac,你必须配置插件选项 forceJavacCompilerUse.
同时需要注意的是目前source选项和target 选项的默认设置都是1.5, 与运行Maven时的JDK版本无关.如果你想要改变这些默认设置, 可以参考 Setting the -source and -target of the Java Compiler中的描述来设置 source 和target 选项.
总的来说:
这是Maven已知的一个特性。除非在你的POM文件中显示的指定一个版本,否则会使用编译器默认的source/target版本1.5。主要还是在于Eclipse中Maven的集成方式起到了关键作用, 它会从POM文件中生成项目的.project,.classpath以及.settings, 因此除非POM文件指定了正确的JDK版本, 否则你每次更新项目配置的时候它都会重置到1.5版本。
解决办法:
在pom.xml文件中增加如下配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins></build>
官网资料:http://maven.apache.org/plugins/maven-compiler-plugin/index.html
参考资料:
为什么Maven会更改Eclipse JDK设置
二、Eclipse
2.1 Eclipse没有了折叠功能
在开发过程中无意间,摁了快捷键,使得编辑界面没有折叠功能了,可是我原本是想将所有的代码折叠的。后来尝试了几下,发现是误摁了Ctrl+/(小键盘上)快捷键,在摁一下就回来了。
2.2 Eclipse中encoding没有GBK字符集选项
再导入代码的时候,会出现乱码,如果更改整体配置则需要换来换去,因此我们可以针对当前项目配置当前的字符集,右键->properties->Text file encoding->other选择字符集,可是没有GBK怎么办,我们直接清除内容,然后手工添加GBK。
2.3 Eclipse安装支持Hibernate的插件
插件名称:JBoss-Tools。插件下载并安装教程:在Eclipse里添加插件开发Hibernate
2.4 解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.”
解决方法:加上 <!DOCTYPE xml>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE xml>
2.5 解决“Target runtime Apache Tomcat v6.0 is not defined.”
出现的原因:项目的配置是使用Tomcat 6.0 ,但是eclipse中没有。
解决方法:
在工程目录下的.settings文件夹里,打开org.eclipse.wst.common.project.facet.core.xml文件,将<runtime name="Apache Tomcat v6.0"/>改成你tomcat的版本比如<runtime name="自己需要更改的版本"/>
2.6 解决JSTL使用SQL标签时报错“Missing end tag for "sql:update"”这类错误
出现的原因:在sql:transaction或sql:update标签内使用了HTML标签<!-- -->。
解决方法:使用JSP注释<%-- --%>
2.7 jsp页面使用 jstl,出现 Unknown tag (...)警告
解决办法:<% page %> 中加入 isELIgnored="false"
三、数据库
3.1 java代码中的模糊查询字符串的拼写
针对PreparedStatement我们可以在查询的SQL命令中预留空缺,用问号代替,我们再动态地添加,但是针对模糊查询就需要拐点弯了。我们需要在模糊查询的时候,在需要动态添加的地方按照非模糊查询的写法写,再在传入的字符串时用组拼的方式时将%%添入即可。
3.2 HyperSql使用file模式没有实现永久保存
使用file模式应该可以实现永久保存的特性,但是在测试过程中没有实现。通过搜索资料发现原来是必须关闭数据库才可以保存,就是在URL中添加;shutdown=true但是仍然没有实现永久保存的效果,最后才发现,是有个前提的,那就是必须所有连接都关闭(conn.close())后才可以。在测试过程中发现我们如果利用代码执行shutdown命令,即使有conn没有断开,也会永久保存的。
还有一种配置方式,说是可以实现,无需断开连接,当对数据进行修改后,就会被持久化得方法。就是使用;hsqldb.write_delay=false,我查看了API,确实是这么回事,但是测试效果不理想,今后有待理解。
参考资料:HSQLDB(HyperSQL DataBase)在文件模式(File Mode)下数据的持久化
四、java语言
4.1 检测字符串是否相等
如果检测两个字符串的内容是否相等,我们可以使用equals方法进行检测,切忌不要使用==来比较这两个字符串的内容是否相同。原因是:==只是比较这两个字符是否都放在同一个地方,也就是比较的是存放的地址是否相同。
然而如果字符串是空的(NULL)那么使用equals会抛出空指针异常,需要切记。
如果是要比较连个字符串是否相等,最好的写法是if(null!=Str&&Str_temp.equals(Str)),这样可以避免空指针异常,同时也可以检查字符串的内容是否相等。需要注意的是,我们应当先写null!=Str来判断检测的字符串不是null。
4.2 空串与null串
空串“”是长度为0的字符串。可以调用以下代码检查一个字符串是否为空:if(0==Str.length())或者if(str.equals(""))
null串表示目前没有任何队形与该变量关联。
4.3 Java中的属性和字段
Java中的属性和字段的区别:Java中的属性,通常可以理解为get和set方法。而字段,通常叫做“类成员”。这两个概念是完全不同的。
属性只局限于类中方法的声明,并不与类中其他成员相关。例如:
void setA(String s){}String getA(){}当一个类中拥有这样一对方法时,我们可以说,这个类中拥有一个可读写的a属性(注意是小写a)。如果去掉了set的方法,则是可读属性,反之亦然。
类成员(字段),通常是在类中定义的类成员变量,例如:
public class A{private String s = "123";}我们可以说A类中有一个成员变量叫做s。
五、Java EE
5.1 web.xml配置中的url-pattern的'/'和'/*'的区别
5.2 解决Invalid location of tag (form)警告
5.3 EL表达式与SpELl表达式的区别
起初 EL 表达式只是为了方便存取数据所定义的一种语言。它只能使用在 JSTL 标签中,而不能在JSP 页面中运用。一直到了 JSP2.0 版本发布后, EL 才被正式纳入为 JSP 标准规范之一。这时,它才可以直接在 JSP 页面程序中使用,只要安装的 Web 服务器能够支持 Servlet2.4/JSP2.0。
Spring表达式语言(简称为SpEL)是一种JSP2的EL功能类似的表达式语言,他可以在运行时查询和操作对象图。与JSP2的EL相比,SpEl功能更加强大,他甚至支持方法调用和基本字符串模板函数。SpEL可以独立于Spring容器使用——只是当成简单的表达式语言来使用;也可以在Annotation或XML配置中使用SpEL,这样可以充分利用SpEL简化Spring的Bean配置。
通过上面的介绍我总结如下:
- EL表达式可以在JSP中使用,EL表达式还可以很好在JavaScript中得到使用,因为表达式语言正是借用了访问结构化数据的JavaScript语法。EL 可以很好的和JSTL或者自定义标签结合使用,因为EL 创建的初衷就是在 JSTL 中使用。
- SpEL可以在Java代码中直接使用,也可以在Spring的XML配置文件中使用,从而简化Spring的Bean配置。
六、常用
6.1 启动Spring的web.xml配置
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
6.2 启动Struts2的web.xml配置&拦截所有请求
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>
6.2 导入JSTL 1.2
<dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-spec</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency>在使用JSTL的页面添加如下tag即可:
CORE LIBRARY <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> XML LIBRARY <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> FMT LIBRARY <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> SQL LIBRARY <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> FUNCTIONS LIBRARY <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
6.3 使用URL Rewrite
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.3</version> </dependency>在web.xml文件中配置启用URL Rewrite Filter:
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>注意:需要在所有的servlet mappings的上面。
6.3 Maven项目更改默认的JRE环境
<build><plugins><plugin><!-- 因为Maven所有核心构建都是该groupId,所以省略掉时,Maven会自动找寻该groupId下的该组件.换句话说该groupId可以省略掉不写 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build>
  
最后修改时间:2017年4月11日10:09:34
********************************************************************************结束语********************************************************************************************
我在写这篇博客的时候也是一名初学者,有任何疑问或问题请留言,或发邮件也可以,邮箱为:fanxiaobin.fxb@qq.com,我会尽早的进行更正及更改。
在我写过的博客中有两篇博客是对资源的整理,可能对大家都有帮助,大家有兴趣的话可以看看!!
下载资料整理——目录:http://blog.csdn.net/fanxiaobin577328725/article/details/51894331
这篇博客里面是我关于我见到的感觉不错的好资源的整理,里面包含了书籍及源代码以及个人搜索的一些资源,如果有兴趣的可以看看,我会一直对其进行更新和添加。
优秀的文章&优秀的学习网站之收集手册:http://blog.csdn.net/fanxiaobin577328725/article/details/52753638
这篇博客里面是我对于我读过的,并且感觉有意义的文章的收集整理,纯粹的个人爱好,大家感觉有兴趣的可以阅读一下,我也会时常的对其进行更新。
********************************************************************************感谢********************************************************************************************
- 开发过程中的疑问及解析_常用配置
- iOS开发过程中的疑问
- 项目开发中的使用过程疑问
- 过程中的点点滴滴【学习疑问】
- 网站运营过程中的疑问
- 学习过程中的一些疑问
- nginx location配置及解析过程
- 4.5 CMMI4级——4级执行过程中的五个疑问及解答
- CMMI4级——4级执行过程中的五个疑问及解答
- sublime使用过程中的一些常用配置
- vb中的存储过程的疑问
- cocos2d-x学习过程中的疑问
- 二阶压控低通滤波器设计过程中的一点疑问
- AT25C02程序编写及疑问解析
- 开发过程中的一些常用技巧
- 开发过程中的常用Eclipse插件
- 开发过程中的常用Eclipse插件
- 开发过程中的常用Eclipse插件
- 2017年值得一看的设计趋势(五)
- 编译内核
- 兰韵PACS备忘
- 8.1 usb_register 与 usb_regieter_dev
- Android开发——通过SD卡外部存储数据
- 开发过程中的疑问及解析_常用配置
- jQuery——位置选择器
- 运算符、表达式和语句(1)
- 2 HTML分解(3)
- python类、对象、方法、属性之类与对象笔记
- nginx隐藏端口号
- KNN算法的matlab实现
- CS231n作业笔记2.3:优化算法Momentum, RMSProp, Adam
- Ajax的定义