详细教程见:www.bilibili.com/video/BV1P1…
1.SpringMVC入门程序
-
添加依赖(spring-context、spring-webmvc、javax.servlet-api、jsp-api);
-
两种方式添加web模块(Maven默认项目添加web模块/Maven的webapp模块);
-
编写web.xml配置文件;
-
编写spring-mvc.xml配置文件;
-
在spring-mvc.xml文件中指定自动扫描包的路径cn.edu;
-
在首页index.jsp中指定访问的超链接:
<a href="${pageContext.request.contextPath}/zhuce">cccccccccccccccc!</a> -
编写cn.edu.XXXController;
2.使用Maven默认项目添加web模块||Maven的webapp模块启动SpirngMVC入门程序有何不同之处
maven默认项目添加web模块:
- 新建maven默认项目;
- settings->搜索“add framework support...”-> 右键add keyboard shortcut -> 点击一下文本框->输入键盘;
- 把光标放在项目上,使用快捷键(ctrl + alt + ,)会自动web模块,此时生成的web目录是与src同一级路径,并且生成的web.xml配置文件的版本是4.0;
- 编写代码:依赖文件pom.xml、web.xml、spring-mvc.xml、index.jsp、controller、配置tomcat;
- 点击启动项目之后运行的UI界面上的"XXXX"超链接,会出现找不到资源路径dispatchXXX,此时可以在artifacts中==手动添加lib目录==或者重新添加一个web app(重新添加的话,idea会自动添加lib目录并导入当前项目所依赖的jar包,但是,==lib目录并不会根据项目中的依赖jar变化而实时更新==);
- 通过这种方法生成的lib目录,如果在maven中修改依赖文件,那么lib中的内容不会实时更新,都需要自己手动更新lib目录下的内容(手动删改lib的内容或者重新添加web app)。
- 如果重新添加web模块的话,idea会自动生成lib文件夹并在lib路径下添加当前项目的依赖**(当前项目所使用到的jar包依赖)**。
但是使用webapp模块则可以实时更新
总结:默认项目下不会有lib文件夹目录,需要自己新建lib文件夹或者新建web appXX(idea会自动添加了lib,但lib里面的jar包是此时项目下使用到的jar包,不会进行实时更新)。
Maven的webapp模块:
生成的web.xml配置文件的版本为2.3会造成url路径乱码问题,需要自己手动更新为更高的版本模版(4.0)
- 创建maven带有webapp的项目,会发现创建的webapp文件夹是在==main路径下==;
- 查看lib文件夹中的内容;
- 添加依赖文件,以及编写其他代码;
- 再次查看lib文件夹中的内容,会发现lib中的jar是进行实时更新的;
- 运行。
总结:Maven的webapp模块会自动建立lib目录并且实时更新,会较为更加的方便。
-
jsp页面中,设置编码UTF-8 防止乱码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> -
默认生成的web.xml为2.3版本,该版本会造成前端请求的URL地址乱码问题,需要将web.xml中的模版修改为更高版本:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <display-name>Archetype Created Web Application</display-name>
3.前端发送给后端的数据为中文时,显示乱码。(添加过滤器)
<!--加入过滤器(解决前端发送过来的数据为乱码问题)-->
<filter>
<filter-name>encoding</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>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>