SpringMVC学习篇(一)
1 MVC解释
M---model 模型,即数据,就是dao和bean
V----view 视图 网页 jsp 用来展示数据的
c-controller 控制器 不同的数据,展示在不同的页面上
2 springmvc的核心架构
1.1 图例展示
1.2 理解
springmvc的核心说白了就是servlet,然后把之前mvc架构中的model层拆分成了业务层(Service)和数据访问层(Dao,Data Access Object)
springmvc是spring的一个模块
3 spring mvc请求的流程图
4 springmvc实现后台数据的获取以及页面跳转
4.1 准备工作
4.1.1 pom.xml中导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.20</version>
</dependency>
4.1.2 pom.xml中设置打包方式为web工程
a 代码展示
<packaging>war</packaging>
b 使用说明
<!--设置打包方式,不设置的话默认就是java工程
有以下三个参数
jar 默认的 表示打包的是一个java工程
war web工程
pom 父工程
-->
4.1.3 在main文件夹下创建前端文件夹webapp文件夹
a 创建出来之后的效果图
b 补充
若没有出现蓝色小圆点,你需要检查以下两点
1 pom.xml是否配置了打包方式为war
2 pom.xml内容变动后是否点击了右侧刷新小图标
4.1.4 生成web.xml
a file-------Project Structure
b facets---->web(mvc)----->加号---->点击1.web.xml
c 点击ok按钮
d 再次点击ok按钮
e 点击ok按钮后 此时项目的结构如下所示
f 把WEB-INF 拖动到webapp下面
f.1 点击Refactor按钮
f.2 移动后项目结构图
4.2 创建springmvc的配置文件
4.2.1 resources—>new---->xml Configuration------>Spring Config
4.2.2 输入名称然后回车
4.2.3 创建成功时的项目结构图
4.3 在web.xml中配置mvc核心servlet
4.3.1 代码展示
<!--编码过滤器-->
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置mvc控制器-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--classpath是类路径 resource路径下的 不能用-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springMvc.xml</param-value>
</init-param>
<!--随容器启动加载 越小越先启动-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!--/不拦截jsp /*拦截所有jsp页面-->
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
4.3.2 代码分析
a servlet-name标签里面的内容任意取,只是要求Servlet标签和Servlet-mapping标签里面的值要保持一致
b servlet-class里面可以写dispatcherServlet,然后回车后就会自动补全的
c url-pattern里面只能是/,一定不能/*.因为想要jsp页面正常展示
d /*和/的区别
简单来说就是/* 会拦截所有资源(包含jsp页面)
会拦截除了jsp页面之外的所有资源,例如:html,css,静态资源
这时图片资源可能会出现404错误,这时就需要我们去进行放行的配置了
f 服务器默认是第一次被调用时的初始化,但是我们想springmvc在服务器一启动的时候就初始化,
因此就需要做如下配置
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc.xml</param-value>
</init-param>
其中param-name是固定写contextConfigLocation
param-value里面由两部分组成
第一部分是根据主配置文件的位置来的,因为笔者创建的主配置文件位于resource资源文件夹,隶属于src/main下面,
就是在src文件夹下的都要加classpath:,因此第一部分写的内容就是classpath:
第二部分是你所创建主配置文件(spring Config形式的)
h filter的配置是用于解决post请求乱码的问题
4.4 创建一个index.jsp页面,并在里面写一个简单的登录界面(表单提交)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="" method="get">
用户名:<input type="text" name="yhm">
密码:<input type="password" name="pwd">
<button>登录</button>
</form>
</body>
</html>
4.5 在java文件夹下创建com/controller文件夹
4.6 配置springMvc.xml
4.6.0 在springMvc.xml中配置组件扫描
<context:component-scan base-package="com.controller"></context:component-scan>
4.6.1 在springMvc.xml中开启mvc注解模式
<mvc:annotation-driven/>
4.6.2 在springMvc.xml中进行视图解析器的配置
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--使用注解,注入修改前缀和后缀-->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
4.7 在controller文件夹下面创建UserController类
package com.controller;
import org.springframework.stereotype.Controller;
/**
* Controller是语义化的,用于控制器组件的生成
*/
@Controller
public class UserController {
}
4.8 书写UserController类里面的具体内容
4.8.1 在UserController里面创建login1方法
a 代码展示
/*形参就是name属性*/
public String login1(String yhm, String pwd){
System.out.println("用户名:" yhm);
System.out.println("密码:" pwd);
/*跳到什么页面 就写什么名字 不要带上拓展名*/
/* return "jsp/b"*/
return "index";
}
b 代码分析
b.1 里面的形参名需要与form表单里面的name属性要保证一致的
b.2 因为暂时没有前后端分离,此时方法的返回值可以用String
b.3 方法的返回值直接填需要跳转的jsp页面名称,不需要写扩展名,如果jsp页面在文件夹里头,那就
4.8.2 在UserController里面配置请求映射
a 代码展示
@RequestMapping(value = "/login1",method = {RequestMethod.POST,RequestMethod.GET},
params = {"yhm","pwd"},
)
b 代码分析
b.1 value是配置访问该方法的地址,不必与方法名一致,访问的链接必须与其一致,不然就会访问错误
b.2 method是请求方式,多个请求可以用{}装,之中用,分隔
b.3 params是要求访问该地址必须要携带的两个参数,也是通过,进行分隔
4.8.3 完整的UserController类
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class UserController {
@RequestMapping(value = "/login2",method = {RequestMethod.POST,RequestMethod.GET},
params = {"yhm","pwd"}
)
/*形参就是name属性*/
public String login1(String yhm, String pwd){
System.out.println("用户名:" yhm);
System.out.println("密码:" pwd);
/*跳到什么页面 就写什么名字 不要带上拓展名*/
/* return "jsp/b"*/
return "index";
}
}
4.8.4 在index.jsp界面给form表单的action属性加上配好的value值
<form action="/login1" method="get">
用户名:<input type="text" name="yhm">
密码:<input type="password" name="pwd">
<button>登录</button>
</form>
4.9 测试
4.9.1 点击登录按钮前
4.9.2 点击登录按钮后
4.9.3 运行截图
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfekcb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01