当前位置: 首页 > news >正文

外部链接链轮的建设对于网站提做网站网站条件

外部链接链轮的建设对于网站提,做网站网站条件,做系统用什么网站,wordpress页面顶部登录1.什么是MVCMVC的概念MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的逻辑、数据和用户界面分离为三个独立的部分。这种分离提高了代码的可维护性、可扩展性和可重用性。MVC的组成部分Model(模型) 模型…

1.什么是MVC

MVC的概念

MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的逻辑、数据和用户界面分离为三个独立的部分。这种分离提高了代码的可维护性、可扩展性和可重用性。

MVC的组成部分

Model(模型)
模型负责处理数据和业务逻辑。它直接管理数据,包括数据的存储、检索和更新。模型通常与数据库交互,但不涉及用户界面的任何细节。

View(视图)
视图是用户界面的部分,负责展示数据(从模型获取)并接收用户输入。视图通常是动态生成的页面或界面组件,不包含业务逻辑。

Controller(控制器)
控制器作为模型和视图之间的桥梁,处理用户输入并更新模型或视图。它接收用户请求,调用模型处理数据,并选择适当的视图进行渲染。

2.什么是SpringMVC?

SpringMVC 的定义

SpringMVC 是 Spring 框架的一个模块,专为构建基于 Java 的 Web 应用程序而设计。它基于 Model-View-Controller (MVC) 架构模式,提供了一种结构化的方式来分离业务逻辑、数据展示和用户交互。SpringMVC 通过DispatcherServlet 作为核心控制器,协调请求处理流程,支持灵活的配置和扩展。

核心组件

  • DispatcherServlet:前端控制器,接收所有请求并分发给对应的处理器。
  • HandlerMapping:解析请求 URL,确定对应的控制器(Controller)。
  • Controller:处理业务逻辑,返回模型数据(Model)和视图名称。
  • ViewResolver:将视图名称解析为具体的视图技术(如 JSP、Thymeleaf)。
  • ModelAndView:封装模型数据和视图信息的容器。

3.学习SpringMVC

主要分以下三个⽅⾯:

  • 建⽴连接:将⽤⼾(浏览器)和Java程序连接起来,也就是访问⼀个地址能够调⽤到我们的 Spring 程序。
  • 请求:⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数 的功能.
  • 响应:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾,也就是响应

建立连接

在SpringMVC中使⽤ @RequestMapping 来实现URL路由映射,在Spring框架中@RequestMapping是一个核心注解,用于将HTTP请求映射到特定的处理器方法或类上。

注意:以下代码可利用postman和fiddler观察,这里就不具体的演示。

简单代码示例

@RestController//后续讲解
public class headController {@RequestMapping("/hello")public String func() {return "hello";}

启动应用后,在浏览器访问http://171.0.0.1:8080/hello即可触发该方法。

GET请求和POST请求

 //方法一指定请求方法
@RequestMapping(value = "/m1" , method = RequestMethod.GET)public String func1() {return "m1";}//方法二 使用GetMapping注解@GetMapping(value = "/m4")public String func4() {return "m4";}

请求

传递单个参数
// 传递单个参数的情况下
@RequestMapping("/m5")public String func5(String name) {return "接受到的参数" + name;}

咱们使⽤浏览器发送请求并传参 http://127.0.0.1:8080/param/m5?name=spring

注意:如果使用基本类型正常传递参数的情况下为响应200;传递的参数类型不匹配的情况下会返回400;传递的参数为空时会返回500错误;使用在使用过程中包装类和基本类型需挑选使用。

传递多个参数
//传递多个参数的情况下@RequestMapping("/m7")public String func7(String name , Integer password) {return "姓名" + name + "\n" + "密码" + password;}
传递对象

现在有个user对象里面封装了对象的账号和密码

   @RequestMapping("/m8")public String func8(user user1) {return user1.toString();}
后端参数重命名(后端参数映射)

使⽤ @RequestParam 来重命名前后端的参数值.

 // 必传参数@RequestMapping("/m10")public String func10(@RequestParam("time") String name) {return "接受到的参数" + name;}// 非必传参数@RequestMapping("/m11")public String func11(@RequestParam(value = "time",required = false) String name) {return "接受到的参数" + name;}

使⽤浏览器发送请求并传参:http://127.0.0.1:8080/param/m10?time=2023-09-12

传递数组
@RequestMapping("/m9")public String func9(String[] array) {return "可多传参数" + Arrays.toString(array);}

数组参数:请求参数名与形参数组名称相同且请求参数为多个,后端定义数组类型形参即可接收参数

传递集合

集合参数:和数组类似,同⼀个请求参数名有为多个,且需要使⽤ @RequestParam 绑定参数关系请求⽅式和数组类似

