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相关推荐

  1. 多项目结构_[网红项目]碳云大厦

    周坚荣 高成结构顾问中心副总工程师 设计总监 高级工程师 从事建筑结构设计工作11年,代表作:碳云大厦项目.平安金融中心南塔.深圳民治第三工业区更新项目.广东潭洲会展中心二期.广东省第十四届省运会主体 ...

  2. 项目结构_组织结构对项目影响系列课程---项目式组织结构

    在前面的几篇文章中我们分别介绍了,系统型(简单型),职能型,弱矩阵,平衡矩阵,强矩阵结构的优点和缺点及它们带给项目的影响.今天我们介绍项目式组织结构的优点和缺点及其可能产生的影响. 从结构图不难发现, ...

  3. 京淘项目实战开发-01

    1.京淘项目架构设计 1.1电商网站行业特点 1.1.1 高并发 概念: 同一时间内,有大量的用户访问服务器. 常识: tomcat服务器能够支持的并发链接数 220个/秒 (软件依赖硬件设备) 生产 ...

  4. Lesson9 【LINUX】将京淘项目发布到Linux系统上

    前言 将京淘项目发布到Linux系统上 我在windows系统中已经用IDEA编写好了京淘项目的代码,并且打好了war包. 现在我就想把这个京淘项目发布到linux系统上. 因为在工作中,都是要将项目 ...

  5. springboot项目结构_从零搭建Spring Boot脚手架(1):开篇以及技术选型

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  6. 2003京淘项目Day-03京淘后台项目搭建

    1.SpringBoot 整合JSP 1.1 创建项目 1.1.1 创建项目 1.1.2 编辑POM.xml文件 添加继承/依赖/插件 <!--parent标签作用:管理所有被springBoo ...

  7. apache geode项目结构_使用IntelliJ IDEA+Maven 创建、开发、管理项目

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 来源:http://1t.click/ag4d # 前言 本篇开发环境 1.操作系统:Windows 10 X642.Java SDK: ...

  8. javax maven项目缺少_教育平台项目后台管理系统:介绍与搭建

    项目架构 项目介绍 教育后台管理系统是提供给相关业务人员使用的一个后台管理系统,业务人员可以在这个后台管理系统中,对课程信息.讲师信息. 学员信息等数据进行维护. 课程管理模块 课程管理 新建课程 条 ...

  9. python开源项目贡献_为开源项目做出第一笔贡献

    python开源项目贡献 一个常见的误解是,为开源做出贡献是困难的. 您可能会想:"有时候我什至不了解自己的代码:我应该如何理解别人的代码?" 放松. 直到去年,我还是这么想. 阅 ...

最新文章

  1. vForum 2008系列之七:主题演讲:虚拟化的未来
  2. 2019牛客提前批一血:猝不及防的java实习面经
  3. 使用 Boost.MPI 的骨架和内容进行优化的示例
  4. boost::gregorian模块实现以天为单位显示到新年的时间量的测试程序
  5. Angular 项目里 angular.json 文件内容的学习笔记
  6. jsonobject修改key的值_修改JSONArray里所有key的值
  7. Mac OS使用技巧之十:Finder的详细使用方法
  8. 中国wms仓储管理系统行业发展状况分析?
  9. lisp 设计盘形齿轮铣刀_齿轮是怎么来的——图解6种齿轮加工工艺
  10. eclipse安装与概述
  11. 【易我数据恢复】超实用的数据恢复工具
  12. Programming Languages PartB Week2学习笔记——用Racket编写解释器
  13. Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose (译文)
  14. 电子烟创业大军,都去卖酒了
  15. 绝了,项目内部源码资源被爆出!网友:请收下我的膝盖!
  16. matlab求级数求和,实验七_matlab求解级数有关计算
  17. 【运动控制】运动控制卡与PLC的区别
  18. android实习报告,基于Android的毕业实习报告.doc
  19. 广州推出全国首个交通运输视频智能化综合分析平台
  20. badger和rocksDB性能对比

热门文章

  1. 微生物组科学蓬勃发展,5大方向备受行业关注!
  2. 第七届“数学、计算机与生命科学交叉研究” 青年学者论坛
  3. PNAS-2018-病原菌在植物免疫下的转录组
  4. pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe)
  5. R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values
  6. R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(sequence of image morph by)
  7. pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement)
  8. R语言获取当前R版本(version)实战
  9. R语言dplyr包排序及序号函数实战(row_number、ntile、min_rank、dense_rank、percent_rank、cume_dist)
  10. R方差分析(anova)以及Tukey检验