最近在学习java的框架,简单学完ssh以后,为了工作,为了更高效率的开发,有必要学习一下springmvc,菜鸟一枚
只能简单的入门。
springmvc框架的简介:是一种在web层的框架,Spring MVC 框架主要由 DispatcherServlet、处理器映射器、处理器适
配器、处理器(控制器)、视图解析器、视图组成。初学者可能对这些不明白,我自己的学习方式是不管先弄一个demo出
来,然后根据案例在根据自己的理解去学习这些组件,学了一段时间以后,再回来,根据自己的理解理清整个程序的运
行流程
第一个springmvc案例
一个简单的表单的提交案例:
1、创建一个web工程
2、导入必须的jar包
3、引入springmvc的配置文件(刚开始什么都不需要做,只要将扫描包里面写成我们自己写的包)
4、在web.xml配置文件中配置一个转发器(代码都是固定的 ,可以先直接复制)
5、写处理的方法的类,相当于之前学习的servlet用来处理用户的请求以及转发页面等
6、编写jsp页面,创建一个表单的提交事件,通过表单提交发送数据给服务器
7、服务器接收到数据,然后做出处理,最后返回给客户端
下面贴上代码:
配置文件
web.xml
<?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_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>SpringMVCProject</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 配置SpringMVC前端控制器 -->
<servlet>
<servlet-name>mySpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定SpringMVC配置文件 -->
<!-- SpringMVC的配置文件的默认路径是/WEB-INF/${servlet-name}-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--启动服务器,加载SpringMVC控制器 -->
<!-- 设置这个以后,就可以让用户在发送请求是不需要等待很久 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mySpringMVC</servlet-name>
<!-- 设置所有以action结尾的请求进入SpringMVC -->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<!-- 配置springmvc中post提交中文乱码问题 -->
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
springmvc.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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--注解扫描 后面的包名是需要根据不同项目修改的-->
<context:component-scan base-package="com.yxc.web"/>
</beans>
MyController.java
package com.yxc.web;
/**
* springmvc中接收参数的集中方式
*/
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//通过这个注解就可以把这个类定义为转发器 用来处理各种请求
//相当于servlet类
@Controller
public class MyController {
//请求参数为login.action的请求会找到这个方法 然后执行这个方法
@RequestMapping("login.action")
public ModelAndView login(HttpServletRequest request) {
//创建一个模型页面对象,这个类可以设置模型和试图
ModelAndView modelAndView = new ModelAndView();
//在springmvc接收参数有很多的方式,这里先使用最原始的方法
//通过request对象请求中发送来的参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//将接收的参数保存在域对象中,转发到其它页面可以取出数据
modelAndView.addObject("username",username);
modelAndView.addObject("password",password);
//访问成功以后可以跳转的页面
modelAndView.setViewName("/success.jsp");
return modelAndView;
}
}
两个jsp页面:
index.jsp中只是写了一个表单,然后点击提交就会发送请求
success.jsp就是请求成功以后跳转的页面,并且简单的通过EL表达式取出数据
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>
<form action="${pageContext.request.contextPath}/login.action" method="post">
用户名:<input type="text" name="username"><br><br>
密码:<input type="password" name="password"><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
success.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>
<h1>接收参数</h1>
用户名:${username}
密码:${password}
</body>
</html>
所需的jar包如下:
最后总结一下执行的流程:当然前期只是简单的,真正的内部实现原理还要等学习完后面的一些组件才能讲解
1、首先我们在jsp页面中通过表单发送请求
2、系统会查看web.xml中发送的请求是不是符合要求的,符合要求的,交给配置好的转发器处理,不符合要求的,直接报错
3、转发器收到请求,根据请求信息的参数(login.action)到我们自己写的转发器类(就是我们在类上面注解了@Controller的类)中找到对应请求参数的方法,如果没有找到机会报404找不到,如果找到就会开始执行方法
然后根据执行方法将数据和页面返回给客户端
上面的执行流程只是我们看的见得,我们自己手写的代码中的流程,其实springmvc内部还有很多的控件是自行完成的,我们不需要编码,但是又有必要了解内部的流程,这些后续学习以后总结。
这只是一个简单的入门程序,在我个人看来,学习框架首先得自己先跑出来才有学习下去的想法,不然看书听视频,根本不知道怎么回事,动手实现了,然后再去学习,看书,才能更好的理解它(纯属个人观点)