 @RequestMapping("/m9")public String method6(@RequestParam List<String> listParam){return "可多传参:"+listParam;}
传递JSON数据

JSON字符串和Java对象互转

    //对象转java
//    @Test
//    void testObject2Json() throws JsonProcessingException {
//        ObjectMapper objectMapper = new ObjectMapper();
//        user user = new user("小黑",123456);
//        //对象转json
//        String s = objectMapper.writeValueAsString(user);
//        System.out.println(s);
//    }//json转对象@Testvoid testJson2Object() throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();//定义一个json字符串String s = "{\"username\":\"小黑\",\"password\":123456}";//json 转 对象user user = objectMapper.readValue(s, user.class);System.out.println(user.toString());}

传递

接收JSON对象,需要使⽤ @RequestBody 注解

 // 传递json数据@RequestMapping("/m12")public String func12(@RequestBody user user) {return "接受到的参数" + user.toString();}
获取URL中参数@PathVariable

这个注解主要作⽤在请求URL路径上的数据绑定,那么我的请求参数就在问号之前了。

/获取URL中参数@PathVariable@RequestMapping("/m13/{id}/{name}")public String func13(@PathVariable Integer id , @PathVariable String name) {return " 解析参数 id:"+id+",name:"+name;}
上传⽂件@RequestPart
//上传⽂件@RequestPart@RequestMapping("/m14")public String func14(@RequestPart("file") MultipartFile file) throws IOException {String str = file.getOriginalFilename();//⽂件上传到指定路径file.transferTo(new File("D:/图片/" + file.getOriginalFilename()));return " 接收到⽂件名称为: "+ str;}
获取Cookie/Session

Cookie 是客户端存储技术,由服务器发送到用户浏览器并保存在本地的小型数据片段。每次请求时,浏览器会自动将 Cookie 附加到请求头中发送给服务器。

Session 是服务器端存储技术,用于跟踪用户状态。服务器为每个用户创建一个唯一的 Session ID,通常通过 Cookie 传递给客户端。后续请求中,客户端通过 Session ID 与服务器交互,服务器根据 ID 查找对应的用户数据。Session 数据存储在服务器内存或数据库中。

cookie其实就是我们的学生证,是在我们的手中,当我们用他在学校刷某一个需要学生证才可以完成的事情时,服务器就会接受到我们的请求,通过服务器所连接的数据库根据Session ID对我们的信息完成认证。

Cookie 和Session的区别

  • Cookie是客⼾端保存⽤⼾信息的⼀种机制.Session是服务器端保存⽤⼾信息的⼀种机制.
  • Cookie和Session之间主要是通过SessionId关联起来的,SessionId是Cookie和Session之间的 桥梁
  • Cookie和Session经常会在⼀起配合使⽤,但是不是必须配合,完全可以⽤Cookie来保存⼀些数据在客⼾端.这些数据不⼀定是⽤⼾⾝份信息,也不⼀定是 SessionId ,Session中的sessionId也不需要⾮得通过Cookie/Set-Cookie传递,⽐如通过URL传递

获取Cookie

HttpServletRequest , HttpServletResponse 是Servlet提供的两个类,是Spring MVC⽅法的内置对象.需要时直接在⽅法中添加声明即可

HttpServletRequest 对象代表客⼾端的请求,当客⼾端通过HTTP协议访问服务器时,HTTP请 求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客⼾端请求的所有信 息

HttpServletResponse 对象代表服务器的响应.HTTP响应的信息都在这个对象中,⽐如向客⼾端发送的数据,响应头,状态码等.通过这个对象提供的⽅法,可以获得服务器响应的所有内容 Spring MVC在这两个对象的基础上进⾏了封装,给我们提供更加简单的使⽤⽅法

//获取cookie信息//HttpServletResponse response@RequestMapping("/co1")public String func15(HttpServletRequest request) {//获取所有cookieCookie[] cookie = request.getCookies();StringBuilder stringBuilder = new StringBuilder();if(cookie != null){for(Cookie cookie1 : cookie){stringBuilder.append(cookie1.getName()+":"+cookie1.getValue());}}return "cookie:"+stringBuilder;}//cookie获取简化@RequestMapping("/co2")public String func16(@CookieValue("bite") String bite) {return "bite " + bite;}

Session存储

//session存储@RequestMapping("/setSess")public String setSession(HttpServletRequest request){//获取session对象HttpSession httpSession = request.getSession();if(httpSession != null){httpSession.setAttribute("username","zhangsan");}return "session 存储成功 ";}

Session读取

//Session读取@RequestMapping("/getSess")public String getSession(HttpServletRequest request){//获取session对象,如果不存在不会自动创建HttpSession httpSession = request.getSession(false);String username = null;if(httpSession != null && httpSession.getAttribute("username") != null){username = (String) httpSession.getAttribute("username");}return "username:" + username;}//Session读取简化1@RequestMapping("/getSess1")public String getSession1(@SessionAttribute(value = "username",required = false) String username){return "username:" + username;}//Session读取简化2@RequestMapping("/getSess2")public String getSession2(HttpSession httpSession){String username = (String) httpSession.getAttribute("username");return "username:" + username;}
获取head信息
//获取head信息@RequestMapping("/head")public String func17(HttpServletRequest request){String heads = request.getHeader("User-Agent");return "请求头中ua信息为:" + heads;}//简易获取@RequestMapping("/head1")public String func18(@RequestHeader("User-Agent") String userAgent){return "userAgent:"+userAgent;}

响应

简单html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这是一个页面</title>
</head>
<body>Hello,Spring MVC, 我是 Index ⻚⾯
</body>
</html>

后台代码

//返回视图的方法
@Controller
//@ResponseBody // 即是类注解又是方法注解,也可以多个数据搭配使用
public class BodyContorller {@RequestMapping("/body1")public String func1(){return "/index.html";}
返回HTML代码⽚段

后端返回数据时,如果数据中有HTML代码,也会被浏览器解析

