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

龙岗网站建设icxun广告设计与制作专业大学排名

龙岗网站建设icxun,广告设计与制作专业大学排名,长沙企业网站建设分公司,com一级域名先通过一个小练习简单了解以下SpringBootWeb。 小练习#xff1a; 需求#xff1a;使用SpringBoot开发一个Web应用#xff0c;浏览器发起请求/hello后#xff0c;给浏览器返回字符串Hello World~。 步骤#xff1a; 1.创建SpringBoot项目#xff0c;勾选We…        先通过一个小练习简单了解以下SpringBootWeb。 小练习 需求使用SpringBoot开发一个Web应用浏览器发起请求/hello后给浏览器返回字符串Hello World~。 步骤 1.创建SpringBoot项目勾选Web相关依赖 2.编写HelloController类添加方法Hello并添加注解 代码演示 RestController public class HelloController {RequestMapping(/hello)public String HelloController() {System.out.println(Hello World~);return Hello World~;} } 3.运行SpringBoot的启动类创建完SpringBoot项目后自动创建不用自己创建 代码演示 SpringBootApplication public class SpringbootWebQuickstartApplication {public static void main(String[] args) {SpringApplication.run(SpringbootWebQuickstartApplication.class, args);}} 运行结果 注意右下角红色框选部分为端口号 4.打开浏览器输入网址localhost8080端口号/hello 运行结果 起步依赖 内嵌Tomcat服务器 Tomcat 官方网站Apache Tomcat® - Welcome! 基本使用 ·部署应用复制到webapps目录。 请求响应 请求 接口测试工具Postman 接受方法 简单参数接收 方法 方法1只需要简单了解下面我对方法23做一下代码演示 方法2代码演示 RestController public class SimpleParam1 {RequestMapping(/simpleParam1)public String SimpleParam(String name, int age) {System.out.println(name : age);return OK;}} Postman测试下方运行结果 运行结果 方法3代码演示 RestController public class SimpleParam2 {RequestMapping(/simpleParam2)public String SimpleParam(RequestParam(name name,required false) String username, int age) {System.out.println(username : age);return OK;}} Postman测试下方运行结果 不传递name 运行结果 实体参数接收 简单实体对象 代码演示 User类 public class User {private String name;private int age;public User() {}public User(String name, int age) {this.name name;this.age age;}/*** 获取* return name*/public String getName() {return name;}/*** 设置* param name*/public void setName(String name) {this.name name;}/*** 获取* return age*/public int getAge() {return age;}/*** 设置* param age*/public void setAge(int age) {this.age age;}public String toString() {return User{name name , age age };} } 等待处理类 RestController public class SimplePojo {RequestMapping(/simplePojo)public String simplePojo(User user) {System.out.println(user);return OK;}} Postman测试 运行结果 复杂实体对象 代码演示 User类 package com.han.springbootwebquickstart.pojo;public class User {private String name;private int age;private Address address;public User() {}public User(String name, int age, Address address) {this.name name;this.age age;this.address address;}/*** 获取* return name*/public String getName() {return name;}/*** 设置* param name*/public void setName(String name) {this.name name;}/*** 获取* return age*/public int getAge() {return age;}/*** 设置* param age*/public void setAge(int age) {this.age age;}/*** 获取* return address*/public Address getAddress() {return address;}/*** 设置* param address*/public void setAddress(Address address) {this.address address;}public String toString() {return User{name name , age age , address address };} }Address类 public class Address {private String province;private String city;public Address() {}public Address(String province, String city) {this.province province;this.city city;}/*** 获取* return province*/public String getProvince() {return province;}/*** 设置* param province*/public void setProvince(String province) {this.province province;}/*** 获取* return city*/public String getCity() {return city;}/*** 设置* param city*/public void setCity(String city) {this.city city;}public String toString() {return Address{province province , city city };} } 等待处理类 RestController public class ComplexPojo {RequestMapping(/complexPojo)public String complexPojo(User user) {System.out.println(user);return OK;}} Postman测试 运行结果 数组集合参数接收 1.数组参数 代码演示 RequestMapping(/arrayParam)public String arrayParam(String[] hobby) {System.out.println(Arrays.toString(hobby));return OK;} Postman测试 运行结果 2.集合参数 请求参数名与形参中集合变量名相同通过RequestParam绑定参数关系。 代码演示 RequestMapping(/listParam)public String listParam(RequestParam ListString hobby) {System.out.println(hobby);return OK;} Postman测试 运行结果 日期参数 代码演示 RequestMapping(/timeParam)public String timeParam(DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss) LocalDateTime updateTime) {System.out.println(updateTime);return OK;} Postman测试 运行结果 json参数 代码演示 RequestMapping(/jsonParam)public String jsonParam(RequestBody User user) {System.out.println(user);return OK;} Postman测试 运行结果 路径参数 代码演示 RequestMapping(/path/{id}/{name})public String pathParam(PathVariable Integer id, PathVariable String name) {System.out.println(id : name);return OK;} Postman测试 运行结果 响应 代码演示 RestController public class ResponseController {//返回字符串RequestMapping(/stringResponse)public String stringResponse() {return Hello World;}//返回对象RequestMapping(/pojoResponse)public Address pojoResponse() {return new Address(hebei,shijiazhuang);}//返回集合RequestMapping(/listResponse)public ListAddress listResponse() {ListAddress list new ArrayListAddress();Address address1 new Address(hebei,shijiazhuang);list.add(address1);Address address2 new Address(tianjin,tianjin);list.add(address2);return list;}} Postman测试结果 返回字符串 返回对象 返回集合 但是这种情况返回的数据过于多样化不便于前端人员处理所以为了规范化一般采取创建Result对象来统一响应结果。 统一响应结果 代码演示 Result类 public class Result {private Integer code ;//1 成功 , 0 失败private String msg; //提示信息private Object data; //数据 datapublic Result() {}public Result(Integer code, String msg, Object data) {this.code code;this.msg msg;this.data data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Object getData() {return data;}public void setData(Object data) {this.data data;}public static Result success(Object data){return new Result(1, success, data);}public static Result success(){return new Result(1, success, null);}public static Result error(String msg){return new Result(0, msg, null);}Overridepublic String toString() {return Result{ code code , msg msg \ , data data };} }Controller类 RestController public class ResponseController {//返回字符串RequestMapping(/stringResponse)public Result stringResponse() {return Result.success(Hello World);}//返回对象RequestMapping(/pojoResponse)public Result pojoResponse() {return Result.success(new Address(hebei,shijiazhuang));}//返回集合RequestMapping(/listResponse)public Result listResponse() {ListAddress list new ArrayListAddress();Address address1 new Address(hebei,shijiazhuang);list.add(address1);Address address2 new Address(tianjin,tianjin);list.add(address2);return Result.success(list);}} Postman测试结果 响应字符串 响应对象 响应集合 案例 加载并解析emp.xml文件中的数据完成数据处理并在页面展示 emp.xml: ?xml version1.0 encodingUTF-8 ? empsempname金毛狮王/nameage55/ageimagehttps://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg/image!-- 1: 男, 2: 女 --gender1/gender!-- 1: 讲师, 2: 班主任 , 3: 就业指导 --job1/job/empempname白眉鹰王/nameage65/ageimagehttps://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg/imagegender1/genderjob1/job/empempname青翼蝠王/nameage45/ageimagehttps://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg/imagegender1/genderjob2/job/empempname紫衫龙王/nameage38/ageimagehttps://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg/imagegender2/genderjob3/job/emp /emps代码演示 pom.xml: ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.3.0/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.han/groupIdartifactIdspringboot-web-quickstart/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot-web-quickstart/namedescriptionspringboot-web-quickstart/descriptionpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.dom4j/groupIdartifactIddom4j/artifactIdversion2.1.3/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectEmp类JavaBean public class Emp {private String name;private Integer age;private String image;private String gender;private String job;public Emp() {}public Emp(String name, Integer age, String image, String gender, String job) {this.name name;this.age age;this.image image;this.gender gender;this.job job;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getImage() {return image;}public void setImage(String image) {this.image image;}public String getGender() {return gender;}public void setGender(String gender) {this.gender gender;}public String getJob() {return job;}public void setJob(String job) {this.job job;}Overridepublic String toString() {return Emp{ name name \ , age age , image image \ , gender gender \ , job job \ };} } 统一响应结果类Result public class Result {private Integer code ;//1 成功 , 0 失败private String msg; //提示信息private Object data; //数据 datapublic Result() {}public Result(Integer code, String msg, Object data) {this.code code;this.msg msg;this.data data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Object getData() {return data;}public void setData(Object data) {this.data data;}public static Result success(Object data){return new Result(1, success, data);}public static Result success(){return new Result(1, success, null);}public static Result error(String msg){return new Result(0, msg, null);}Overridepublic String toString() {return Result{ code code , msg msg \ , data data };} } Controller类EmpController RestController public class EmpController {RequestMapping(/listEmp)public Result list(){//1.加载emp.xml并解析其中的数据String file this.getClass().getClassLoader().getResource(emp.xml).getFile();ListEmp empList XmlParserUtils.parse(file, Emp.class);//2.对员工信息中的gender、job进行修改for (Emp emp : empList) {//设置genderString gender emp.getGender();if(1.equals(gender)){emp.setGender(男);} else if(2.equals(gender)){emp.setGender(女);}//设置jobString job emp.getJob();if(1.equals(job)){emp.setJob(讲师);} else if(2.equals(job)){emp.setJob(班主任);} else if(3.equals(job)){emp.setJob(就业指导);}}//3.组装数据并返回return Result.success(empList);}} 前端页面代码 !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title员工信息/title /headlink relstylesheet hrefelement-ui/index.css script src./js/vue.js/script script src./element-ui/index.js/script script src./js/axios-0.18.0.js/scriptbodyh1 aligncenter员工信息列表展示/h1div idappel-table :datatableData stylewidth: 100% stripe border el-table-column propname label姓名 aligncenter min-width20%/el-table-columnel-table-column propage label年龄 aligncenter min-width20%/el-table-columnel-table-column label图像 aligncenter min-width20%template slot-scopescopeel-image :srcscope.row.image stylewidth: 80px; height: 50px;/el-image/template/el-table-columnel-table-column propgender label性别 aligncenter min-width20%/el-table-columnel-table-column propjob label职位 aligncenter min-width20%/el-table-column/el-table/div /bodystyle.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;} /stylescriptnew Vue({el: #app,data() {return {tableData: []}},mounted(){axios.get(/listEmp).then(res{if(res.data.code){this.tableData res.data.data;}});},methods: {}}); /script /htmlPortman测试 网页运行结果 分层解耦 Web开发的三层架构 小练习 将上述案例中的Controller代码分解成三层架构代码如下 RestController public class EmpController {RequestMapping(/listEmp)public Result list(){//1.加载emp.xml并解析其中的数据String file this.getClass().getClassLoader().getResource(emp.xml).getFile();ListEmp empList XmlParserUtils.parse(file, Emp.class);//2.对员工信息中的gender、job进行修改for (Emp emp : empList) {//设置genderString gender emp.getGender();if(1.equals(gender)){emp.setGender(男);} else if(2.equals(gender)){emp.setGender(女);}//设置jobString job emp.getJob();if(1.equals(job)){emp.setJob(讲师);} else if(2.equals(job)){emp.setJob(班主任);} else if(3.equals(job)){emp.setJob(就业指导);}}//3.组装数据并返回return Result.success(empList);}} 代码演示 Dao层 接口 public interface EmpDao {public ListEmp listEmp();}实现类 public class EmpDaoA implements EmpDao {Overridepublic ListEmp listEmp() {String file this.getClass().getClassLoader().getResource(emp.xml).getFile();ListEmp empList XmlParserUtils.parse(file, Emp.class);return empList;} } Service层 接口 public interface EmpService {public ListEmp listEmp();} 实现类 public class EmpServiceA implements EmpService {private EmpDao empDao new EmpDaoA();Overridepublic ListEmp listEmp() {ListEmp empList empDao.listEmp();for (Emp emp : empList) {//设置genderString gender emp.getGender();if(1.equals(gender)){emp.setGender(男);} else if(2.equals(gender)){emp.setGender(女);}//设置jobString job emp.getJob();if(1.equals(job)){emp.setJob(讲师);} else if(2.equals(job)){emp.setJob(班主任);} else if(3.equals(job)){emp.setJob(就业指导);}}return empList;} } Controller层 实现类 RestController public class EmpController {private EmpService empService new EmpServiceA();RequestMapping(/listEmp)public Result list(){ListEmp empList empService.listEmp();return Result.success(empList);}} 运行结果 内聚和耦合 我们就可以通过控制反转和依赖注入来分层解耦。 控制反转(IOC)和依赖注入(DI) 代码演示 Dao层 接口 public interface EmpDao {public ListEmp listEmp();}实现类 Component public class EmpDaoA implements EmpDao {Overridepublic ListEmp listEmp() {String file this.getClass().getClassLoader().getResource(emp.xml).getFile();ListEmp empList XmlParserUtils.parse(file, Emp.class);return empList;} } Service层 接口 public interface EmpService {public ListEmp listEmp();} 实现类 Component public class EmpServiceA implements EmpService {Autowiredprivate EmpDao empDao;Overridepublic ListEmp listEmp() {ListEmp empList empDao.listEmp();for (Emp emp : empList) {//设置genderString gender emp.getGender();if(1.equals(gender)){emp.setGender(男);} else if(2.equals(gender)){emp.setGender(女);}//设置jobString job emp.getJob();if(1.equals(job)){emp.setJob(讲师);} else if(2.equals(job)){emp.setJob(班主任);} else if(3.equals(job)){emp.setJob(就业指导);}}return empList;} } Controller层 实现类 RestController public class EmpController {Autowiredprivate EmpService empService ;RequestMapping(/listEmp)public Result list(){ListEmp empList empService.listEmp();return Result.success(empList);}} 运行结果 好处         采用这种方式降低了层之间的耦合度如果业务逻辑改变要使用Service层中的其他实现类那只需要编写好新的实现类后在类上标注注解Component再修改原来使用的实现类的注解即可。 IOC细节 Bean的声明 目前主要使用的是下图中下面三个针对一个类的注解Component一般只有在一个类不属于这三类的时候使用。 注意 声明bean的时候可以通过value属性指定bean的名字如果没有指定默认为类名首字母小写。 使用以上四个注解都可以声明bean但是在springboot集成web开发中声明控制器bean只能用Controller。 Bean组件扫描 DI细节 Bean注入 ★Resource与Autowired的区别 ·Autowired是spring框架提供的注解而Resource是JDK提供的注解 ·Autowired默认是按照类型注入而Resource默认是按照名称注入
http://www.yingshimen.cn/news/27655/

