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 字符编码过滤器 要放在最前面

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