首页/新闻资讯/正文详情

java_web [Maven]项目

发布时间:2026/11/6 1:12:15 来源:云帆数科 栏目:资讯中心
java_web [Maven]项目
一. web项目搭建及web服务器(一) 一般Java项目(二) java_web 项目创建(三) web服务器Web服务器:【apacthapacthTomcatweblogic】发布项目—最终运行1. 结构剖析:tomcat2.tomcatserver.xml配置文件x相关的配置场景(四) tomcat项目部署tomcat项目部署:将项目复制到 tomcat 里 webapps 目录里tomcat 导进IDEA(五) jsp详解及内置对象Jsp概念:内嵌java代码的html页面—交互式页面Jsp的编译过程:jdk—现将jsp编译成一个.java文件—再把他编译成.class文件1. 添加.jar包添加到项目目录里的lib目录中2. 表单提交数据formaction="addUser.jsp"method="post"id="myFrom"name="addUserform"form 提交数据—提交的是表单元素数据【控件】Action:数据提交地址?【html,jsp ctr,邮箱】Method:数据提交方式【get/post…枚举类型】get提交(显示)post提交(隐式)Name:给表单起名字—方便与js提交表单 3. jsp接收数据.jsp文件解析级应用📌request 请求对象:—封装所有客户端请求的对象—将对应的表单元素名和值以键值对的形式封装—用户通过其对应的方法就能获得对应的值String name=request.getParameter("userName");📌Response 响应对象response.sendRedirect("HD_fwdPractList.jsp");!--返回到 HD_fwdPractList.jsp 界面--⚪Request:当客户端发起请求时创建—当服务端接收到请求时销毁⚪Response:当服务端发起响应时创建—当客户端接收到响应时销毁📌Jsp常用内置对象:Out对象—用于向页面输出信息Out.print()out.print("scriptalert('修改成功');window.location.href='YH_UserList.jsp'/script");📌Seesion 会话对象⚪会话?:当客户进入一个站点到离开的那段时间称之为一会话:session监控用户在此会话过程中的一切动作⚪由于session对象的生命周期的特殊性,在开发过程中,用session对象在多个页面共享参数⚪Session对象的生命周期:当用户进入一个站点就创建,关闭浏览器销毁【默认的销毁时间为30min】%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%!--导入 method 类--%@ page import="com.qf.doman.method" %!--创建对象,下面直接使用--jsp:useBeanid="m"class="com.qf.domain.method"/jsp:useBean!--在 ‘% %’ 里面可以写Java代码--%!--post提交中文乱码转换--request.setCharacterEncoding("UTF-8");!--get方式提交,中文乱码最终解决--String name = request.getParameter("userName"); String s = new String(name.getBytes("iso8859-1"), "UTF-8");!--获得表单数据--String name=request.getParameter("userName"); String pass=request.getParameter("passWord");!--调用method类中的方法--method m=new method(); login p =m.checklogin(name, pass);!--响应界面--response.sendRedirect("HD_fwdPractList.jsp");!--向页面输出信息--out.print("scriptalert('修改成功');window.location.href='YH_UserList.jsp'/script");!--设置标识, 用于数据共享--session.setAttribute("username", name);!--销毁sestion会话对象--sestion.invalidate(); %html% % 外面可以写html代码!--获取 sestion 共享的数据 session.getAttribute("username");--span ahref="javaScript:quanxian()"id="names"%=session.getAttribute("username") %/a/span/html4. jsp 中显示获取的多个数据%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%jsp:useBeanid="m"class="com.qf.doman.method"/jsp:useBean%@ page import="com.qf.doman.pojo.user" % % Listuserlist=m.getUser(); %bodytableclass="tablelist"style="text-align:center;width:100%"theadtrthinputid="s"name=""type="checkbox"value=""onclick="checkAll()"//thth编号iclass="sort"imgsrc="images/px.gif"//i/thth用户名/thth密码/thth权限/thth操作/th/tr/theadtbody%for(int i=0;ilist.size();i++){%trtdinputid="ss"name=""type="checkbox"value="%=list.get(i).getUid() %"//tdtd%=list.get(i).getUid() %/tdtd%=list.get(i).getUname() %/tdtdinputreadonly="readonly"type="password"value="%=list.get(i).getUpass()%"/tdtd%=list.get(i).getUroot() %/td/tr%} %/tbody/table/body(六) Servlet基本概念,原理及实操📌Java Servlet 是与平台无关的服务器端组件,它运行在Servlet 容器中;📌Servlet容器负责Servlet和客户的通信以及调用Servlet的方法;📌Servlet和客户的通信采用“请求/响应”模式⚪后台版的 jsp📌每一个JSP页面就是一个servlet📌JSP在执行时,Web服务器先要把JSP页面翻译成Java源代码,而这个源代码就是一个servlet📌servlet 可以完成JSP的所有功能1. Servlet映射配置2. servlet 类创建及常用方法实操@WebServlet(name="Servlet",value="/Servlet")publicclassServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{// 处理 get 请求}@OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{// 处理 post 请求//弹框乱码转换response.setContentType("text/html;charset=UTF-8");//post提交中文乱码转换request.setCharacterEncoding("UTF-8");// 获取out对象PrintWriterout=response.getWriter();// 获取session对象HttpSessionsession=request.getSession();//获得表单数据Stringname=request.getParameter("userName");Stringpass=request.getParameter("passWord");// 设置标识, 用于数据共享session.setAttribute("username",name);// 获取共享数据Stringuname=(String)session.getAttribute("username");out.print("scriptalert('修改失败');window.location.href='HD_fwdPractList.jsp'/script");}}(七) Ajax—实现局部刷新和异步提交—请求📌Ajax的概念:利用js实现的异步交互机制—局部刷新📌Ajax的分类:1)原生态ajax :XmlHttprequest(核心对象):–根据不同浏览器创建不同的XmlHttprequest对象【先判断你使用的是什么浏览器----】兼容性问题-----物联网—c c++| 底层交互xml 动态创建xml2)jquery封装的ajax:Ajax参数说明:script$.ajax({type:'post',//设置数据请求方式async:true,//设置提交模式—异步提交url:'insertUsers',//请求地址或数据提交地址---【controllor 接口】servletdataType:'json',//设置接受服务端返回数据类型// dataType : 'text',// Ajax提交数据data:{name:”cuihua”,//需要带的参数或提交的数据age:18},// data:$('#myFrom').serialize(), //将表单数据序列化// myFrom 是表单 id// Ajax 接收数据success:function(data){//当数据提交成功或者接口请求成功自动执行的函数Data:就是服务端返回的数据//业务逻辑自己写if(data.trim()==1){alert("发布成功");window.location.href="HD_fwdPractList.jsp";}elseif(data.trim()==0){alert("发布失败");window.location.href="HD_fwdPractList.jsp";}},error:function(data){//当数据提交失败或者接口请求失败自动执行的函数Data:就是服务端返回的数据}});/script二. jdbc 链接数据库(一) jdbc 链接数据库原理(二) jdbc 链接数据库导入mysql-connector-java-8.0.30.jarjar 包生成库文件3.jdbc 链接数据库各种情况及方法讲解(理解就行)importjava.sql.*;importjava.util.HashMap;publicclassTestConnectionMysql{publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{HashMapString,Objectmap=newHashMap();// 面试:本机的几种表示形式// a:localhost b:127.0.0.1// c: ip地址(cmd - ipconfig): 192. 168.108.1 d:讣算机名// 服务端口:// mysql :3306 sqlSever :1433// orcl: 1521 sqlite: 直接链接--文件// 1. 加载驱动Class.forName("com.mysql.cj.jdbc.Driver");// 固定写法,加载驱动// 2. 用户信息和urlStringuserName="root";// 用户名StringpassWord="123456";// 密码StringsqlName="som";// 数据库名称Stringurl="jdbc:mysql://localhost:3306/"+sqlName+"?serverTimezone=UTC"+"useSSL=falseallowPublicKeyRetrieval=trueserverTimezone=GMT%2b8";// 3. 连接成功,返回值是--数据库对象(connection) 代表数据库 是一种对象Connectionconnection=DriverManager.getConnection(url,userName,passWord);// 4. 创建执行对象Statementstatement=connection.createStatement();// 执行对象 就可以调用对应的方法,完成对应操作// 5. 指向sql的对象去执行sql语句// Statement 方法解析// 1)executeQuery (查询)// public abstract ResultSet executeQuery(String sql) throws SQLException// 参数:静态的SQL SELECT(查询)语句// 返回值:包含有查询产生的数据的ResultSet;永远不为nullStringsql="select * from user where phone = '15199235042'";ResultSetresultSet=statement.executeQuery(sql);// 这里count是:搜索出了多少条数据intcount=resultSet.getMetaData().getColumnCount();// --3// resultSet.next() 的值是:查询成功为true,调用一次后其值立马变为false;查询失败为false;while(resultSet.next()){// (1) 查询出来后,直接获取查询结果(一个一个单独获取)// field 标识的字段名【键】-- phone (获取的是【键】)Stringfield=resultSet.getMetaData().getColumnName(1);// field1 标识的值【值】-- 15199235032 (获取的是【值】)Stringfield1=(String)resultSet.getObject(field);// String phone = (String) resultSet.getObject("phone"); 键也可以不用获取,自己直接给即可// (2) 查询出来后,直接获取查询结果(一次性获取全部查询结果)// 注意下标是从1开始的for(inti=1;i=count;i++){// field 标识的字段名【键】-- phone (获取的是全部的【键】)Stringfield2=resultSet.getMetaData().getColumnName(i);// field1 标识的值【值】-- 15199235032 (获取的是全部的【值】)Stringfield3=(String)resultSet.getObject(field2);// String phone = (String) resultSet.getObject("phone"); 键也可以不用获取,自己直接给即可// (3) 查询出来后,放进map集合中 (一次性全部放进去)map.put(field2,resultSet.getString(field2));// (4) {phone=15199235032} 根据键,筛选数据库里面查到的值,并把查到的值赋值给对应的键map.put("phone",resultSet.getString("phone"));// 根据键,获取值Stringphone1=(String)map.get("phone");System.out.println(phone1);}}// (5) 在不知道表结构的情况下获取 表源数据 表源数据对应的字段类型 表数据Stringsql1="select * from biao";ResultSetres=statement.executeQuery(sql1);//结果集表源数据--表结构破解ResultSetMetaData(表信息)ResultSetMetaDatameta=res.getMetaData();//获得所有字段总数 (搜索出了多少条数据)intcount1=meta.getColumnCount();//遍历字段,获得对应的信息for(inti=1;i=count1;i++){//获取字段名StringcolumnName=meta.getColumnName(i);//获取对应的字段类型StringcolumnType=meta.getColumnTypeName(i);// 现在已经知道了表结构,就可以运用上面的四类方式进行操作}// 2)executeUpdate (增删改)// public abstract int executeUpdate(String sql) throws SQLException// 参数:一条 SQL INSERT(插入)、UPDATE(更新) 或 DELETE(删除) 语句或没有返回值的 SQL 语句// 返回值:如果执行 INSERT、UPDATE 或 DELETE 语句返回行数或者为执行没有返回值的语句返回 0Stringsqls="INSERT INTO user(phone, pwd, mibao, jijiu) VALUES('123', '123', '123', '123');";intnumber=statement.executeUpdate(sqls);// number = 1// 6. 释放连接resultSet.close();statement.close();connection.close();}}封装连接数据库,增删查改等 方法importjava.sql.*;publicclassconnectionMysql{/* *写方法的一般原则: * 1. 知道这个要干什么?【业务理解】 * 2. 要不要返回值?返回值的意义? * a: 调用此方法的目的就是为了拿到返回值 * b: 通过返回值判断方法的执行过程 * 3. 方法要不要参数? * */Connectioncon=null

