Eclipse+sts 搭建ssm环境/使用 随记
1Eclipse安装 sts插件 (spring tool suite)可以在Eclipse市场中安装:Eclipse->Help->Eclipse Marketplact或是Spring 官网下载安装后即可直接新建Spring/MVC 项目,以集成Maven2 在pom.xml中添加/修改Maven依赖修改JDK配置:下面...
1 Eclipse安装 sts插件 (spring tool suite)
可以在Eclipse市场中安装:Eclipse->Help->Eclipse Marketplact
或是Spring 官网下载
安装后即可直接新建Spring/MVC 项目,以集成Maven
2 在pom.xml中添加/修改Maven依赖
修改JDK配置:下面出现1.8的地方标识要是用的JDK版本
<properties>
<java-version>1.8</java-version>
......
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
....
然后右键项目->Maven->update project
3 通过WEB.XML描述可知
DispatcherServlet=servlet-context.xml
contextConfigLocation=root-context.xml
4 在root-context.xml配置各种<bean>,如数据库连接池,Mybatis SqlSessionFactoryBean+MapperScannerConfigurer
可配置DAO+Service 的扫描包
5 Maven项目中 XML中的ClassPath:->src/main/* 下的各目录
推荐把文件类内容放在src/main/resources 目录下 ,例如.xml/.properties
6 运行时报错 控制台搜索Cause /Caused by 排查原因
7 Pom.xml 中添加: mysql-connector-java,jackson-mapper-asl,jackson-core-asl,c3p0,mybatis,
mybatis-spring,spring-jdbc,spring-tx 等依赖JAR
在mvnrepository.com可搜索依赖JAR版本和坐标(根据需要 使用版本相对较新使用较多的版本)
8 Tomcat 启动时 configured中只保留一个项目 否则可能报错
9 html/jsp 中文乱码 <meta charset="">设置成与创建时的编码格式一致
当用多个IDE修改HTML时:
a.注意保存编码格式一致
b.最好最后在Eclipse中打开并刷新,否则有时会出现保存成功,但是运行时无变化
c.注意缓存
10 Eclipse与Tomcat 运行时的JAVA版本不一致,会出现JVM报错
11 db.properties 数据库配置文件设置
a. 报错com.mchange.v2.c3p0.DriverManagerDataSource - Could not load driverClass
db.properties 中每一行结尾 注意去空格(重要)
b. 报错com.mysql.cj.jdbc.Driver
mysql 6.0+ 之后 驱动路径为jdbc.driverClass=com.mysql.cj.jdbc.Driver
c. 报错 SSL 或是 zone
characterEncoding=GBK&useSSL=false&serverTimezone=GMT
成功配置用例:
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.jdbcUrl=jdbc\:mysql\://localhost\:3306/world?characterEncoding=GBK&useSSL=false&serverTimezone=GMT
jdbc.user=root
jdbc.password=
jdbc.dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
12 Spring Mvc拦截器配置
在DispatcherServlet文件中(servlet-context.xml)配置
<interceptors>
<!-- 用户信息拦截器 -->
<interceptor>
<!-- 拦截所有路径 /** 注意用两个*-->
<mapping path="/**"/>
<!-- 不拦截的路径 -->
<!-- <exclude-mapping path="/static/**" /> -->
<beans:bean class="com.sw008.interceptor.LoginInterceptor"/>
</interceptor>
</interceptors>
<interceptors>中可以配置多个拦截器<interceptor>,拦截器bean的类由自己实现,其实现Spring的接口HandlerInterceptor。注意:注意SpringMvc的版本,也可以用mvc标签声明<mvc:interceptors>
HandlerInterceptor接口中三个方法:
/**
* 在controller方法调用之前执行
* 拦截器
*/
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)
/**
* 在preHandle方法返回true后才会执行
* 在controller方法调用之后执行返回视图之前执行,
* ModelMap表示请求Controller处理之后返回的Model对象,所以可以在
* 这个方法中修改ModelMap的属性,从而达到改变返回的模型的效果。
*/
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
/**
* afterCompletion 在preHandle方法返回true后才会执行
* 在整个请求完成之后才会执行,也就是说在视图渲染之后进行调用,主要用于进行一些资源的释放
*/
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
13 HTML/JSP页面中涉及到路径的赋值 要有${pageContext.request.contextPath}/+请求路径,否则会找不到对应请求
14 PageHelp 分页插件集成 :点击打开链接
PageInfol类中的List是结果集,所以可以只向前端传PageInfol,不用单独传结果集
15 给document.createElement()创建的DOM绑定onclick事件,
var a=document.createElement("a");
a.οnclick=function(){refreshImeiHz(this.value);} //refreshImeiHz()是另一个方法
16
替换spring系列的版本,STS默认使用的是3.1.1版本,想要提高spring系列包整体版本打开POM.xml,在参数中找到spring的版本参数,双击修改为想要的版本,保存后相关的spring都会更新。这个属性参数在POM.xml的<properties/>中,在POM.xml中声明<version>${org.springframework-version}</version>的JAR包都是版本都是受这个属性控制
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency>
servlet-context.xml,root-context.xml等spring相关配置文件,顶部声明标签的版本需要手动更换
可以在servlet-context.xml下边的Namespaces中设置,左边选择命名空间,右边找到对应版本
注意有时会有奇怪的错误:本人更新为4.1.6版本的系列spring包后,servlet-context.xml报找不到org.springframework.web.servlet.view.InternalResourceViewResolver这个试图解析器类,后来发现MAVEN下载的spring-mvc 4.1.6版包居然是空包,没有任何类。
另外命名空间更换后也有可能出现.xml中的标签报错,这种可以在xml中输入<根据更换版本后的命名空间提示,找到对应标签进行替换。
17 使用REST风格编写@RestController时,默认是把返回内容转换为JSON等数据,所以要想跳转页面需要返回ModelAndView,例如
@RequestMapping("/show")
public ModelAndView show(ModelAndView mv) {
mv.setViewName("gnlist/imeidb"); //设置页面地址
return mv; //因为是@RestController 如果直接以字符串返回页面地址,会以json解析
}
18 使用@Aspect完成切面
注意:
a: 在springMVC 包含spring配置文件(context.xml)和MVC配置文件(DispatcherServlet-servlet.xml),这两个文件在web.xml中配置。当@Aspect注释的切面类中,包含这两个配置文件的bean时,需要在两个xml中都声明<aop:aspectj-autoproxy />,
即@Aspect中涉及到哪个xml的bean则那个xml就要声明<aop:aspectj-autoproxy />。否则无法生效。
经测试:写一个@Aspect切面,这个切面中涉及到@Controller和@Service中的方法,而本人将@Controller的bean扫描放在MVC配置文件中,而@Service的bean扫描放在spring配置文件中,这时只有两个配置文件都声明<aop:aspectj-autoproxy />,才能保证AOP全部生效。
b:注意aop要引入的jar,如果不全启动时会报错,或是AOP失效
aopalliance.jar ,aspectjrt.jar,aspectjweaver.jar ,cglib-nodep.jar
c: spring配置文件为"父",MVC配置文件为"子" ,spring配置文件先于MVC中的bean实例化 点击打开链接
d: 推荐先将切点范围缩小到某一个方法,成功后在扩大范围
e: 同一个方法可以有多个相同位置的切面,例如:两个@Aspect中,为同一个方法(相同切点)设置@before,两个都生效
19 TOMCAT启动项目时控制台报错
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/col]]
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
解决:一般为maven引入JAR包问题,版本不兼容或是下载不完整,可以依次注释POM.mxl中的依赖,排除是哪些包引起的。
这是多数因为有jar包没有下载完全引起的,需要将相应包重新下载。到maven的reposity目录下搜aether*****in-progress(可以搜aether或者in-progress都行)文件,如果存在,把这个文件对应的版本目录删除,刷新一下项目重新部署打包即可。
20 解决pom.xml文件META-INF\MANIFEST.MF (系统找不到指定的路径)的问题
Maven项目中的pom.xml文件的第一行,出现了xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径)的问题
原因:maven更新或者clean project不完全
解决办法:a.先clean project,再maven->update project。重复,直到问题消失
b.如果步骤a不起作用,那么可以找到出问题的工程,删除target文件夹下的所有文件或文件夹,再重复一下步骤a
21 DEBUG时显示MyBatis执行信息配置:
a.spring注册SqlSessionFactoryBean时,制定自定义配置文件位置(假设配置文件路径src\main\resources\mybatis\SqlMapConfig.xml)
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean" depends-on="dataSource">
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>
b.SqlMapConfig.xml设置日志种类(这里用LOG4J)
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
<setting name="logImpl" value="LOG4J"/>
</settings>
</configuration>
c.src\main\resources\log4j.xml中配置log4j的设置(com.zoomflight.mapper为项目中mybatis中的mapper接口包)
<logger name="com.zoomflight.mapper">
<level value="DEBUG" />
</logger>
22 网页中文乱码
首先HTML中<meta content="text/html; charset=utf-8">
然后保证HTML文件的保存格式是UTF-8
若是还是乱码,可能是浏览器的显示编码格式问题
(新版谷歌浏览器需要安装插件,才能修改页面编码。下载地址:谷歌浏览器编码插件)
23 相对路径
html,java工程中都会用到相对路径
./ 代表当前文件夹(可以省略)
../ 代表退出到当前文件位置的上一层文件夹
例如:
主文件夹 [
子文件夹1[ 文件夹a[index.html] ],
子文件夹2[index.js]
]
在index.html引入index.js,相对路径:../../子文件夹2/index.js
向上退两级 本地-> 子文件夹1 ->主文件夹 由主文件夹 进入 子文件夹2
23 字符编码过滤器 要放在最前面
更多推荐
所有评论(0)