javax.servlet
javax.servlet-api
javax.servlet
jstl
org.apache.tomcat.embed
tomcat-embed-jasper
spring:
mvc: #引入mvn配置
view:
prefix: /WEB-INF/ # /默认代表根目录 src/main/webapp
suffix: .jsp
添加userList.jsp
学生信息
编号
姓名
年龄
性别
${u.id}
${u.name}
${u.age}
${u.sex}
添加userController
/**
* 说明:
* 1. @Controller + 返回值 String 表示跳转页面 必然经过视图解析器 拼接前缀和后缀
* 2. @RestController +任意返回值 直接返回JSON数据,不经过视图解析器.
* 或者
* @Controller + @ResponseBody
*/
@Controller
public class userController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/findAll")
public String findAll(Model model) {
List userList = userMapper.selectList(null);
model.addAttribute("userList",userList);
return "userList";
};
}
通过网址http://localhost:8090/findAll访问
如果端口是80则用这个网址:http://localhost/findAll
AJAX特点: 局部刷新,异步访问.
知识点: ajax为什么可以异步 源于ajax调用方式.(ajax引擎)
同步特点: 当服务器正忙时,用户处于等待状态.
网址:https://jquery.com/download/
$(function(){
//alert("页面加载完全,开始调用js")
//页面取值时,采用对象.属性的方式动态获取.
$.get("/findAjax",function(result){
addTable("tab1",result);
})
})
//定义ajax 展现数据函数
function addTable(eleId,data){
//遍历数据
var trs="";
$(data).each(function(index,user){
var id = user.id;
var name = user.name;
var age = user.age;
var sex = user.sex;
trs +=""+id+" "+name+" "+age+" "+sex+" "
});
$("#"+eleId).append(trs);
}
或者
$.ajax({
type: "post", //method
url: "/findAjax", //网址
//data: "name=John&location=Boston", //传递数据
dataType:"json",
//准备一个函数,实现表格数据的添加.
success: function(result){addTable("tab1",result);},
erro:function(data){alert("提示信息: 当前网络正忙,请稍后再试");},
async: true, //默认: true (默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false)
cache: false //默认: true, dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 将不缓存此页面。
});
//定义ajax 展现数据函数
function addTable(eleId,data){
//遍历数据
var trs="";
$(data).each(function(index,user){
var id = user.id;
var name = user.name;
var age = user.age;
var sex = user.sex;
trs +=""+id+" "+name+" "+age+" "+sex+" "
});
$("#"+eleId).append(trs);
}
说明: 由于程序将所有的功能模块放到同一台tomcat服务器中,那么如果服务器内部出现了问题,则直接导致整个服务器不能正常执行. 系统架构的耦合性高
1. 分布式系统
核心理念: 按照指定的规则,将系统进行拆分.各自独立运行,减少架构的耦合性
2. 按照模块拆分
优点: 如果其中一个服务器出现了问题,则不会影响整个项目的正常运行.
3. 按照层级拆分
说明:有时代码的业务逻辑特别的复杂.如何减少开发的耦合性.可以按照层级的方式进行拆分.
4. 总结
优点: 可以将大型项目按照指定规则拆分.降低了系统架构的耦合性.方便开发和"维护".
弊端: 拆分完成之后由于项目个数重点 运维不易. 可以接受!!!
分布式另外表现形式: 准备多台服务器一起为用户提供服务.
1. 什么是集群
说明:采用多台服务器部署项目,共同为用户提供服务的.同时可以满足**高可用(HA)**的需求时,称之为集群.
什么是高可用: 当服务器发生宕机的现象时,可以自动的实现故障迁移.保证服务运算能力.
如何管理JAR包
问题说明: 由于分布式的项目构建,导致服务器中jar包维护的份数变多.如果长时间按照该方式运行,则必然导致jar包管理混乱.
解决方案: 准备一个公共的项目,由该项目管理所需要的jar包文件. 其它项目继承该项目即可.
1.父级工程 jt 项目打包类型: pom
2.工具API jt-common 打包类型:jar
3.业务系统 jt-manage 打包类型:war
说明:
修改IDE配置,让new的选项中出现maven相关信息.
<!-- parent标签作用:管理所有被SpringBoot整合的jar版本的定义 springboot特点:开箱即用,映入jar包就可以添加相对应的功能.
定义了当前springboot2.3.1所有有关依赖的版本号信息 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<!-- 指定插件版本 -->
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 跳过测试类打包 -->
<skipTests>true</skipTests>
</properties>
<dependencies>
<!-- 在webjar包的内部关联了所有被springMVC的jar包信息. 定义了当前依赖包的版本
所以只需要引入一个jar包,则可以关联整合所有的有关mvc的依赖包信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<!-- 配置properties添加属性注入依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</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>
<!--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>
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!-- 引入aop支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--spring整合redis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<!--添加httpClient jar包 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<!--引入dubbo配置 -->
<!--<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>-->
<!--添加Quartz的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
<!-- 父级项目中不要添加maven的插件 -->
<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>
<parent>
<groupId>com.jt</groupId>
<artifactId>jt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 1.继承父级 -->
</parent>
<artifactId>jt-manage</artifactId>
<packaging>war</packaging>
<dependencies>
<!-- 2.添加依赖 -->
<dependency>
<groupId>com.jt</groupId>
<artifactId>jt-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<!-- 3.添加依赖 -->
<!-- 负责打包更新maven操作相关配置,必须配置 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
server:
port: 8091
servlet:
context-path: /
spring:
datasource:
#引入druid数据源
#type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: tarena
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
#mybatis-plush配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
configuration:
map-underscore-to-camel-case: true
logging:
level:
com.jt.mapper: debug