相关推荐

cookie反爬虫-acw系列参数逆向(诸葛找房)
cookie反爬虫-acw系列参数逆向(诸葛找房)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:12:15

Java 基础手册
Java 基础手册

Java 手册小计 前言: 特此,声明本人之前已经学习过 ,Java这里并不会适合初学童鞋,而是一个面向开发和复习的朋友,个人整理的一篇语法文档: 加油,欢迎一起学习呀~👍 后面准备对自己… · 2026/11/6 1:11:14

MATLAB 根据经纬坐标生成点的shp文件或流域的边界shp文件
MATLAB 根据经纬坐标生成点的shp文件或流域的边界shp文件

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:11:14

如何批量拿到带时间轴的完整歌词:163MusicLyrics 歌词工具使用指南
如何批量拿到带时间轴的完整歌词:163MusicLyrics 歌词工具使用指南

如何批量拿到带时间轴的完整歌词:163MusicLyrics 歌词工具使用指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 给视频配字幕,歌词却只有网页上… · 2026/11/6 1:14:15

drawio-skill 图表类型指南:ERD 到神经网络图的 11 种预设
drawio-skill 图表类型指南:ERD 到神经网络图的 11 种预设

drawio-skill 图表类型指南:ERD 到神经网络图的 11 种预设 【免费下载链接】drawio-skill Agent skill that turns natural language, code, Terraform/K8s, SQL, OpenAPI, AsyncAPI, Protobuf and GraphQL sources into editable, tested draw.io architecture dia… · 2026/11/6 1:14:15