    @RequestMapping("/body3")@ResponseBodypublic String func3(){return  "<h1>Hello,HTML~</h1>";}
返回JSON
 //也可以返回json对象@RequestMapping("/body4")@ResponseBodypublic HashMap<String, String> func4(){HashMap<String, String> map = new HashMap<>();map.put("Java", "Java Value");map.put("MySQL", "MySQL Value");map.put("Redis", "Redis Value");return map;}
设置状态码
 //设置状态码@RequestMapping("/body5")@ResponseBodypublic String func5(HttpServletResponse response){response.setStatus(401);return "设置成功";}
设置Content-Type
 @RequestMapping(value = "/body6",produces = "application/json")@ResponseBodypublic String func6(){return "{\"success\":true}";}
设置其他的head
 @RequestMapping(value = "body7")@ResponseBodypublic String setHeader(HttpServletResponse response) {response.setHeader("MyHeader","MyHeaderValue");return " 设置 Header 成功 ";}

@Controller@RestController

@Controller@RestController 是 Spring MVC 中用于处理 HTTP 请求的核心注解,二者均用于标记类为控制器(Controller),但设计目标和功能存在差异。


核心功能差异

@Controller

  • 传统 Spring MVC 控制器注解,通常与 @ResponseBody 结合使用。
  • 返回的字符串默认解析为视图名称(View Name)
  • 若需直接返回数据(如 JSON/XML),需在方法上额外添加 @ResponseBody

@RestController

  • @Controller@ResponseBody 的组合注解,简化了 RESTful API 开发。
  • 默认将所有方法的返回值直接序列化为 HTTP 响应体(如 JSON/XML),无需显式添加 @ResponseBody
  • 专为构建无状态、数据驱动的 Web 服务设计。

http://www.dtcms.com/a/408607.html

相关文章:

  • 唯一做魅惑的网站wordpress门户主体
  • 广州网站设计首选刻wordpress模板创建
  • wdcp网站迁移app线上推广
  • 手机做网站公司有哪些怎么做企业网站推广需要多少钱
  • 网站备案有什么要求吗邢台百度爱采购
  • 北京十佳网站建设广州网站优化排名
  • 长春做网站大公司网页游戏直接玩
  • 非标自动化东莞网站建设广东省建设集团有限公司
  • 外贸网站做开关的哪个好网络营销策略定义
  • 黄石做网站多少钱成立公司注册资金可以随便写吗
  • 南宁建站网站模板江苏省两学一做网站
  • 河北pc端网站开发工程招标平台
  • 金融公司网站方案wordpress 支付宝收钱
  • 网站的后续优化方案旅游 便宜 网站建设
  • 网站加载慢建设银行理财网站
  • vf建设银行网站wordpress建立移动站
  • 建设一个电子商务网站购物网站界面设计策划
  • 静态网站的好处做企业网站的多少钱
  • 淄博网站建设优化上汽网站服务器租赁
  • 利用高权重网站做关键词网页生成app怎么用
  • 网站推广计划北京公司注册地址多少钱
  • WaP网站模块福州网站建设 联系yanktcn 04
  • 网站制作html代码上海设计公司官网
  • 网站预约功能怎么做湖北中牛建设有限公司网站
  • Java学习笔记五(多态)
  • 网站开发 沈阳我需要做网站
  • 中企动力唐山网站建设网站建设基础心得
  • 告诉搜索引擎网站建设中在线logo设计免费
  • 西部中大建设集团网站口碑营销案例简短
  • 东莞樟木头网站建设杭州萧山做网站公司