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

做网站用什么框架好垂直网站建设规模

做网站用什么框架好,垂直网站建设规模,.电子商务网站建设的核心是,软件外包公司怎么经营文章目录1. 请求映射路径2. 请求参数2.1 get 请求发送普通参数2.2 post 请求发送普通参数2.3 五种类型的参数传递2.4.1 普通参数2.4.2 POJO 数据类型2.4.3 嵌套 POJO 类型参数2.4.4 数组类型参数2.4.5 集合类型参数3. json 数据传输参数#xff08;重点#xff09;3.1 传输 j… 文章目录1. 请求映射路径2. 请求参数2.1 get 请求发送普通参数2.2 post 请求发送普通参数2.3 五种类型的参数传递2.4.1 普通参数2.4.2 POJO 数据类型2.4.3 嵌套 POJO 类型参数2.4.4 数组类型参数2.4.5 集合类型参数3. json 数据传输参数重点3.1 传输 json 普通数组3.2 传输 json 对象3.3 传输 json 对象数组4. 日期类型参数传递5. 响应 json 数据5.1 响应 / 跳转页面了解5.2 响应文本数据了解5.3 响应 json 数据5.3.1 响应 POJO 对象5.3.2 响应 POJO 对象集合5.3.3 ResponseBody 注解1. 请求映射路径 环境准备 (1) pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersionpackagingwar/packagingnamespringmvc03_request_mapping/namegroupIdcom.itheima/groupIdartifactIdspringmvc03_request_mapping/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--导入springmvc与servlet的依赖--dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope!--防止与tomcat插件冲突--/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.10.RELEASE/version/dependency/dependencies!--tomcat插件--buildpluginsplugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.1/versionconfigurationport80/port!--tomcat端口号--path//path!--虚拟目录--/configuration/plugin/plugins/build /project(2) ServletControllerInitConfig // 定义一个servlet容器启动的配置类 // 要继承AbstractAnnotationConfigDispatcherServletInitializer public class ServletControllerInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {//加载Spring配置类Overrideprotected Class?[] getRootConfigClasses() {return null;}//加载SpringMVC配置类Overrideprotected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}//设置哪些请求由springMVC处理Overrideprotected String[] getServletMappings() {//所有请求都由springMVC处理return new String[]{/};} }(3) SpringMvcConfig Configuration ComponentScan(com.itheima.controller) public class SpringMvcConfig { }(4) UserController //使用Controller定义bean Controller public class UserController {// 当前操作的请求映射路径用户发出哪个请求能调用到这个方法RequestMapping(/user/save)// 设置当前操作的返回值类型// 把返回的东西整体作为响应的内容给到外面ResponseBody// 处理请求的方法// 返回值为String执行完这个方法要对外返回json数据public String save(){System.out.println(user save ...);return {module:user save};}RequestMapping(/user/delete)ResponseBodypublic String delete(){System.out.println(user delete ...);return {module:user delete};} }(5) BookController Controller public class BookController {RequestMapping(/book/save)ResponseBodypublic String save(){System.out.println(book save...);return {module:book save};} }在 UserController 和 BookController 中都有 save 方法若两者的请求映射路径都为 “/save”则两者的访问路径就都成了 http://localhost/save会冲突。 解决方法就是如上面代码一样设置模块名作为请求映射路径的前置。这样访问路径就分别为http://localhost/user/savehttp://localhost/book/save。 这样在同一个模块中出现命名冲突的情况就比较少了。 问题是解决了但是每个方法前面都需要进行修改写起来比较麻烦而且还有很多重复代码如果 “/user” 后期发生变化所有的方法都需要改耦合度太高。 优化方案 把请求映射路径的前缀写到类上面这样方法上只写剩余路径即可。 //使用Controller定义bean Controller RequestMapping(/user) public class UserController {RequestMapping(/save)ResponseBodypublic String save(){System.out.println(user save ...);return {module:user save};}RequestMapping(/delete)ResponseBodypublic String delete(){System.out.println(user delete ...);return {module:user delete};} }Controller RequestMapping(/book) public class BookController {RequestMapping(/save)ResponseBodypublic String save(){System.out.println(book save...);return {module:book save};} }2. 请求参数 2.1 get 请求发送普通参数 //使用Controller定义bean Controller public class UserController {RequestMapping(/commonParam)ResponseBodypublic String save(String name){System.out.println(普通参数传递 namename ageage);return {module:common param};} }用 postman 发送带参数的 get 请求收到请求结果 同时处理请求的方法也接收到参数输出 普通参数传递 nametom age8GET 请求中文乱码 如果请求中传递的参数有中文那么接收到的参数会出现中文乱码问题。 如发送请求: http://localhost/commonParam?name张三age18处理请求的方法接收的参数会是 普通参数传递 nameå¼ ä¸‰ age8原因在于虽然 Tomcat 8.5 以后的版本已经处理了中文乱码的问题但是 IDEA 中的 Tomcat 插件目前只到 Tomcat7所以需要修改 pom.xml 来解决 GET 请求中文乱码问题。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersionpackagingwar/packagingnamespringmvc04_request_param/namegroupIdcom.itheima/groupIdartifactIdspringmvc04_request_param/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--导入springmvc与servlet的依赖--dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope!--防止与tomcat插件冲突--/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.10.RELEASE/version/dependency/dependencies!--tomcat插件--buildpluginsplugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.1/versionconfigurationport80/port!--tomcat端口号--path//path!--虚拟目录--uriEncodingUTF-8/uriEncoding!--访问路径编解码字符集--/configuration/plugin/plugins/build /project2.2 post 请求发送普通参数 后台代码不区分 get 请求和 post 请求所以仍用前面的代码来处理 post 请求。 用 postman 发送带参数的 post 请求 收到请求结果 同时处理请求的方法也接收到参数输出 普通参数传递 nametom age8post 请求中文乱码 post 请求发送中文参数时处理请求的方法打印获取的参数也会出现乱码问题。 解决方法在 ServletContainersInitConfig 中配置过滤器。 // 定义一个servlet容器启动的配置类 // 要继承AbstractAnnotationConfigDispatcherServletInitializer public class ServletControllerInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {//加载Spring配置类Overrideprotected Class?[] getRootConfigClasses() {return null;}//加载SpringMVC配置类Overrideprotected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}//设置哪些请求由springMVC处理Overrideprotected String[] getServletMappings() {//所有请求都由springMVC处理return new String[]{/};}//乱码处理Overrideprotected Filter[] getServletFilters() {CharacterEncodingFilter filter new CharacterEncodingFilter();filter.setEncoding(UTF-8);return new Filter[]{filter};} }2.3 五种类型的参数传递 前面我们已经能够使用 GET 或 POST 来发送请求和数据但所携带的数据都是比较简单接下来在这个基础上我们来研究一些比较复杂的参数传递常见的参数种类有: 普通参数POJO 类型参数嵌套 POJO 类型参数数组类型参数集合类型参数 这些参数如何发送后台该如何接收下面将逐个介绍都以 get 请求为例post 请求同理。 2.4.1 普通参数 普通参数 url 地址传参请求参数名与形参变量名相同定义形参即可接收参数。 请求结果 控制台输出 普通参数传递 nametom age8如果地址参数名与形参不同该如何解决? 如发出请求 http://localhost/commonParam?userNametomage18 解决方案:使用RequestParam注解 2.4.2 POJO 数据类型 简单数据类型一般处理的是参数个数比较少的请求如果参数比较多那么后台接收参数的时候就比较复杂这个时候可以使用 POJO 数据类型实体类。 POJO 参数若请求参数名与形参对象属性名相同POJO 类型的形参就可接收到参数。 请求结果 控制台输出 pojo参数传递 userUser{nametom, age8}2.4.3 嵌套 POJO 类型参数 请求结果 控制台输出 pojo嵌套pojo参数传递 userUser{nametom, age8, addressAddress{provincebeijing, citybeijing}}2.4.4 数组类型参数 举个简单的例子如果前端需要获取用户的爱好爱好绝大多数情况下都是多个如何发送请求数据和接收数据呢? 数组参数请求参数名与形参对象属性名相同且请求参数为多个同名参数定义数组类型即可接收参数。 请求结果 控制台输出 数组参数传递 likes[travel, game, music]2.4.5 集合类型参数 数组能接收多个值那么集合是否也可以实现这个功能呢? 注同名请求参数可以使用RequestParam注解映射到对应名称的集合对象中作为数据。对于简单数据类型使用数组会比集合更简单些。 请求结果 控制台输出 集合参数传递 likes[travel, game, music]3. json 数据传输参数重点 现在比较流行的开发方式为异步调用前后台以异步方式进行交换传输的数据使用的是 json。所以前端如果发送的是 json 数据后端该如何接收? 三种常见的 json 数据类型 json 普通数组 ([value1,value2,value3,...]) json 对象 ({key1:value1,key2:value2,...}) json 对象数组 ([{key1:value1,...},{key2:value2,...}]) 对于上述数据前端如何发送后端如何接收? 3.1 传输 json 普通数组 (1) pom.xml 添加依赖 SpringMVC 默认使用 jackson 处理 json 的转换所以需要添加 jackson 依赖。 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.0/version /dependency(2) 开启自动转换 json 数据的支持 EnablewebMvc注解功能强大该注解整合了多个功能。此处仅使用其中一部分功能即 json 数据进行自动类型转换。 Configuration ComponentScan(com.itheima.controller) EnableWebMvc//开启将json转换成对象的功能 //以后把EnableWebMvc当做标配配置上去不要省略 public class SpringMvcConfig { }(3) PostMan 编写 json 数据 (4) 后台处理请求的方法 RequestBody注解将请求中请求体所包含的数据传递给方法的形参此注解一个方法只能使用一次。因为数据在请求体中不在请求参数中所以不能用RequestParam注解 //使用Controller定义bean Controller public class UserController {RequestMapping(/listParamForJson)ResponseBodypublic String listParamForJson(RequestBody ListString likes){System.out.println(list common(json)参数传递 listlikes);return {module:list common for json param};} }运行程序后用 postman 发送 json 数据得到请求结果 控制台输出 list common(json)参数传递 list[travel, game, music]3.2 传输 json 对象 要求json 数据与形参对象属性名相同。 前两步与 3.1 相同。 (3) PostMan 编写 json 数据 (4) 后台处理请求的方法 //使用Controller定义bean Controller public class UserController {RequestMapping(/pojoParamForJson)ResponseBodypublic String pojoParamForJson(RequestBody User user){System.out.println(pojo(json)参数传递 useruser);return {module:pojo for json param};} }运行程序后用 postman 发送 json 数据得到请求结果 控制台输出 pojo(json)参数传递 userUser{nametom, age8, addressAddress{provincebeijing, citybeijing}}3.3 传输 json 对象数组 要求json 数组数据与集合泛型属性名相同。 前两步与 3.1 相同。 (3) PostMan 编写 json 数据 (4) 后台处理请求的方法 //使用Controller定义bean Controller public class UserController {RequestMapping(/listPojoParamForJson)ResponseBodypublic String listPojoParamForJson(RequestBody ListUser list){System.out.println(list pojo(json)参数传递 listlist);return {module:list pojo for json param};} }运行程序后用 postman 发送 json 数据得到请求结果 控制台输出 list pojo(json)参数传递 list[User{nametom, age8, addressnull}, User{namejerry, age5, addressnull}]RequestBody 与 RequestParam 区别 RequestParam 用于接收 url 地址传参表单传参【application/x-www-formurlencoded】请求映射参数 RequestBody 用于接收 json 数据【application/json】请求体 应用 后期开发中发送 json 格式数据为主RequestBody 应用较广。 如果发送非 json 格式数据选用 RequestParam 接收请求参数。 4. 日期类型参数传递 前面处理过简单数据类型、POJO 数据类型、数组和集合数据类型以及 json 数据类型接下来要处理一种开发中比较常见的一种数据类型日期类型。 日期类型比较特殊因为对于日期的格式有 N 多中输入方式比如 2088-08-182088/08/1808/18/2088… 针对这么多日期格式SpringMVC 该如何接收 (3) PostMan 编写 json 数据 (4) 后台处理请求的方法 //使用Controller定义bean Controller public class UserController {RequestMapping(/dataParam)ResponseBodypublic String dataParam(Date date,DateTimeFormat(pattern yyyy-MM-dd) Date date1,DateTimeFormat(pattern yyyy/MM/dd HH:mm:ss) Date date2) {System.out.println(参数传递 date date);System.out.println(参数传递 date1 date1);System.out.println(参数传递 date2 date2);return {module:data param};} }运行程序后用 postman 发送 json 数据得到请求结果 控制台输出 参数传递 dateSun Feb 12 00:00:00 CST 2023 参数传递 date1Sun Feb 12 00:00:00 CST 2023 参数传递 date2Sun Feb 12 15:59:33 CST 2023内部实现原理 讲解内部原理之前需要先思考个问题 前端传递字符串后端使用日期 Date 接收 前端传递 json 数据后端使用对象接收 前端传递字符串后端使用 Integer 接收 后台需要的数据类型有很多种在数据的传递过程中存在很多类型的转换谁来做这个类型转换呢是SpringMVC。 SpringMVC是如何实现类型转换的? 答SpringMVC中提供了很多类型转换接口和实现类 在框架中有一些类型转换接口其中有 (1) Converter 接口 Converter 接口的实现类 框架中有提供很多对应 Converter 接口的实现类用来实现不同数据类型之间的转换如 请求参数年龄数据String→Integer 日期格式转换String → Date (2) HttpMessageConverter 接口 该接口是实现对象与 json 之间的转换工作 5. 响应 json 数据 SpringMVC 接收到请求和数据后进行一些了的处理当然这个处理可以是转发给 ServiceService 层再调用 Dao 层。不管怎样处理完以后都需要将结果告知给用户。 比如根据用户 ID 查询用户信息、查询用户列表、新增用户等。 对于响应主要就包含两部分内容 响应页面响应数据 文本数据json数据 之前学 servlet 时主要是响应页面。在学习异步提交之后还可以响应数据。 因为异步调用是目前的主流方式所以我们需要更关注的就是如何返回 json 数据对于其他了解即可。 5.1 响应 / 跳转页面了解 (1) 准备页面 page.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitlehello springmvc/title /head bodyh1hello springmvc/h1 /body /html(2) 在 Controller 中设置返回页面 //使用Controller定义bean Controller public class UserController {RequestMapping(/toJumpPage)//注意//1.此处不能添加ResponseBody,如果加了该注入会直接将page.jsp当字符串返回前端//2.方法需要返回Stringpublic String toJumpPage(){return page.jsp;} }在浏览器地址栏输入http://localhost/toJumpPage得到 5.2 响应文本数据了解 postman 发出请求 响应请求 Controller public class UserController {RequestMapping(/toText)//这里的ResponseBody注解不能省略//否则会把“response text”当做页面名称查找找不到该页面就报404错误ResponseBodypublic String toText(){System.out.println(返回纯文本数据);return response text;} }后台响应发回请求结果 控制台输出 返回纯文本数据5.3 响应 json 数据 5.3.1 响应 POJO 对象 postman 发出请求 响应请求 //使用Controller定义bean Controller public class UserController {RequestMapping(/toJsonPOJO)ResponseBodypublic User pojoToJson(){System.out.println(返回json对象数据);User user new User();user.setName(tom);user.setAge(8);return user;} }后台响应发回请求结果 控制台输出 返回json对象数据5.3.2 响应 POJO 对象集合 postman 发出请求 响应请求 Controller public class UserController {RequestMapping(/toJsonList)ResponseBodypublic ListUser toJsonList() {System.out.println(返回json对象集合);User user1 new User();user1.setName(tom);user1.setAge(8);User user2 new User();user2.setName(jerry);user2.setAge(5);ListUser userList new ArrayListUser();userList.add(user1);userList.add(user2);return userList;} }后台响应发回请求结果 控制台输出 返回json对象集合5.3.3 ResponseBody 注解 ResponseBody 注解可以写在类或方法上写在类上就是该类的所有方法都有 ReponseBody 功能当方法上有 ReponseBody 注解后 方法的返回值为字符串会将其作为文本内容直接响应给前端。方法的返回值为对象会将对象转换成 json 响应给前端。
http://www.w-s-a.com/news/121340/