3 步搞定群晖「硬盘不受支持」:把第三方盘写入 DSM 兼容数据库(Synology_HDD_db)
3 步搞定群晖「硬盘不受支持」:把第三方盘写入 DSM 兼容数据库(Synology_HDD_db)

3 步搞定群晖「硬盘不受支持」:把第三方盘写入 DSM 兼容数据库(Synology_HDD_db) 【免费下载链接】Synology_HDD_db Add your HDD, SSD and NVMe drives to your Synologys compatible drive database and a lot more 项目地址: https://gi… · 2026/11/6 1:14:15

Xiaomi-OCR-0 评测流水线实战:两阶段推理与 OmniDocBench 复现全指南
Xiaomi-OCR-0 评测流水线实战:两阶段推理与 OmniDocBench 复现全指南

【免费下载链接】Xiaomi-OCR-0 Xiaomi-OCR-0 项目地址: https://gitcode.com/gh_mirrors/xi/Xiaomi-OCR-0 点击查看 免费下载 Xiaomi-OCR-0 评测流水线帮助你将文档图片批量转成 Markdown,并用 OmniDocBench v1.6 标准指标打分。本文带你从零走通两条推… · 2026/11/6 1:14:15

还不了解 Pinia 状态管理库⁉️
还不了解 Pinia 状态管理库⁉️

还不了解 Pinia 状态管理库⁉️🍍 什么是Pinia❓状态管理工具⁉️: 学习过Vue2的小伙伴,一定都知道Vuex,什么不知道,请看VCR👉 ; Vuex 是一个专为 Vue.js 应用程序设计的状态管理库&#xff0… · 2026/11/6 1:14:15

通信协议知识—CAN、Modbus、SPI、IIC等
通信协议知识—CAN、Modbus、SPI、IIC等

目录 目录 基础知识: ​编辑 一、spi 1、通信介绍: 2、设备时钟: 3、数据传输4种模式: 二、UART 1、RS232协议: 2、RS485协议: 特点 : 拓扑图: 电路图: 三、IIC总线 1、特点: 2、iIC总线寻找方式: 3、通信过程: 四、CAN协议 1、基础知识 2、 C… · 2026/11/6 1:13:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码