相关文章:

  • intitle 网站建设东莞招聘信息最新招聘2022
  • 网站搭建心得高清服务器大全
  • 如何注册域名和网站wordpress使用七牛
  • 可信网站是什么北京高端网站建设规划
  • 怎么选择模板建站服务网站产品链接怎么做的
  • 造价人员做兼职的网站手机怎么搭建属于自己的网站
  • 阿里巴巴网站威海哪里做?荆门做微信公众号的网站
  • 哪有做机械设计的网站公司做网站的费用怎么做账
  • 金本网站建设设计个人做网站用哪个主机好
  • 苏州城乡建设网站查询wordpress通知搜索引擎收录
  • 徐州做网站沈阳厂商在哪个网站上做实验仪器比较好
  • 网站在线制作生成攻击jsp网站
  • 苏州招聘网站建设电子商务网站建设李洪心课后答案
  • 网站开发心得做得好的网站建设公司
  • 网站 建设ppt模板万户网络公司怎么样
  • 河南网站开发培训价格网店如何营销推广
  • 3维网站制作技术网站怎么弄模板
  • 楚雄做网站的公司医院可以做网站吗
  • 网站开发留学wordpress侧边栏加图片
  • 网站建设行业淘宝装修模板wordpress 颜色插件下载
  • 广州新闻发布搜索引擎优化是做什么
  • 苏州seoa标签优化网站
  • 同城做推广哪个网站好网站建设管理情况的通报
  • 滨州市滨城区建设局网站个人网站开发 怎么赚钱
  • 测评网站怎么做给网站做选题
  • 班级网站做哪些方面中建材建设有限公司网站
  • 免费查公司的网站wordpress 英文 企业网站模板
  • wordpress添加网站深圳市手机网站建设哪家好
  • 大连网站制作仟亿科技苏州有什么好玩的地方吗
  • 做盗版小说网站赚钱嘛柳州公积金网站