正则表达 匹配方法

部分内容已经消失

可以看到getter方法和setter方法已经从代码之中移除出去了,这样我们写文章的时候代码比较紧凑,便于阅读.

不足的地方

这个正在表达式不适合方法体之中存在代码快的情况.因为它以}作为方法的介绍标记.但是如果此时方法体重存在}这个符号,将不会匹配成功.

改进

上面的代码并不能匹配到方法体之中有嵌套的代码块的情况.

匹配正则

1
public\s+(?:\w+(?:\s+)?)+\((?:\,?\s*\w+\s+\w+)*\)(\s+)\{(?:(?:\n|\r\n).*)*?\1\}

上面正则判断方法的代码如下:

1
(\s+)\{(?:(?:\n|\r\n).*)*?\1\}

通过匹配方法体开始标记(\s+)\{和结束标记\1\}前面的空格判断方法体的开始和结束位置.匹配效果如下图:
这里有一张图片
这样就可以匹配到如下所示的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static String oneArg(String arg1)
{
//从剪贴板获取文本
String text=SysClipboardUtil.getSysClipboardText();
// 删除空行
text = text.replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");
switch (arg1)
{
//省略...
}
return text;
}
public static String noArg(String text)
{
// 删除无用的空行
text = text.replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");
return text;
}

新的问题

好的现在又引入了新的问题,如果是下面的代码:

1
2
3
public void setName(String name) {
this.name = name;
}

