boot sprint 项目结构_京淘项目03 08.28
JSP动态web资源,打war包
##spring boot整合JSP
创建项目 spring
SpringBoot整合web资源,,
在main文件下,新建webapp文件夹,,把WEBINF目录粘贴到此目录下,web资源
此pom.xml文件下的jar包为
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jt</groupId><artifactId>springboot_jsp</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>demo</name><description>Demo project for Spring Boot</description><!--parent标签作用: 定义了SpringBoot中所有关联项目的版本号信息.--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><java.version>1.8</java.version><!--项目打包时,跳过测试类打包--><skipTests>true</skipTests></properties><!--开箱即用:SpringBoot项目只需要引入少量的jar包及配置,即可拥有其功能.spring-boot-starter 拥有开箱即用的能力.maven项目中依赖具有传递性.A 依赖 B 依赖 C项目 导入A bc会自动依赖--><dependencies><!--直接依赖web springMVC配置--><dependency><groupId>org.springframework.boot</groupId><!--springBoot-start SpringBoot启动项 --><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot重构了测试方式 可以在测试类中 直接引入依赖对象--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!--支持热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><!--引入插件lombok 自动的set/get/构造方法插件 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--引入数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--springBoot数据库连接 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--spring整合mybatis-plus 只导入MP包,删除mybatis包 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency><!--springBoot整合JSP添加依赖 --><!--servlet依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><!--jstl依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!--使jsp页面生效 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency></dependencies><!--在项目打包部署时生效,如果不添加build,则程序发布时不然会报项目中没有main方法.--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
spring boot整合JSP新添加3个依赖
<!--springBoot整合JSP添加依赖 --><!--servlet依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><!--jstl依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!--使jsp页面生效 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency>
yml配置文件和之前一样,此外会另外添加一个个配置,mvc, 项目的发布路径
#引入mvc配置mvc: #引入mvn配置view:prefix: /WEB-INF/ # /默认代表根目录 src/main/webappsuffix: .jsp
关于IDEA页面资源加载404问题
解决办法,,,修改名称,和配置资源访问路径
项目结构,,,并且要引入jquery.js
userList.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>您好Springboot</title>
</head>
<body><table border="1px" width="65%" align="center"><tr><td colspan="6" align="center"><h3>学生信息</h3></td></tr><tr><th>编号</th><th>姓名</th><th>年龄</th><th>性别</th><th></th></tr><!-- ${userList}表示从域中取值. request域 Session域 --><c:forEach items="${userList}" var="u"><tr><th>${u.id}</th><th>${u.name}</th><th>${u.age}</th><th>${u.sex}</th></tr></c:forEach></table>
</body>
</html>
编辑UserController控制层,并且要呈现页面
@Controller //执行视图解析器代理.
//@RestController //一般适用于ajax 不走视图解析器. 并且返回JSON数据.
public class UserController {@Autowiredprivate UserMapper userMapper;/*** 需求1: 请求路径localhost:8090/findAll 跳转到userList.jsp页面中* 页面取值方式: ${userList}*/@RequestMapping("/findAll")public String findAll(Model model){ //model是SpringMVC中提供操作request对象的API//1.从数据库中获取的数据List<User> userList = userMapper.selectList(null);//2.将userList集合保存到域中,之后页面取值model.addAttribute("userList",userList);//model调用的是request对象//返回页面逻辑名称return "userList";}
呈现效果
=======================================================
另一种方式,采用Ajax 局部刷新,异步访问,因为有Ajax引擎,使得请求由一个变为多个
跳转ajax页面
//跳转ajax页面@RequestMapping("/ajax")public String toAjax(){return "userAjax";}
实现Ajax数据访问
//实现ajax业务调用,返回页面列表数据.@RequestMapping("/findAjax")@ResponseBodypublic List<User> findAjax(){return userMapper.selectList(null);}
编辑UserAjax.jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head》
<!--引入JS函数类库-->
<script type="text/javascript" src="/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">//让页面加载完成之后执行$(function () {//1.$.get("url地址","添加参数","回调函数","返回值结果类型text/html/json...一般ajax会自动匹配");// 2.$.post();// 3.$.getJSON(); 只能获取json串// 4.$.getScript();// 5.$.ajax(); 万能用$.get("/findAjax", function (data) {//data=[{user},{user},{user}]//alert("ajax执行成功"); es6与jsp冲突//需求:将userList集合信息动态的添加到table中var trs=null;$(data).each(function (index) {//index代表循环遍历的下标从0开始var user = data[index];var name = user.name;var id=user.id;var age=user.age;var sex=user.sex;//最终需要在table中展现trs+="<tr align='center'><td>"+id+"</td><td>"+name+"</td><td>"+age+"</td><td>"+sex+"</td></tr>";});//将结果追加到table中即可$("#tab1").append(trs);$.ajax({type:"GET",url:"/findAjax2",data:"id=1&name=tomcat",//data:{"id":"1","name":"tomcat"},success:function (data){alert("ajax调用成功!!!");alert(data)},async:true, //默认都是true 异步调用error:function (data) {alert("服务器异常,请稍后重试");}});});})</script><title>您好Springboot</title>
</head>
<body>
<table border="1px" id="tab1" width="65%" align="center"><tr><td colspan="6" align="center"><h3>学生信息</h3></td></tr><tr><th>编号</th><th>姓名</th><th>年龄</th><th>性别</th></tr></table>
</body>
</html>
也可以Ajax
###京淘项目架构
###分布式思想
将大型项目按照特定的规则进行拆分.目的:减少项目架构的耦合性. (化整为零 拆)
说明:如果作为大型项目,将所有的功能模块都写到一起,如果将来其中的一个模块出现问题,则直接影响整个项目的运行.
按照功能业务拆分
按照特定的模块进行拆分,之后各自独立的运行.相互之间不受影响.
按照层级拆分
分布式系统中的jar包如何管理?
分布式系统中的工具API等如何管理?
TestMybatis测试类
/*** 分析查询测试案例* 根据对象中不为null的属性当做操作的要素!!!* 注意事项:POJO 类型必须是包装类型,不能是基本类型,有默认值,影响代码*/@Testpublic void testSelect(){User user=new User();user.setName("王昭君").setAge(19);QueryWrapper<User> queryWrapper=new QueryWrapper<>(user);List<User> userList=userMapper.selectList(queryWrapper);System.out.println(userList);}/*** 删除name为null的用户信息* sql怎么写 条件构造器需要怎么加*/@Testpublic void testDelete(){//定义条件构造器QueryWrapper<User> queryWrapper=new QueryWrapper<>();queryWrapper.isNull("name");userMapper.delete(queryWrapper);// DELETE FROM user WHERE (name IS NULL)}/*** 更新操作:* 1.将name为null的数据, 修改为name=安琪拉,sex=女 年龄8* 参数说明:* 1.实体对象 更新的数据内容* 2.条件构造器 动态拼接where条件*/@Testpublic void testUpdate(){User user=new User();user.setName("安琪拉").setSex("女").setAge(8);UpdateWrapper<User> userUpdateWrapper=new UpdateWrapper<>();userUpdateWrapper.isNull("name");userMapper.update(user, userUpdateWrapper);//UPDATE user SET sex=?, name=?, age=? WHERE (name IS NULL)}
boot sprint 项目结构_京淘项目03 08.28相关推荐
- 多项目结构_[网红项目]碳云大厦
周坚荣 高成结构顾问中心副总工程师 设计总监 高级工程师 从事建筑结构设计工作11年,代表作:碳云大厦项目.平安金融中心南塔.深圳民治第三工业区更新项目.广东潭洲会展中心二期.广东省第十四届省运会主体 ...
- 项目结构_组织结构对项目影响系列课程---项目式组织结构
在前面的几篇文章中我们分别介绍了,系统型(简单型),职能型,弱矩阵,平衡矩阵,强矩阵结构的优点和缺点及它们带给项目的影响.今天我们介绍项目式组织结构的优点和缺点及其可能产生的影响. 从结构图不难发现, ...
- 京淘项目实战开发-01
1.京淘项目架构设计 1.1电商网站行业特点 1.1.1 高并发 概念: 同一时间内,有大量的用户访问服务器. 常识: tomcat服务器能够支持的并发链接数 220个/秒 (软件依赖硬件设备) 生产 ...
- Lesson9 【LINUX】将京淘项目发布到Linux系统上
前言 将京淘项目发布到Linux系统上 我在windows系统中已经用IDEA编写好了京淘项目的代码,并且打好了war包. 现在我就想把这个京淘项目发布到linux系统上. 因为在工作中,都是要将项目 ...
- springboot项目结构_从零搭建Spring Boot脚手架(1):开篇以及技术选型
1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...
- 2003京淘项目Day-03京淘后台项目搭建
1.SpringBoot 整合JSP 1.1 创建项目 1.1.1 创建项目 1.1.2 编辑POM.xml文件 添加继承/依赖/插件 <!--parent标签作用:管理所有被springBoo ...
- apache geode项目结构_使用IntelliJ IDEA+Maven 创建、开发、管理项目
前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 来源:http://1t.click/ag4d # 前言 本篇开发环境 1.操作系统:Windows 10 X642.Java SDK: ...
- javax maven项目缺少_教育平台项目后台管理系统:介绍与搭建
项目架构 项目介绍 教育后台管理系统是提供给相关业务人员使用的一个后台管理系统,业务人员可以在这个后台管理系统中,对课程信息.讲师信息. 学员信息等数据进行维护. 课程管理模块 课程管理 新建课程 条 ...
- python开源项目贡献_为开源项目做出第一笔贡献
python开源项目贡献 一个常见的误解是,为开源做出贡献是困难的. 您可能会想:"有时候我什至不了解自己的代码:我应该如何理解别人的代码?" 放松. 直到去年,我还是这么想. 阅 ...
最新文章
- vForum 2008系列之七:主题演讲:虚拟化的未来
- 2019牛客提前批一血:猝不及防的java实习面经
- 使用 Boost.MPI 的骨架和内容进行优化的示例
- boost::gregorian模块实现以天为单位显示到新年的时间量的测试程序
- Angular 项目里 angular.json 文件内容的学习笔记
- jsonobject修改key的值_修改JSONArray里所有key的值
- Mac OS使用技巧之十:Finder的详细使用方法
- 中国wms仓储管理系统行业发展状况分析?
- lisp 设计盘形齿轮铣刀_齿轮是怎么来的——图解6种齿轮加工工艺
- eclipse安装与概述
- 【易我数据恢复】超实用的数据恢复工具
- Programming Languages PartB Week2学习笔记——用Racket编写解释器
- Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose (译文)
- 电子烟创业大军,都去卖酒了
- 绝了,项目内部源码资源被爆出!网友:请收下我的膝盖!
- matlab求级数求和,实验七_matlab求解级数有关计算
- 【运动控制】运动控制卡与PLC的区别
- android实习报告,基于Android的毕业实习报告.doc
- 广州推出全国首个交通运输视频智能化综合分析平台
- badger和rocksDB性能对比
热门文章
- 微生物组科学蓬勃发展,5大方向备受行业关注!
- 第七届“数学、计算机与生命科学交叉研究” 青年学者论坛
- PNAS-2018-病原菌在植物免疫下的转录组
- pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe)
- R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values
- R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(sequence of image morph by)
- pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement)
- R语言获取当前R版本(version)实战
- R语言dplyr包排序及序号函数实战(row_number、ntile、min_rank、dense_rank、percent_rank、cume_dist)
- R方差分析(anova)以及Tukey检验