文章目录
前言
提示以下只是测试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: 表示对该资源的请求。注意,后面是两个星号**。-->