相关文章:

  • 天行健君子以自强不息网站建设江西网站做的好的企业文化
  • 建网站内容谷歌搜索引擎优化
  • 网站建设与管理案例教程第三版答案网站建设策划书范文六篇精选
  • 建设工程项目在哪个网站查询实时网站推广的最终目的是
  • 个人网站可以做淘客网站设置的参数
  • 自适应网站制作公司做室内设计通常上的网站
  • 网站建设项目采购公告建设网站公司建网页
  • 自己做网站怎么推广网站建设应该考虑哪些方面
  • 我做的网站手机上不了wordpress插件整站搬家
  • 河南省和建设厅网站首页西安找建网站公司
  • 网页设计基础代码网站进出成都最新通知
  • 如何创建网站乐清网络科技有限公司
  • 沈阳市网站制作艺术字体logo设计生成器
  • 网站设计常用软件都有哪些中国建设银行官方招聘网站
  • 证券投资网站建设视频直播怎么赚钱的
  • 建设酒店网站ppt模板下载郑州小程序设计外包
  • 网站建设自我总结google推广公司
  • 安全网站建设情况wordpress 评论表单
  • 网站建设发言材料个人网站推广软件
  • php建站软件哪个好南京哪家做网站好
  • 排名好的手机网站建设番禺网站建设专家
  • 番禺怎么读百度有专做优化的没
  • 网站开发中应注意哪些问题网络营销的主要特点
  • 网站定制案例北京网站制作招聘网
  • 网站建设与推广实训小结网站建设专业英文
  • 郑州网站建设动态凡科网站建设是免费的吗
  • 湖北手机网站建设wordpress转emlog博客
  • 北京东站设计网名的花样符号
  • 安徽建设厅网站首页网站开发aichengkeji
  • 自贡网站制作荣茂网站建设