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
随机推荐
- 记录一下Android usb相关的知识学习
在SecondStageMain中会先调用PropertyInit做属性初始化,该方法会调用PropertyLoadBootDefaults加载持久化的属性主要加载位置: /system/build. ...
- 使用 Microsoft Edge WebDriver 自动执行和测试 WebView2 应用 Selenium
https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/how-to/webdriver
- .NetCore 3.1 教程之 EFCore连接Mysql DBFirst模式 从数据库生成实体
一:创建EF的类库,同时将此项目设置为启动项(为Scaffold-DbContext -tables指令使用),同时安装2个包 ①Microsoft.EntityFrameworkCore.Too ...
- 一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
在现代云计算环境中,自动化部署已经成为一项重要的任务.Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源. 阿里 ...
- 判断是不是ie浏览器 加上ie11
var b_version = navigator.appVersion; var version = b_version.split(";"); var trim_Version ...
- redux中集成immutable.js
安装redux-immutable redux中利用combineReducers来合并reducer并初始化state,redux自带的combineReducers只支持state是原生js形式的 ...
- kettle从入门到精通 第六十五课 ETL之kettle 执行动态SQL语句,轻松实现全量&增量数据同步
本次课程的逻辑是同步t1表数据到t2表,t1和t2表的表机构相同,都有id,name,createtime三个字段. CREATE TABLE `t1` ( `id` bigint NOT NULL ...
- java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder 解决方 ...
- Mysql中innodb的B+tree能存储多少数据?
引言 InnoDB一棵3层B+树可以存放多少行数据?这个问题的简单回答是:约2千万.为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构.数据组织方式说起. 在计 ...
- Unity 罗技G29接入
Unity 罗技G29接入 unity g29unity logictech g29g29 Unity 罗技G29接入 一. 使用Unity Standard Assets中的CrossPlatfor ...