上述正则将无法匹配到.因为方法体开始符{前面只有一个空格,而结束符前面却有4个空格。
嗯,这个事情暂且搁置.就让自己手动现在使用哪种方式吧.

匹配getter setter方法

1
public\s+\w+\s+(?:set|get)\w+\((?:\,?\s*\w+\s+\w+)*\)(\s+)\{(?:(?:\n|\r\n).*)*?\1\}

匹配效果如下图图所示:
这里有一张图片

在线正则表达式匹配工具

http://tool.chinaz.com/regex/

问题描述

最近在看《Spring MVC+Mybatis企业项目实战(第2版)》这本书,但是,随书源码导入eclipse的时候总是会报错.下面来介绍怎么解决eclipse导入Spring MVC项目报错的问题。

修改JRE版本

修改Spring MVC配置文件的第一行

Spring MVC的配置文件的第一行是一个标签,里面有各种声明,报错的地方也是这个.如下图所示:

解决方案

重新创建一个Spring MVC的配置文件,命名为springmvc-config2.xml,这个文件的文件名比原来的springmvc-config.xml多个一个2,如下图所示:
然后复制原来配置文件中标签之中的所有内容,粘贴到刚才新建的配置文件之中.如下图所示.
然后删除原来的配置文件。
然后把新的文件重命名为原来的文件.
最后引入声明即可.

问题描述

在导入项目的时候,springmvc的配置文件声明,也就是第一行的beans标签,经常报错.

解决方案

安装Spring Tools3插件

这里需要用到Spring Tools3插件,

方案1

点击配置文件下方的Namespaces标签,可以看到有写功能勾选上了,现在逐个取消勾选,然后再次勾选上.

方案2

复制beans标签里面的所有内容,然后删除掉原来的配置文件,再次创建一个新的Spring配置文件,然后粘贴到新文件的beans标签下,这个时候可能还是会报错,是因为有写标签的声明没有引入,点击文件下方的Namespaces标签,勾选上相关声明即可。

前言

web.xml之中好多xml标签都差不多,每次都要抄写一遍就很烦,把这些代码做成XML模板,这样eclipse就会自动提示.

创建XML模板步骤

windows>preferences>XML>XML Files>Editors>templates,然后点击右边的new按钮,新建一个XML模板,填入名称,描述,模板代码,然后点击OK即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--设置文件编码过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--匹配文件编码过滤器的URL-->
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

如下图所示:
这里有一张图片

使用自己创建的XML模板

在web.xml文件之中,输入刚才设置的名称,就可看到自动提示了.如下图所示:
这里有一张图片
选择这个选项即可补全代码

参考资料

https://blog.csdn.net/qq_38379632/article/details/81866784

Spring MVC配置文件模版

Spring MVC配置文件模板如下所示:

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

虽然知道大概是这样,但是我们不可能把上面这些代码背出来,下面介绍在eclipse之中如何创建Spring MVC的配置文件.

安装插件

使用安装Spring Tools3

使用Spring Tools3插件创建配置文件

在需要创建的目录上右键,选择new>Other...
这里有一张图片
然后在弹出的选择框中下拉,展开Spring目录,选择Spring Bean Configuration File,选择next
这里有一张图片
最后填入文件名,然后点击next,再次点击next即可创建Spring MVC配置文件.
这里有一张图片
效果如下图所示:
这里有一张图片

手动创建web.xml

有时候,刚开始创建项目时,并没有创建web.xml文件,等到需要用到时,总不能再创建一个一个项目,然后再把web.xml复制过来吧。下面来介绍怎么手动创建web.xml:
在项目上右键,选择Java EE tools,然后选择Generate Deployment Descriptor Stub即可创建web.xml:
这里有一张图片

盒模型

所谓盒模型,就是浏览器为页面中的每个HTML元素生成的矩形盒子。这些盒子们都要按照可见版式模型(visual formatting model)在页面上排布。

可见的页面版式

可见的页面版式主要由三个属性控制:position属性、display属性和float属性。其中,

  • position属性控制页面上元素间的位置关系,
  • display属性控制元素是堆叠、并排,还是根本不在页面上出现,
  • float属性提供控制的方式,以便把元素组成成多栏布局。

每一个元素都会在页面上生成一个盒子。因此,HTML页面实际上就是由一堆盒子组成的。
默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看到页面中盒子的结构

盒子的属性

我们先从每个元素盒子的属性开始吧。这些属性可以分成三组。

  • 边框(border)。可以设置边框的宽窄、样式和颜色。
  • 内边距(padding)。可以设置盒子内容区与边框的间距。
  • 外边距(margin)。可以设置盒子与相邻元素的间距。

外边距是边框向外开推其他元素的距离,而内边距是从边框向内推开其他元素的距离,如下图所示:
这里有一张图片
图中文字:Border:边框;Padding:内边距;Margin:外边距.
元素盒子还有一个背景层,可以改变颜色,也可以添加图片。
一个盒子有4条边,因此与边框、内边距和外边距相关的属性也各有4个,分别是上(top)、右(right)、下(bottom)、左(left)。

简写样式

CSS为边框内边距外边距分别规定了简写属性,让你通过一条声明就可以完成设定。

简写样式属性顺序

在每个简写声明中,属性值的顺序都是。想象一下从上开始绕顺时针旋转就记住了。

举个例子吧,如果要设定盒子的外边距,不用简写属性就得这样写:

1
2
3
4
5
6
选择器xxx{
margin-top:5px;
margin-right:10px;
margin-bottom:12px;
margin-left:8px;
}

而使用简写属性,则可以简写为这样:

1
2
3
选择器xxx{
margin:5px 10px 12px 8px;
}

盒子边框

前言

在Java Web项目中,我们想要使用Spring,需要把Spring的jar包复制粘贴到项目的WEB-INF/lib目录下,如果创建多个项目,每次这样复制其实很麻烦,下面介绍使用批处理来批量复制Spring依赖的jar包到Web项目的WEB-INF/lib目录下:

目录结构

首先需要下载Spring的压缩包:spring-framework-5.1.6.RELEASE-dist.zip,以及commons-logging-1.2的压缩包:commons-logging-1.2-bin.zip.然后把两个压缩文件解压到当前目录.

1
2
3
4
5
6
G:\Desktop\书籍\JavaEE\jar
├─commons-logging-1.2\
├─spring-framework-5.1.6.RELEASE\
├─commons-logging-1.2-bin.zip
├─spring-framework-5.1.6.RELEASE-dist.zip
└─一键复制Spring依赖到项目lib目录下.bat

接下来使用下面的批处理文件即可快速的把所需要的jar文件,复制到Web项目中:

一键复制Spring依赖到项目lib目录下.bat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
echo ----------------------复制Spring的jar包到项目lib目录下--------------------------------
::进入当前盘符
%~d0
::进入当前文件所在目录
cd %~dp0
::进入spring的libs目录下
cd spring-framework-5.1.6.RELEASE\libs
echo 当前工作目录:%cd%
::输入目标目录的路径
set /p target=输入lib目录的路径:
echo.
echo 将会把所需要的jar包复制到"%target%"这个目录下
::复制spring的jar文件到你的项目的lib目录下
:: /d参数表示不覆盖已有的文件
xcopy *.RELEASE.jar %target% /d
echo ----------------------复制Spring的jar包到项目lib目录下--------------------------------
echo ----------------------复制commons-logging-1.2的jar包到项目lib目录下-------------------
cd ..\..\commons-logging-1.2
echo 当前工作目录:%cd%
::复制commons-logging-1.2.jar到你输入的lib目录下
:: /d参数表示不覆盖已有的文件
xcopy commons-logging-1.2.jar %target% /d
echo ----------------------复制commons-logging-1.2的jar包到项目lib目录下-------------------
pause

命令解释

%~d0:%0这个是命令行参数,表示当前批处理文件本身,%~d0表示当前批处理文件所在的盘符.直接写上这个命令标识进入当前批处理文件所在的盘符。
cd %~dp0:%~dp0标识当前批处理文件所在的目录,所以cd %~dp0表示进入当前批处理文件所在的目录.
xcopy *.RELEASE.jar %target% /d,xcopy可以用来复制文件或者目录,xcopy *.RELEASE.jar表示复制Spring需要的所有jar文件,xcopy/d参数表示不覆盖目标目录中已经存在的同名文件.

问题描述

之前我在码云上创建来一个用来放一些个人工具类的项目(Tools),但是最近push不上去,错误输出如下:

1
2
3
4
5
lan@DESKTOP-8ISAT6B MINGW64 /e/workspace/Tools (master)
$ git push origin master
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

应该是秘钥的问题,不过我还是习惯用Github,所以我准备换到github上.

在github上创建项目

我重新在Github上创建一个名为MyJavaTools的仓库,得到SSL地址为:

1
git@github.com:lanlan2017/MyJavaTools.git

下面就把远程仓库改为这个地址.

修改远程仓库的地址

查看当前远程仓库

1
git remote -v

命令输出如下:

1
2
3
4
lan@DESKTOP-8ISAT6B MINGW64 /e/workspace/Tools (master)
$ git remote -v
origin git@gitee.com:XiaoLan223/Tools.git (fetch)
origin git@gitee.com:XiaoLan223/Tools.git (push)

修改远程仓库的地址为github的

1
git remote set-url origin git@github.com:lanlan2017/MyJavaTools.git

查看修改效果

再次输入git remote -v命令查看远程仓库的地址,如下:

1
2
3
4
5
lan@DESKTOP-8ISAT6B MINGW64 /e/workspace/Tools (master)
$ git remote -v
origin git@github.com:lanlan2017/MyJavaTools.git (fetch)
origin git@github.com:lanlan2017/MyJavaTools.git (push)

可以看到远程仓库的地址已经修改过来了.

push到新的远程仓库地址

输入git push origin master推送到新的远程仓库即可.

1
2
3
4
5
6
7
8
9
10
11
lan@DESKTOP-8ISAT6B MINGW64 /e/workspace/Tools (master)
$ git push origin master
Counting objects: 133, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (105/105), done.
Writing objects: 100% (133/133), 59.98 KiB | 203.00 KiB/s, done.
Total 133 (delta 23), reused 0 (delta 0)
remote: Resolving deltas: 100% (23/23), done.
To github.com:lanlan2017/MyJavaTools.git
* [new branch] master -> master

参考资料

https://blog.csdn.net/chaiyu2002/article/details/80898474

问题描述

今天Eclipse中Spring MVC的配置文件报错如下:

1
2
Referenced file contains errors (http://www.springframework.org/schema/mvc/spring-mvc.xsd). For more information, right click on the message 
in the Problems View and select "Show Details..."

解决方案

这可能是因为版本不对应导致的,打开链接:
http://www.springframework.org/schema/mvc/
你会看到一个多个版本链接列表,点击对应的版本的链接打开文件,我这里使用的是4.3版本的,所以我点击4.3版本的链接
然后浏览器会打开这个文件,复制地址栏上的URL:http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd,替换上面报错的http://www.springframework.org/schema/mvc/spring-mvc.xsd即可。