如何去理解SpringMVC并成功运行第一个项目

如何理解SpringMVC?

一句话概括:请求信息到达DispatchServlet,Servlet中根据请求信息与配置文件找到映射的视图资源

然后使用RequestDispatch请求转发到该视图资源。
一个简单的流程图分析
在这里插入图片描述
通过简单例子去学习SpringMVC框架
我使用的软件Spring tool
可通过官网下载或者我的下载链接下载
链接:https://pan.baidu.com/s/1Dm3E7IR-kuTWekxbCKnrOg
提取码:u0ik

第一步创建项目
在eclipse中新建项目springmvc,使用dynamic web project的方式在这里插入图片描述
在这里插入图片描述
第二步配置环境
1 每一个框架的学习都离不开jar包,先导入相关的jar包(我是一次性全部导入jar),放入WEB-INF/lib下
下载地址
链接:https://pan.baidu.com/s/1d1b0v1jBk3JM0s7pHHWphA
提取码:x5bs
在这里插入图片描述
2 在web.xml文件里面部署DispatcherServler,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">在这里插入代码片
	<servlet>
	<!--DispatcherServlet就是一个Servlet
	  同时DispatcherServletk(前端控制器)可以有多个,通过servlet-name区分
	  决定name-servlet.xml配置文件怎么去写 -->
		<servlet-name>springmvc</servlet-name>
		<servlet-class>
		<!-- 指定servlet类 -->
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup><!--是启动顺序 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name><!-- 上下servlet-name一致 -->
		<url-pattern>/</url-pattern><!-- 拦截带/请求  例如/login-->
	</servlet-mapping>
</web-app>

3 在WEB-INF目录下创建 springmvc-servlet.xml
springmvc-servlet.xml 与上一步中的springmvc两个加粗的地方要一致

在这里插入图片描述
springmvc-servlet.xml 的代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!--  <bean id="simpleUrlHandlerMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/index">indexController</prop>
			</props>
		</property>
	</bean>
	<bean id="indexController" class="controller.IndexController"></bean>-->
	<!-- name将用来匹配请求的资源 
	spring将使用实现了Controller接口的LoginController的handleRequest方法来返回映射的视图资源 -->
	
	<!-- name="/login"表示访问路径/login会交给LoginController的类去处理 -->
	 <bean name="/login" class="controller.LoginController"></bean>
     <!-- 配置映射处理器:根据bean(自定义Controller)的name属性的url去寻找handler;
      springmvc默认的映射处理器是BeanNameUrlHandlerMapping-->
	<bean name="/register" class="controller.RegisterController"></bean>
</beans>

第三步 创建Controller类
在这里插入图片描述
LoginControllerl类

public class LoginController implements Controller {

	//ModelAndView对象(包含模型数据、逻辑视图名)
	//handleRequest 处理请求的方法
	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0,HttpServletResponse arg1)throws Exception{
		return new ModelAndView("/WEB-INF/jsp/login.jsp");
	}
}

RegisterController类

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class RegisterController implements Controller{
   public ModelAndView handleRequest(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception{
		return new ModelAndView("/WEB-INF/jsp/register.jsp");
	}
}

第四步创建index.jsp页面
在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%
   String path = request.getContextPath();
   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 %>
 <!-- request.getSchema()可以返回当前页面使用的协议,“http”
 request.getServerName()可以返回当前页面所在的服务器的名字,“localhost"
 request.getServerPort()可以返回当前页面所在的服务器使用的端口,就是8080,
 request.getContextPath()可以返回当前页面所在的应用的名字,就是上面例子中的springMVC
这四个拼装起来,就是当前应用的跟路径了 -->
<!DOCTYPE html>
<html>
<head>
 <base href="<%=basePath%>"><!-- <base href="...">是用来表明当前页面的相对路径所使用的根路径的 -->
   <!-- 服务器会自动把 <base ...>指定的路径和页面内的相对路径拼装起来,组成完整路径。 -->
 <meta http-equiv="Conter-Type"  contentType="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="">
   没注册的,去<a href="register">注册</a>!<br>
  以注册的,去<a href="login">登陆</a>!
</body>
</html>

第五步 创建login.jsp和register.jsp
在这里插入图片描述
点击index里面登陆,实现页面跳转的功能
在这里插入图片描述
在这里插入图片描述

效果演示

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值