springmvc创建入门项目的步骤
前言
提示以下只是测试springmvc的入门测试项目,所以没写操作数据库的方法和类
项目是基于maven进行创建的
提示:以下是本篇文章正文内容,下面案例可供参考
一、创建maven项目进行环境搭建
(一)、创建maven项目
1、创建一个新项目
2、选Maven进行创建
3、自定义项目名称
4、因为我没选web的模板所以要自己添加web
5、添加web
6、更改web文件夹的位置
7、项目文件基本创建完成
(二)、在pom.xml文件添加需要springmvc的依赖和插件
1、添加依赖和插件
提示:
<!-- 依赖 --> <dependencies> <!--spring-webmvc依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.13.RELEASE</version> </dependency> <!--springmvc底层还是servlet,所以必须添加serlvet依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!-- 作用在打包时确保servlet不会打包进去 --> <scope>provided</scope><!--因为tomcat插件的有提供servlet,所以如果打包进去插件就会启动会失败--> </dependency> </dependencies> <!-- 插件 --> <build> <plugins> <!-- 编码和编译和JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version><!-- 根据自己电脑中的jdk版本选择maven的版本,如果不匹配可能报错 --> <configuration> <source>11</source><!-- 自己电脑中的jdk版本 --> <target>11</target> </configuration> </plugin> <!--tomcat插件--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> <port>8080</port><!-- 可自定义端口,一般只要在8000以上就行 --> </configuration> </plugin> </plugins> </build>
2、根据自己需求定义项目需要打包的类型
3、下载
提示:这一步电脑时需要联网才能下载这些依赖和插件的。
提示:如果没出现上方的按钮就按以下步骤
4、下载完成后进行查看
提示:出现进度条就代表在下载 提示:下载完成查看下载的依赖。
三、创建Spring和SpringMVC的配置文件
在运行时springmvc时会用到两个容器: 1、spring容器:用来处理类与类之间的逻辑关系,
2、springmvc容器:用来处理前端和后端的逻辑关系
1、创建spring的配置文件
2、为spring容器添加配置和约束
注意:由于程序运行时是先调用springmvc容器,然后再由springmvc容器调用spring容器的 所以这边扫描的包不要把关于控制器的包也写进去
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!-- Spring配置文件:除了控制器之外的bean对象都在这被扫描 --> <context:component-scan base-package="com.wen.service,com.wen.dao"/> </beans>
3、在创建一个springmvc的配置文件
提示: 创建步骤跟上面一样文件名字自定义
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- SpringMVC配置文件:控制器的bean对象在这被扫描 --> <context:component-scan base-package="com.wen.controller"/> <!-- 启动mvc的注解--> <mvc:annotation-driven/> <!-- 配置视图解析器的配置--> <!-- 调用视图解析器的方法:InternalResourceViewResolver--> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/"/><!--默认访问路径是webapp根路径下的,如果webapp下还有其他文件夹就写:/webapp/文件夹名--> <!-- 后缀 --> <property name="suffix" value=".jsp"/><!-- 如果是index.html文件,就写html --> </bean> </beans>
四、在web.xml中读取Spring和SpringMVC的配置文件
<?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"> <!-- Spring配置--> <!-- 1、让监听器知道spring的配置文件的位置--> <context-param> <param-name>contextConfigLocation</param-name> <!-- spring配置文件的文件名 --> <param-value>classpath:applicatiooContext.xml</param-value> </context-param> <!-- 2.创建监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- springmvc的 核心前端中央 控制器--> <!-- servlet的封装--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- servlet读取springmvc的配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <!-- springmvc配置文件的文件名 --> <param-value>classpath:springmvc.xml</param-value> </init-param> <!-- 在容器创建servlet对象的优先级. 数字越小越先创建--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- 设置访问路径后必须加.do才能进行访问--> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
五、根据项目的需求来创建文件夹和类
1、创建文件夹(一般是把Java的源码放这里面)
2、需要的文件夹
提示: controller文件夹 :一般是放web控制器的服务类(就是根据前端发来的请求进行数据的处理,然后返回给前端) dao文件夹 :一般是放数据库的操作类(数据库相关操作数据访问等) pojo文件夹 :一般是放实体类(用来数据库映射对象) service文件夹 :一般是做相应的业务逻辑处理的服务类
3、创建service类
提示:由于只是入门springmvc的测试项目,所以我就没用数据库,然后实体类和数据库的操作类就不写了。 1、service(就模拟以下service的方法在controller那被调用就行)
package com.wen.service; import org.springframework.stereotype.Service; @Service public class TeamService { public void hello(){ System.out.println("TeamService---------hello"); } public void update(){ System.out.println("TeamService---------update"); } public void add(){ System.out.println("TeamService---------add"); } }
4、创建jsp文件
index.jsp文件
<html> <head> <title>index</title> </head> <body> <h1>${team}</h1> <form action="/update.do" method="post"> <button type="submit">update的post提交方式</button> </form> <form action="/add.do" method="get"> <button type="submit">add的get提交方式</button> </form> </body> </html>
update.jsp文件
<html> <head> <title>update</title> </head> <body> <h1>team--------update</h1> </body> </html>
add.jsp文件
<html> <head> <title>add</title> </head> <body> <h1>team--------add</h1> </body> </html>
5、创建controller类
package com.wen.controller; import com.wen.service.TeamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller //@RequestMapping("/team") /如果在类上加@RequestMapping("/team")则在此类中的所有方法的请求路径前都要加上/team //如:原先是:http://localhost:8080/update.do 现在:http://localhost:8080/team/update.do public class TeamController { @Autowired private TeamService teamService; @RequestMapping("/index.do")//设置请求路的径 public ModelAndView hello(){ teamService.hello(); ModelAndView mv = new ModelAndView(); mv.addObject("team", "teamindex----hello");//相当于request.setAttribute("team", "teamindex----hello") //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了: /文件夹/index.jsp mv.setViewName("index");//未来要经过Springmvc的视图解析器处理,转换成物理资源路径。/相当于request.getRequestDispatcher("index.jsp").forward(); return mv; } //设置请求路的径 /规定请求的方式是get @RequestMapping(value = "/add.do",method = RequestMethod.GET)//请求方式设定后,只能用get的提交方式 public ModelAndView add(){ teamService.add(); ModelAndView mv = new ModelAndView(); //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了: /jsp/add.jsp mv.setViewName("/jsp/add");//要经过Springmvc的视图解析器处理,转换成物理资源路径。 return mv; } //设置请求路的径 /规定请求的方式是post @RequestMapping(value = "/update.do",method = RequestMethod.POST)//请求方式设定后,只能用post的提交方式 public ModelAndView update(){ teamService.update(); ModelAndView mv = new ModelAndView(); //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了: /jsp/team/update.jsp mv.setViewName("/jsp/team/update");//要经过Springmvc的视图解析器处理,转换成物理资源路径。 return mv; } }
九、运行测试
运行后访问的地址: 访问结果:
由于给add.do和update.do添加了访问方式的限制所以要注意请求方式:
10、补充url-pattern解析
1、如果把标签中的.do改为/时访问静态资源会显示不出来.
在index.jsp页面添加一张图片,如果节点中的值为*.do,图片可以正常访问,但是如果为/就不能访问。 1、项目中添加图片,同时修改index.jsp页面
2、此时访问图片无法显示
1、.do 在没有特殊要求的情况下,SpringMVC 的前端控制器 DispatcherServlet 的常使用后辍匹配方 式,可以写为.do 或者 *.action, *.mvc 等。 2、/ 可以写为/,但是 DispatcherServlet 会将向静态内容–例如.css、.js、图片等资源的获取请求 时,也会当作是一个普通的 Controller 请求。前端控制器会调用处理器映射器为其查找相应的处理器。肯 定找不到啊,所以所有的静态资源获取请求也均会报 404 错误。
2、如果的值配置为/后,静态资源可以通过以下两种方法解决。
1、在springmvc的配置文件中添加如下内容:(第一种)
<mvc:default-servlet-handler/> <!--声 明 了 <mvc:default-servlet-handler /> 后 ,springmvc框架会在容器中创建 DefaultServletHttpRequestHandler处理器对象。该对象会对所有进入 DispatcherServlet的URL 进行检查。 如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet 处理。 一般的服务器都有默认的 Servlet。 例如咱们使用的Tomcat服务器中,有一个专门用于处理静态资源 访问的 Servlet 名叫 DefaultServlet。其<servlet-name/>为default。可以处理各种静态资源访问 请求。该Servlet注册在 Tomcat 服务器的 web.xml 中。在 Tomcat安装目录/conf/web.xml。-->
2、在springmvc的配置文件中添加如下内容:(第二种)
<mvc:resources location="/imges/" mapping="/images/**" /> <!--location: 表示静态资源所在目录。当然,目录不要使用/WEB-INF/及其子目录。 mapping: 表示对该资源的请求。注意,后面是两个星号**。-->