SpringMVC系列一之入门程序


SpringMVC是MVC中的一个非常优秀的框架。它是前台网页和后台代码的桥梁。

一、MVC

MVC是 model、view、和controller的缩写,分别代表web应用程序中的三种职责:
model-模型:用于存储数据。类比于student表和Student这个实体类
view-视图:向控制器提交数据,显示模型中的数据。类比于网页页面
controller-控制器:根据视图提出的请求,判断将请求和数据交给哪个模型处理,处理后的有关结果交给哪个视图更新显示。类比于一个规则。这个规则规定了输入某个url地址后,由哪个类的哪个方法来处理,之后会返回哪个页面。

二、入门程序

创建工程以及说明

  1. 创建工程。此工程不再是普通的Java Project。而是一个动态网页工程(Dynamic Web Project)
    在这里插入图片描述
    说明:
    上图中需要设置Tomcat的版本和安装路径。版本选择8.5,安装路径选择Tomcat解压后的路径。Tomcat使用时,只需解压不用配置。
    在这里插入图片描述
  2. 工程目录说明

相比普通java projet,动态网页工程目录结构有了比较大的变化,例如,src文件放在了JavaResource下。还有许多新的文件夹。没关系,随着后面的学习慢慢的加深了解。
在这里插入图片描述

导入Jar包

  1. 在动态工程中,我们直接将jar包复制粘贴到:工程名/WeContent/lib这个目录下。所需的jar包有如下9个
    在这里插入图片描述

编写配置文件

  1. web.xml
    这个配置文件是Tomcat启动时,用来初始化web应用的配置信息,例如设置欢迎页。咱们配置的目的是使用SpringMVC框架来处理URL请求。具体内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>SpringMVC01</display-name>
  <welcome-file-list>
  	<!--设置欢迎页-->
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!--
  配置servlet。通俗来讲,servlet专门用来接收客户端的请求,接收客户端的请求数据,然后调用底层service,进行相关业务处理,并生成结果。
  执行路线:浏览器http请求------》tomcat服务器-------》到达servlet-----》调用某些方法----》返回数据
-->
  <servlet>
  	<!--给servlet起个名字-->
    <servlet-name>SpringMVC</servlet-name>
    <!--设置servlet的具体实现,使用spriMVC的DispatcherServlet-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<!--具体使用哪个servlet-->
    <servlet-name>SpringMVC</servlet-name>
    <!--对什么样的路径进行拦截处理。-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
  1. SpringMVC- servlet.xml
    在WebContent目录下创建一个名为SpringMVC- servlet的xml。它其实是一个spring类型的配置文件。SpringMVC也属于Spring框架,它要想运行,必须要有配置文件,类似于之前的Spring项目中的applicationContext.xml。
<?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">
        
        <!--SpringMVC 项目需要使用注解,配置要扫描的包名-->
        <context:component-scan base-package="com.edu.tjdz.geng"></context:component-scan>
		
		<!--配置SpringMVC的一个固定bean,这个bean内部的属性用来指定DispatcherServlet处理请求后,要返回页面所在的目录和后缀>
		<bean id="viewResolve" class="org.springframework.web.servlet.view.InternalResourceViewResolve">
			<!--指定目录-->
			<property name="prefix" value="/WEB-INF/view/view/"></property>
			<!--指定后缀-->
			<property name="suffix" value=".jsp"></property>
		</bean>        
</beans>

编写程序

  1. 在src下创建com.edu.tjdz.geng.control包。包下创建一个类:MyControl.java
package com.edu.tjdz.geng.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
	@RequestMapping("hello")
	public String test() {
		System.out.println("in hello");
		return "success";
	}
}

编写测试页

7.在 在WebContent目录下创建一个名为index的jsp文件
创建方法:

在这里插入图片描述

在页面中添加一个超链接标签,href设置为hello。修改页面编码,变为UTF-8

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="hello">测试</a>
</body>
</html>

此时,jsp中有一个错误,是因为现在tomcat的Library还未导入。解决方法:https://blog.csdn.net/Sunny5319/article/details/80794184

运行项目

  1. 配置tomcat在这里插入图片描述
  2. 将项目添加到Tomcat中
    在这里插入图片描述
    在网页中访问项目的时候,需要输入localhost:8080/项目名
    在上图中点击测试这个链接后最后出了一个404错误。这是为什么呢????
    通常出现404,不是项目代码有错误,而是要访问的资源不存在。具体有两种情况:第一种、要访问的html或jsp页面现在还没有在项目中存在。第二种、访问的url路径写错了
    大家仔细看一下红框中的路径,里边有一个success.jsp。这个文件目前还无法在工程中找到,因为我们从没有创建过
    在这里插入图片描述
    我们创建这个文件。在/WEB-INF/下创建view文件夹,在view下创建success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>my</title>
</head>
<body>
	<h1>Hello, SpringMVC</h1>
</body>
</html>

现在重新访问,便可以访问到了。

思考

到底是在哪里指定了点击 测试 这个连接就会返回success.jsp呢?

三、入门程序说明

SpringMVC流程

流程图如下所示,大家要明白url各个部分都是对应了哪一个环节。其中ip是由域名服务器来处理的,没有在图中画出来。
在这里插入图片描述

配置文件说明

上面的web.xml配置文件中采用的是文件名默认和路径默认的spring配置文件,也可以自定义,方式是在servlet中使用initparam标签配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>SpringMVC02</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>SpringMVC</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!--自定义SpringMVC配置文件的路径。配置文件名任意  -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:SpringMVC.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>SpringMVC</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

在JavaResources下新建名为conf的source floder。将SpringMVC配置文件放到该文件夹下
在这里插入图片描述

RequestMapping注解说明

RequestMapping注解用来将url中的请求路径映射到具体的请求处理方法。

如下所示,除了可以在方法上添加RequestMapping注解,还可以在类上面添加RequestMapping注解,相应的访问时候的url也有localhost:8080/SpringMVC02/hello变为localhost:8080/SpringMVC02/user/hello
这样做的目的是分类,将不同controller 根据业务归为不同类别。

RequestMapping常用的属性有vale,method,params。这些属都是属于限制性条件,只有都符合这些条件的url才能被该方法处理。下面代码中指定了请求访问时使用的http方式。

package com.edu.tjdz.geng.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/user")
public class MyController {
	
	@RequestMapping(value="/hello", method = RequestMethod.GET)
	public String test() {
		
		System.out.println("in test:get");
		return "success";
	}
	
	@RequestMapping(value="/hello", method = RequestMethod.POST)
	public String test1() {
		
		System.out.println("in test:POST");
		return "success";
	}
}

对应的jsp测试页index.jsp。大家运行起来项目,感受一下两种方式的不同。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="user/hello">测试</a>
	
	<br/>
	<form action="user/hello" method="post">
		<input type="submit" value="提交"/>
	</form>
</body>
</html>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值