JavaEE-前端与后台的搭建

一.idea连接数据库

在使用 IntelliJ IDEA 连接数据库时,可以按照以下步骤操作:

### 1. 打开数据库工具窗口
- 在 IntelliJ IDEA 中,点击右侧的 `Database` 工具窗口,或通过 `View -> Tool Windows -> Database` 打开。

### 2. 添加数据源
- 在 `Database` 工具窗口中,点击 `+` 按钮,选择 `Data Source`,然后选择你要连接的数据库类型(如 MySQL、PostgreSQL、Oracle 等)。

### 3. 配置数据库连接
- 在弹出的窗口中,填写数据库连接信息:
  - **Host**: 数据库服务器地址(如 `localhost` 或 IP 地址)。
  - **Port**: 数据库端口(如 MySQL 默认是 `3306`)。
  - **Database**: 数据库名称。
  - **User**: 数据库用户名。
  - **Password**: 数据库密码。

### 4. 测试连接
- 点击 `Test Connection` 按钮,确保连接信息正确。如果成功,会显示 `Connection successful`。

### 5. 应用并保存
- 点击 `Apply` 和 `OK` 保存配置,IDEA 将连接到数据库并在 `Database` 工具窗口中显示数据库结构。

### 6. 使用数据库工具
- 连接成功后,你可以:
  - 浏览数据库表和视图。
  - 执行 SQL 查询。
  - 编辑表数据。
  - 导出/导入数据。

### 7. 驱动管理
- 如果缺少数据库驱动,IDEA 会提示下载。你也可以手动下载并添加到 `Drivers` 部分。

### 示例:连接 MySQL
1. 选择 `MySQL` 作为数据源。
2. 填写:
   - Host: `localhost`
   - Port: `3306`
   - Database: `your_database_name`
   - User: `root`
   - Password: `your_password`
3. 测试连接并保存。

### 注意事项
- 确保数据库服务已启动。
- 检查防火墙设置,确保端口可访问。
- 使用 VPN 或 SSH 隧道连接远程数据库。

通过这些步骤,你可以在 IntelliJ IDEA 中轻松连接并管理数据库。

二.控制层

使用Servlet处理控制层.
Servlet: java代码运行在web容器中+一定规则

1.创建一个servlet代码

@WebServlet(value = "/api/findAllUsers")
public class FindAllUserController extends HttpServlet {private IUserService ius;protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{//Your Codes Are Hereius = new UserServiceImpl();List<User> all = ius.findAll();Result r = Result.success(all);ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(r);resp.getWriter().write(json);}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{doGet(req,resp);}
}

2.将返回对象(Result)变成字符串

Json对象:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但独立于编程语言,几乎所有现代编程语言都支持JSON

2.1 引用json转换

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version>
</dependency>

三.接口测试

1.检测tomcat配置

2.项目运行配置tomcat

启动tomcat--->API测试

具有单元测试和api的能力

四.乱码过滤器

解决从前到后,从后到前的乱码问题

public class CharsetFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {request.setCharacterEncoding("UTF-8"); //请求过滤response.setContentType("text/html;charset=UTF-8");//响应过滤filterChain.doFilter(request,response); //继续走其他过滤器}@Overridepublic void destroy() {Filter.super.destroy();}
}

五.跨域

public class CorsFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {HttpServletResponse httpResponse = (HttpServletResponse) response;// 设置跨域响应头httpResponse.setHeader("Access-Control-Allow-Origin", "*");httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");httpResponse.setHeader("Access-Control-Allow-Credentials", "true");httpResponse.setHeader("Access-Control-Max-Age", "3600");// 继续处理请求filterChain.doFilter(request, response);}@Overridepublic void destroy() {Filter.super.destroy();}
}

六.ApiPost

七.前端框架

Vue+Axios+Router+ElementUI

1.Vue-cli项目

D:\maven-workspace\javaee-demo\src\main\webapp>vue create ee-demo

2.安装ElementUI

2.1 安装Axios

(1)拦截器

import axios from 'axios'const $request = axios.create({timeout: 5000
});$request.interceptors.request.use(config=>{config.headers['Content-Type']='application/json;charset=utf-8';return  config;},error=>{return Promise.reject(error);}
);export default $request;

(2)main.js

import Vue from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)Vue.config.productionTip = falsenew Vue({router,render: h => h(App)
}).$mount('#app')

3.开发页面

从前端发起请求,从后台获得数据展示在页面上表格展示

