java web 开发框架编
学习web 框架上开发需要的是安装 mysql 8.0 idea 2022 git 2.2.23 node 16以上 (新版本不好拉有些库了)jdk 最好是17以上
jdk8也是行的,反正不管新版如何发布,我们都是你发任你发,永远jjava 8
第一步新建项目一定要设文件编吗,然后才开如开发
2.配置maven
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/Users/甲蛙/.m2/repository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central</url>
</mirror>
</mirrors>
<!-- 其他配置,如pluginGroups, proxies, servers等 -->
</settings>
第三仓库管理,由于我是新建代码,后来想放在仓库中,以前在本地建个仓库也经不用了,所以提交总是找到上一个仓库。解决方法
首先,查看当前远程仓库的列表。运行以下命令:
git remote -v
您将看到一个或多个已配置的远程仓库及其对应的URL。
如果现有的远程仓库指向了错误的URL,您可以使用以下命令更新它的URL:
git remote set-url origin https://gitee.com/xie_bi_yuan/ctboot.git
这将把名为
origin
的远程仓库的URL更新为https://gitee.com/xie_bi_yuan/ctboot.git
。如果您想要保留现有的远程仓库并添加一个新的远程仓库,您可以为新的远程仓库指定一个不同的名称。例如,您可以将其命名为
gitee
:git remote add gitee https://gitee.com/xie_bi_yuan/ctboot.git
查看本地仓库key
在安装好的git 的菜单中 点帮助。然后查看key 复制到仓库配置key中,当然我说的是也经有key 的情况
启动日志优化:
修改主入口文件:
@SpringBootApplication
public class GRskgApplication {
private static final Logger LOG = LoggerFactory.getLogger(GRskgApplication.class); public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GRskgApplication.class, args);
LOG.info("杰哥系统也启动");
Environment env = context.getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址: http://127.0.0.1:{}", env.getProperty("server.port"));
}
}
第三部份 利用idea 工具自带的http 测试,在根根目录新建一个文件夹,取名http 在下面新建一个文件test.http
程序启动后 这个文件的类,和测试类一样 可以运行测试方法
如果是测试post 一定要加空行
代码如下
###http文件如下
###
POST http://localhost:8080/hello/post
Content-Type: application/x-www-form-urlencoded name=worldxsy ###控制器类代码如下
@PostMapping("/hello/post")
public String helloPost(String name) {
return "Hello, " + name + "! (POST)";
}
配置文件读取
1,支持格式说明:
在reources 文件夹下面的配置文件都 可以被boot 识别,只是默认是这个文件下面的根目录而己。支持 的格式如
.properties .yml 在coud 开发中还支持 bootstrap.properties 动态配置,这个如果这儿没有说清在百度理解
,总结就是SpringBoot会自动识别下面这组配置文件application.properties/ymlconfig/application.properties/ym1如果是Springcloud,还会自动识别下面这组配置文件:bootstrap.properties/ymlconfig/bootstrap.properties/ym1
以下是支持 的格式
2 配置文件格式转换 ToYaml.com 网址:toyaml.com/index.html
3 自定义配置属性
我们在配置文件定义一个属性 。比如定一个叫xsy = hello
然后我们在控制器上加一个注解,便 可以在属性中设置这个属性的值
使用mybatis 步骤
第一导入包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version> <!-- 使用适合您项目的版本 -->
</dependency>
第二配置数据库存连接(上面是配连接,下面是配扫描)
spring.datasource.url=jdbc:mysql://192.168.3.21:3306/sams?characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:/mapper/**/*.xml
第三步,在主类配扫描mappe的包
@SpringBootApplication
@ComponentScan("com.rskg")
@MapperScan("com.rskg.g_rskg.Mapper")
public class GRskgApplication {
private static final Logger LOG = LoggerFactory.getLogger(GRskgApplication.class); public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GRskgApplication.class, args);
LOG.info("杰哥系统也启动");
Environment env = context.getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址: http://127.0.0.1:{}", env.getProperty("server.port"));
}
}
额外注意,我们在service 在导入类的时候加上注解,
package com.rskg.g_rskg.service; import com.rskg.g_rskg.Mapper.UserMappe;
import com.rskg.g_rskg.domin.User;
import org.springframework.stereotype.Service; import javax.annotation.Resource;
import java.util.List; @Service
public class TestService {
@Resource
// @Autowired 这是sprintboot 带的,上面那个jdk带的
private UserMappe userMappe;
public List<User> list(){
return userMappe.list();
} }
mapper 类文件如下,这儿只是参考,不在这儿是重点,
package com.rskg.g_rskg.Mapper;
import com.rskg.g_rskg.domin.User;
import java.util.List;
public interface UserMappe {
public List<User> list();
}
最后就是针对mybatis 映射 的配置文件,示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义映射器接口的完全限定名 -->
<mapper namespace="com.rskg.g_rskg.Mapper.UserMappe">
<!-- 定义插入用户的 SQL 映射 -->
<select id="list" resultType="com.rskg.g_rskg.domin.User">
select * from User
</select>
</mapper>
统一返回
1,我们可以建一个对象,对象其中属性有状态 mession 了内容体,将要返回的数据放到内容体就可以完成统一统回,
2 问题是 返回的时候我们要清楚一些不要的东西,我们还要做统一响应,统一接收参数的方法为绿色部分
package com.rskg.g_rskg.resp; public class CommonResp<T> { /**
* 业务上的成功或失败
*/
private boolean success = true; /**
* 返回信息
*/
private String message; /**
* 返回泛型数据,自定义类型
*/
private T content; public boolean getSuccess() {
return success;
} public void setSuccess(boolean success) {
this.success = success;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public T getContent() {
return content;
} public void setContent(T content) {
this.content = content;
} @Override
public String toString() {
final StringBuffer sb = new StringBuffer("ResponseDto{");
sb.append("success=").append(success);
sb.append(", message='").append(message).append('\'');
sb.append(", content=").append(content);
sb.append('}');
return sb.toString();
}
}
统一返回代码
@GetMapping("/list")
public CommonResp list(EbookReq req){
CommonResp<List<EbookResp>> rest = new CommonResp<>();
List<EbookResp> list = ebookService.list(req);
rest.setContent(list);
return rest;
}
}有
有时候要返回的值要处理一下就是将将结查复制到别一个对象,去掉某一些字段,比如密码,需要是处理结果的
注掉的部份是原生方法,后面是工具的方法
public List<EbookResp> list(EbookReq Req) {
EbookExample ebookExample = new EbookExample();
ebookExample.createCriteria().andNameLike("%" + Req.getName() + "%");
List<Ebook> ebooklist = ebookMapper.selectByExample(ebookExample);
List<EbookResp> respList =new ArrayList<>();
for (Ebook ebook : ebooklist) {
// EbookResp ebookResp = new EbookResp();
// ebookResp.setId(ebook.getId());
// ebookResp.setName(ebook.getName());
// ebookResp.setCategory1Id(ebook.getCategory1Id());
// ebookResp.setCategory2Id(ebook.getCategory2Id());
// ebookResp.setDescription(ebook.getDescription());
// ebookResp.setCover(ebook.getCover());
// respList.add(ebookResp);
// BeanUtils.copyProperties(ebook,ebookResp);
// respList.add(ebookResp);
EbookResp ebookResp = CopyUtil.copy(ebook, EbookResp.class);
respList.add(ebookResp);
}
return respList;
}
}
封装这个复制别个对象的方法代码在下面,来自课堂笔记
package com.rskg.g_rskg.util; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import java.util.ArrayList;
import java.util.List; public class CopyUtil { /**
* 单体复制
*/
public static <T> T copy(Object source, Class<T> clazz) {
if (source == null) {
return null;
}
T obj = null;
try {
obj = clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
BeanUtils.copyProperties(source, obj);
return obj;
} /**
* 列表复制
*/
public static <T> List<T> copyList(List source, Class<T> clazz) {
List<T> target = new ArrayList<>();
if (!CollectionUtils.isEmpty(source)){
for (Object c: source) {
T obj = copy(c, clazz);
target.add(obj);
}
}
return target;
}
}
复制对象成对象
使用这个工具的示例:
EbookResp ebookResp = CopyUtil.copy(ebook, EbookResp.class);
respList.add(ebookResp);
过滤器使用
在项目中建一个文件夹,下面建一个文件 取名filter 为了这个类可以被系统知道 要加一下注解 @Component 最后一步增加一个配置文件指明路径
// package com.jiawa.wiki.filter;
//
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
// import org.springframework.stereotype.Component;
//
// import javax.servlet.*;
// import javax.servlet.http.HttpServletRequest;
// import java.io.IOException;
//
// @Component
// public class LogFilter implements Filter {
//
// private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class);
//
// @Override
// public void init(FilterConfig filterConfig) throws ServletException {
//
// }
//
// @Override
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// // 打印请求信息
// HttpServletRequest request = (HttpServletRequest) servletRequest;
// LOG.info("------------- LogFilter 开始 -------------");
// LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
// LOG.info("远程地址: {}", request.getRemoteAddr());
//
// long startTime = System.currentTimeMillis();
// filterChain.doFilter(servletRequest, servletResponse);
// LOG.info("------------- LogFilter 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);
// }
// }
过滤器
2 挡截器先新建这样的配置
SpringMvcConfig
package com.jiawa.wiki.config;
import
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
@Resource
LogInterceptor logInterceptor;
public void addInterceptors(InterceptorRegistry registry){registry.addInterceptor(logInterceptor)
.addPathPatterns("/**").excludePathPatterns("/login");
这儿笔记做得乱,可以复习相关
打印日志,要显示sql 的话。只需要在配置上加一句
java web 开发框架编的更多相关文章
- 高效 Java Web 开发框架 JessMA v3.5.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- 高效 Java Web 开发框架 JessMA v3.4.1
JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...
- 高效 Java Web 开发框架 JessMA v3.3.1 正式发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.3.1 Beta-1 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 正式发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 beta-2 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- 高效 Java Web 开发框架 JessMA v3.2.3 beta-1 发布
JessMA(原名:Portal-Basic)是一套功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hib ...
- Java Web开发框架Spring+Hibernate整合效果介绍(附源码)
最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...
- Java Web开发框架Spring+Hibernate整合效果介绍(附源码)(已过期,有更好的)
最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...
- Java Web开发框架
http://blog.csdn.net/csolo/article/details/51965096
随机推荐
- MindSponge分子动力学模拟——多路径分子模拟(2024.05)
技术背景 在前面的MindSponge教程系列博客中,我们已经介绍过MindSponge分子动力学模拟框架的基础功能使用方法,例如MindSponge的安装与使用.定义分子系统.计算单点能和迭代器等等 ...
- [机器学习] 低代码机器学习工具PyCaret库使用指北
PyCaret是一个开源.低代码Python机器学习库,能够自动化机器学习工作流程.它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率.PyCaret本质上是围绕几个机器学习 ...
- Web 页面性能衡量指标-以用户为中心的效果指标
Web 页面性能衡量指标-以用户为中心的性能指标 以用户为中心的性能指标是理解和改进站点体验的关键点 一.以用户为中心的性能指标 1. 指标是用来干啥的? 指标是用来衡量性能和用户体验的 2. 指标类 ...
- web服务器 传统开发和前后端分离开发 服务器相关概念
web服务器 Web服务器一般指的是网站服务器,是指驻留因特网上某一台或N台计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,目前最主流的三个Web服务器是Apache. Nginx . ...
- UDP端口探活的那些细节
一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了,如图 udp是无连接的,无法用建立连接的形式判断端口. 插件最初的设计是需要配置udp的发送字符 ...
- redis安全篇
redis被攻击,作为突破口,服务器惨遭毒手的事太常见了. 大多数云服务器被攻击,都是redis,mongodb等数据库被入侵. 因此修改端口,密码,以及注意bind运行地址,是必须. 思考是否要暴露 ...
- python写文件,过滤空行,根据某一行打上标记
import shutil import os ###第一步写文件 ''' with open('test.txt', 'w',encoding='utf-8') as f: f.write(&quo ...
- 随机二次元图片API第二弹
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 随机二次元图片API第二弹 日期:2018-3-4 阿珏 ...
- Python 导入包失败,提示“most likely due to a circular import”
详细报错信息如下: ImportError: cannot import name 'DoReplace' from partially initialized module 'common.do_r ...
- [翻译].NET 8 的原生AOT及高性能Web开发中的应用[附性能测试结果]
原文: [A Dive into .Net 8 Native AOT and Efficient Web Development] 作者: [sharmila subbiah] 引言 随着 .NET ...