网站建设后还有什么费用,拖拽式wordpress建站,网站开发硬件成本,枸橼酸西地那非片多长时间见效文章目录 一.SpringMVC的概念1.1 Spring的概念1.2 MVC和SpringMVC的关系 二.SpringMVC步骤2.1 创建一个springMVC项目2.2 获取参数的功能2.3 输出参数的功能 三.SpringMVC的注解介绍3.1 获取参数3.1.1 获取参数单个参数3.1.2 获取多个参数3.1.3获取对象3.1.4 获取json对象3.1.5… 文章目录 一.SpringMVC的概念1.1 Spring的概念1.2 MVC和SpringMVC的关系 二.SpringMVC步骤2.1 创建一个springMVC项目2.2 获取参数的功能2.3 输出参数的功能 三.SpringMVC的注解介绍3.1 获取参数3.1.1 获取参数单个参数3.1.2 获取多个参数3.1.3获取对象3.1.4 获取json对象3.1.5 从基础的url获取参数3.1.6 获取上传文件3.1.7 获取Cookie3.1.8 获取header3.1.9 获取Seesion 3.2 返回数据3.2.1 返回静态页面3.2.2 返回非静态页面 四.其他 一.SpringMVC的概念
1.1 Spring的概念
SpringMVC是一个Java框架用于开发基于Java的Web应用程序。它是Spring框架的一部分专注于在Web应用程序中实现Model-View-ControllerMVC设计模式。MVC模式是一种常用的软件设计模式用于将应用程序的逻辑分离成三个主要组件模型Model、视图View和控制器Controller从而实现代码的解耦和更好的可维护性。 大家看下面的图片,就知道现在这个流程了.
1.2 MVC和SpringMVC的关系
MVCModel-View-Controller是一种软件设计模式用于将应用程序的逻辑分离成三个主要组件模型Model、视图View和控制器Controller。这个模式的目的是实现代码的解耦和更好的可维护性。
SpringMVC是Spring框架的一部分专注于在Java Web应用程序中实现MVC设计模式。因此可以说SpringMVC是Spring框架对MVC模式的具体实现。它提供了一组组件和工具用于开发基于Java的Web应用程序并按照MVC模式来组织应用程序的代码结构。
下面是MVC和SpringMVC之间的关系
MVC是一种设计模式MVC是一种通用的设计模式不仅用于Web应用程序还可以用于其他类型的应用程序。它将应用程序划分为模型、视图和控制器每个组件有自己的职责从而实现了代码的分离和解耦。
SpringMVC是MVC在Spring框架中的实现SpringMVC是Spring框架为Web应用程序提供的MVC实现。它通过控制器Controller、视图View、模型Model、处理器映射器Handler Mapping、视图解析器View Resolver等组件来实现MVC模式。
Spring框架是更大范围的解决方案Spring框架提供了广泛的功能和模块用于开发企业级Java应用程序。除了SpringMVC它还包括Spring Core核心容器、Spring Security安全、Spring Data数据访问、Spring AOP面向切面编程等模块。SpringMVC是Spring框架的一个模块用于处理Web应用程序的请求和响应。
综上所述MVC是一种通用的设计模式而SpringMVC是Spring框架对MVC模式在Web应用程序中的具体实现。使用SpringMVC开发者可以更轻松地构建灵活可扩展的Java Web应用程序并且能够充分利用Spring框架的其他功能和特性。
二.SpringMVC步骤
我们学习SpringMVC需要掌握一下3个功能:
连接的功能︰将用户浏览器和Java程序连接起来也就是访问一个地址能够调用到我们的 Spring程序。获取参数的功能︰用户访问的时候会带一些参数在程序中要想办法获取到参数。输出数据的功能:执行了业务逻辑之后要把程序执行的结果返回给用户。 对于Spring MVC 来说掌握了以上3个功能就相当于掌握了Spring MVC。 我们先来做一个简单的demo
2.1 创建一个springMVC项目
实际上springMVC项目可以基于springboot创建,创建一个sprigboot项目,再勾选上springWeb就创建好了. 创建一个UserController 类实现用户到Spring程序的互联互通. 代码入下:
public class UserController {public String hi(String name) {return spring mvc hi name;}}
2.2 获取参数的功能
获取参数的功能,就是依赖一个注解,代码如下:
public class UserController {RequestMapping(/hi)public String hi(String name) {return spring mvc hi name;}}2.3 输出参数的功能
输出参数的功能,要在类上加入一个注解,这个注解就是RestController 代码如下:
RestController
public class UserController {RequestMapping(/hi)public String hi(String name) {return spring mvc hi name;}}最后的大致流程如图所示.
看了上面的流程之后,我接下来会介绍获取参数和答应参数的一些注解
三.SpringMVC的注解介绍
3.1 获取参数
3.1.1 获取参数单个参数
三种请求方式 RequestMapping GetMapping PostMapping 代码如下: RequestMapping(/e1)public String example(String str){return hello world str;}GetMapping(/e2)public String example2(String str){return hello world str;}PostMapping(/e3)public String example3(String str){return hello world str;}3.1.2 获取多个参数
代码如下: RequestMapping(/e4)public String example4(String username,String password){return hello world username password;}3.1.3获取对象
获取对象的步骤 1.检查控制器方法的参数列表发现有一个类型为User的参数。 2.根据请求参数名username和password ,id 和age 与User类中的属性名匹配创建User对象。 3.将请求参数的值绑定到User对象的属性上。 4.将创建并填充好的User对象传递给saveUser方法作为参数。 RequestMapping(/reg)public Object example6(User user){System.out.println(user);return user;}3.1.4 获取json对象
这里具体的步骤就是: 1.前端发送JSON数据前端通过AJAX或其他方式将JSON数据发送给后端。确保请求的Content-Type设置为application/json以便告知后端该请求包含JSON数据。
2.创建Java对象在后端的控制器方法中创建对应的Java对象用于接收JSON数据。这个Java对象通常是一个POJOPlain Old Java Object包含与JSON数据字段对应的属性。
3.使用RequestBody注解在控制器方法参数中使用RequestBody注解来接收JSON数据并将其转换为Java对象。
4.处理JSON数据在控制器方法中你可以对接收到的Java对象进行业务逻辑的处理。 代码如下: RequestMapping(/reg2)public Object example7(RequestBody User user){System.out.println(user);return user;}这里我们就不构造前端界面了,我们直接使用postman来构造请求.
3.1.5 从基础的url获取参数
代码如下:
//6.从基础的url获取参数RequestMapping(/url/{username}/{password})public String example8(PathVariable String username,PathVariable String password){return username username password password;}3.1.6 获取上传文件
具体步骤: 1.客户端发送一个带有文件上传的multipart/form-data类型的POST请求时 2.Spring MVC会将上传的文件数据自动绑定到file参数
具体代码如下: RequestMapping(/myupload1)public Object upload1(RequestPart(myimg) MultipartFile file){File file1new File(D:\\Study\\java\\myimg.jpg);try {file.transferTo(file1);return true;}catch (IOException ioException){ioException.printStackTrace();}return false;}这里的如果反复提交文件,文件会被覆盖,为了防止我们上传文件,被覆盖,我们修改了一下代码: RequestMapping(/myupload2)public Object upload2(RequestPart(myimg) MultipartFile file) {String fileName UUID.randomUUID() // 文件名file.getOriginalFilename().substring( // 文件后缀file.getOriginalFilename().lastIndexOf(.));File saveFile new File(D:\\Data\\ fileName);try {file.transferTo(saveFile);return true;} catch (IOException e) {e.printStackTrace();}return false;}3.1.7 获取Cookie
RequestMapping(/getCk)public Object getCk(CookieValue(value java,required false) String java){return java;}3.1.8 获取header RequestMapping(/gethd)public Object getHeader(RequestHeader(Host) String ht) {return Host - ht;}3.1.9 获取Seesion /*** 存储 session*/private static final String SESSION_KEY USERINFO_SESSION_KEY;RequestMapping(/setsess)public void setSess(HttpServletRequest request) {HttpSession session request.getSession();session.setAttribute(SESSION_KEY, zhangsan);}/*** 获取 session*/RequestMapping(/getsess)public Object getSession(SessionAttribute(SESSION_KEY) String name) {return session- name;}3.2 返回数据
3.2.1 返回静态页面 3.2.2 返回非静态页面 四.其他
补充以下请求转发和充定向的区别: 执行位置 重定向是在客户端浏览器发生的即在服务器端处理完当前请求后服务器会发送一个特殊的HTTP响应状态码302或者303和一个新的URL给客户端然后客户端会重新向新的URL发送请求实现页面跳转。 请求转发是在服务器端发生的即在服务器端处理完当前请求后服务器会将请求转发到指定的目标URL并由服务器端直接返回目标URL对应的响应客户端并不知道页面的跳转。 URL变化 重定向会改变浏览器的URL地址因为在重定向后客户端会重新向新的URL发送请求所以浏览器的地址会变成新的URL。 请求转发浏览器的URL地址不会改变因为请求转发是服务器端直接转发请求客户端并不知道页面的实际跳转。 请求对象和响应对象 重定向在重定向中客户端会发送两次请求第一次请求由服务器处理并发送重定向响应第二次请求是客户端根据重定向响应重新发送的。 请求转发在请求转发中只有一次请求请求是直接由服务器处理的并直接将响应返回给客户端。 数据传递 重定向由于两次请求因此数据传递比较麻烦一般通过URL参数或Session来传递数据。 请求转发由于只有一次请求因此数据传递相对简单可以通过请求属性Request Attribute来传递数据。 适用场景 重定向适用于页面跳转后客户端需要刷新或新加载数据的情况例如表单提交成功后的跳转、登录成功后的跳转等。 请求转发适用于页面跳转后客户端不需要刷新或新加载数据的情况例如服务器内部的页面跳转、过滤器的页面跳转等。