<template><div class="about"><!-- 查询按钮 --><el-row><el-button type="primary" @click="findAll" :loading="loading">查询</el-button></el-row><!-- 数据表格 --><el-row><el-table:data="tableData"style="width: 100%"stripeborderv-loading="loading"element-loading-text="数据加载中..."element-loading-spinner="el-icon-loading"element-loading-background="rgba(0, 0, 0, 0.8)"><el-table-columnprop="id"label="ID"width="180"align="center"></el-table-column><el-table-columnprop="username"label="用户名"width="180"align="center"></el-table-column><el-table-columnprop="password"label="密码"align="center"></el-table-column></el-table></el-row><!-- 分页 --><el-row style="margin-top: 20px;"><el-paginationbackgroundlayout="prev, pager, next":total="total":page-size="pageSize"@current-change="handlePageChange"></el-pagination></el-row><!-- 错误提示 --><el-row v-if="error" style="margin-top: 20px;"><el-alert:title="error"type="error"show-icon></el-alert></el-row></div>
</template><script>
import $request from "@/util/request";export default {data() {return {tableData: [], // 表格数据loading: false, // 加载状态error: '', // 错误信息total: 0, // 总数据条数pageSize: 10, // 每页显示条数currentPage: 1, // 当前页码user:{username: 'aaa',password:'8888'}};},methods: {// 查询数据findAll() {this.loading = true;this.error = '';// $request.get('http://localhost:8099/javaee-demo/api/findAllUsers')//     .then((response) => {//       this.tableData = response.data.results;//       this.total = response.data.results.length; // 假设返回的数据包含总条数//     })//     .catch((error) => {//       this.error = '数据加载失败,请稍后重试。';//       console.error(error);//     })//     .finally(() => {//       this.loading = false;//     });$request.post('http://localhost:8099/javaee-demo/api/addUser',this.user).then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});},// 分页切换handlePageChange(page) {this.currentPage = page;//  this.findAll(); // 根据页码重新加载数据},},mounted() {// this.findAll(); // 页面加载时自动查询数据},
};
</script><style scoped>
.about {padding: 20px;
}.el-row {margin-bottom: 20px;
}.el-table {margin-top: 20px;
}.el-pagination {text-align: center;
}.el-alert {margin-top: 20px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15919.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为Mate 70 Pro或推出全新版本

关于华为Mate 70 Pro或推出全新版本的相关内容&#xff1a;可能的版本及命名。 据数码博主“定焦数码”爆料&#xff0c;华为Mate 70 Pro将推出新版本&#xff0c;命名为“优享版”。这一命名方式与华为Mate 60系列中的Mate 60 Pro乐臻版类似&#xff0c;预计优享版也会是一个组…

Linux 实操篇 实用指令

一、远程登录到Linux服务器 &#xff08;1&#xff09;为什么需要远程登录Linux linux服务器是开发小组共享的正式上线的项目是运行在公网因此程序员需要远程登陆到Linux进行项目管理或者开发画出简单的网络拓扑示意图远程登陆客户端有Xshell6&#xff0c;Xftp6&#xff0c;我…

SpringBoot 统一功能处理之拦截器、数据返回格式、异常处理

目录 拦截器 一、什么是拦截器 二 拦截器的使用 三 拦截路径配置 四 拦截器的执行流程 统一数据返回格式 统一异常处理 拦截器 一、什么是拦截器 拦截器是Spring框架提供的核心功能之一&#xff0c;主要用来拦截用户的请求&#xff0c;在指定方法前后&#xff0c;根据业务…

Django学习笔记(第一天:Django基本知识简介与启动)

博主毕业已经工作一年多了&#xff0c;最基本的测试工作已经完全掌握。一方面为了解决当前公司没有自动化测试平台的痛点&#xff0c;另一方面为了向更高级的测试架构师转型&#xff0c;于是重温Django的知识&#xff0c;用于后期搭建测试自动化平台。 为什么不选择Java&#x…

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…

如何将网站提交百度收录完整SEO教程

百度收录是中文网站获取流量的重要渠道。本文以我的网站&#xff0c;www.mnxz.fun&#xff08;当然现在没啥流量&#xff09; 为例&#xff0c;详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…

Linux ftrace 内核跟踪入门

文章目录 ftrace介绍开启ftrace常用ftrace跟踪器ftrace使用ftrace跟踪指定内核函数ftrace跟踪指定pid ftrace原理ftrace与stracetrace-cmd 工具KernelShark参考 ftrace介绍 Ftrace is an internal tracer designed to help out developers and designers of systems to find wh…

VUE项目中实现权限控制,菜单权限,按钮权限,接口权限,路由权限,操作权限,数据权限实现

VUE项目中实现权限控制&#xff0c;菜单权限&#xff0c;按钮权限&#xff0c;接口权限&#xff0c;路由权限&#xff0c;操作权限&#xff0c;数据权限实现 权限系统分类&#xff08;RBAC&#xff09;引言菜单权限按钮权限接口权限路由权限 菜单权限方案方案一&#xff1a;菜单…

Pdf手册阅读(1)--数字签名篇

原文阅读摘要 PDF支持的数字签名&#xff0c; 不仅仅是公私钥签名&#xff0c;还可以是指纹、手写、虹膜等生物识别签名。PDF签名的计算方式&#xff0c;可以基于字节范围进行计算&#xff0c;也可以基于Pdf 对象&#xff08;pdf object&#xff09;进行计算。 PDF文件可能包…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程&#xff0c;css3中的属性进展都不一样&#xff0c;浏览器厂商在标准尚未明确的情况下提前支持会有风险&#xff0c;浏览器厂商对新属性的支持情况也不同&#xff0c;所有会加厂商前缀加以区分。如果某个属性…

微信小程序分包异步化

分包1引入分包2的组件或者js 引入组件&#xff1a; 主包里的pages/tabbars/tabbar1/tabbar1页面 引入分包sub1的sub1/components/sub1-component/sub1-component组件 1、分包预下载 首先在app.js定义preloadRule "preloadRule": {"pages/tabbars/tabbar1/tabb…

后端java工程师经验之谈,工作7年,mysql使用心得

mysql 工作7年&#xff0c;mysql使用心得 mysql1.创建变量2.创建存储过程2.1&#xff1a;WHILE循环2.2&#xff1a;repeat循环2.3&#xff1a;loop循环2.4&#xff1a;存储过程&#xff0c;游标2.5&#xff1a;存储过程&#xff0c;有输入参数和输出参数 3.三种注释写法4.case …

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时&#xff0c;如果研究区较大&#xff0c;一个月的影像覆盖不了整个研究区&#xff0c;就会有缺失的地方&#xff0c;还有就是去云之后&#xff0c;有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…

unity学习34:角色相关3,触发器trigger,铰链 hingejoint 等 spring joint, fixed joint

目录 1 触发的实现条件 1.1 碰撞的的实现条件 1.2 触发的实现条件 1.3 触发器trigger&#xff0c;直接拿 碰撞器collider修改下配置即可 2 触发器相关实验&#xff1a;触发开门效果 2.0 目标 2.1 player物体的属性 2.2 新建一个trigger 物体 2.3 新建一个被trigger 控…

(1/100)每日小游戏平台系列

每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台&#xff0c;使用Flask构建的简单游戏导航网站&#xff0c;无需登录&#xff0c;让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传&#xff0c;看看能不能坚持一百天。 这些小游戏主要使用前端…

从零到一:基于Rook构建云原生Ceph存储的全面指南(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件1&#xff09;Rook Operator2&#xff09;Rook Discover3&#xff09;Rook Agent 2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.3 获取…

第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计

#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建&#xff0c;安装nodejs即可 参考&#xff1a;https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…

DeepSeek做赛车游戏

赛车模型 2D生成图片 任意AI图片软件SD&#xff0c;MJ 图片生成3D模型 车身 车轮 场景 Rodin,Tripo和Meshy 询问deepSeek如何开发 拷贝代码 将汽车运行代码拖到汽车上 再让AI写个摄像头跟随代码 再去提问deepseek控制轮胎和一些处理细节

软考高级《系统架构设计师》知识点(一)

计算机硬件 校验码 码距&#xff1a;就单个编码A:00而言&#xff0c;其码距为1&#xff0c;因为其只需要改变一位就变成另一个编码。在两个编码中&#xff0c;从A码到B码转换所需要改变的位数称为码距&#xff0c;如A:00要转换为B:11&#xff0c;码距为2。一般来说&#xff0c;…

亚博microros小车-原生ubuntu支持系列:26手势控制小车基础运动

背景知识 手指检测&#xff1a;亚博microros小车-原生ubuntu支持系列&#xff1a;4-手部检测-CSDN博客 程序功能说明 功能开启后&#xff0c;摄像头捕获图像&#xff0c;识别手势来控制小车移动。 手势 “5”小车前进拳头小车后退手势 “1”小车向左手势 “2”小车向右 运…