当前位置: 首页 > news >正文

day11_web应用构建

day11_web应用构建

1业务程序代码 web应用程序中(javaEE web application)

web项目结构 构建工具 maven web应用中怎么写代码

2专用的web服务器中运行 tomcat(免费 稳定)

tomcat如何部署运行 如何与web应用代码结合 如果与idea集成 方便测试

1web项目结构

1web项目目录结构 与基础java项目不同 多了存放web相关资源的目录

2web项目打包结构 war包 里边有web资源 和 java的classes文件

2项目管理工具 maven

maven有统一的项目目录结构 开发 测试 部署环节有辅助功能

maven通过命令 统一编译 集成junit统一测试 通过命令打包

maven 统一jar包管理

2.1maven配置

配置本地仓库路径

<!-- 配置自己的本地仓库路径 --><localRepository>D:\maven\repository</localRepository>

配置国内镜像地址

    <!-- 配置ali远程仓库 --><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url></mirror>

2.2idea中配置maven

先退回到项目目录 点setting

覆盖配置文件setting.xml

2.3通过maven构建项目

可以使用maven的功能按钮

多了pom.xml项目配置文件

配置maven项目的参数

2.4pom.xml配置文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- maven配置版本   --><modelVersion>4.0.0</modelVersion>
<!-- 当前项目的坐标 --><groupId>com.javasm</groupId><artifactId>day11_mavenDemo</artifactId>
<!-- 版本号版本号的划分
​1.0.1大版本 重大更新小版本 功能改进最后小版本  修复bug
​后边带英文的 一版不是特别稳定的版本snapshot 快照版  远程仓库不让传alpha    内测beta     进一步内测GA 生产准备版本  等
​--><version>1.0.1</version>
​
<!-- 配置项目依赖 jar包   --><dependencies>
<!--  通过坐标引入jar包https://mvnrepository.com/ 查坐标的网站查到需要用的jar包坐标 在项目中标记 会自动下载 打包时自动打包
​scope jar包作用范围  (在坐标网站标记了正确的时 不要随便改)compile   编译运行时都生效runtime   仅运行时生效provided  编译时生效 运行时不生效test      测试时生效
​
-->
<!--        <dependency>-->
<!--            <groupId></groupId>-->
<!--            <artifactId></artifactId>-->
<!--        </dependency>-->
​<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.3.0</version></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency>
​<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>
​<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>
​<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.13.4</version><scope>test</scope></dependency>
​
​</dependencies>
​
<!-- 打包方式普通java   jar (默认值)web项目    war项目聚合    pom
​-->
<packaging>jar</packaging>
​
​
<!-- 项目配置参数jdk版本字符编码字符集--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
​
</project>

注意:1 如果改了配置文件 一定要刷新配置 才能生效

注意: 2module模块功能 是配合项目聚合使用的 使用了maven之后 不要随意使用

2.5通过maven构建web项目

借助骨架创建

pom.xml配置文件

<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 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion>
<!-- 坐标 --><groupId>com.javasm</groupId><artifactId>day11_webproj</artifactId><version>1.0-SNAPSHOT</version>
<!-- 打包方式 --><packaging>war</packaging>
<!--&lt;!&ndash; 当前项目的别名 &ndash;&gt;-->
<!--  <name>day11_webproj Maven Webapp</name>-->
<!--&lt;!&ndash; 项目访问地址 &ndash;&gt;-->
<!--  <url>http://maven.apache.org</url>-->
​<dependencies><!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.3.0</version></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency>
​<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>
​<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>
​<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.13.4</version><scope>test</scope></dependency>
​</dependencies>
​
<!--&lt;!&ndash; 编译参数  &ndash;&gt;-->
<!--  <build>-->
<!--&lt;!&ndash; 打包名字 默认用项目名   &ndash;&gt;-->
<!--    <finalName>day11_webproj</finalName>-->
<!--  </build>-->
<!-- 适配jdk版本 --><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
​
​
</project>
​

3tomcat

3.1tomcat介绍

1tomcat是一个独立的软件 可以独立运行

2tomcat作用是加载web应用项目 运行java语言的web应用程序

web服务器知识:

1tomcat是一种web应用服务器 可以显示静态资源 也可以使用程序代码 tomcat weblogic jetty jboss

web服务器 只可以显示静态资源 不能跑程序代码 apache Nginx‌

2tomcat 中型 免费 可商用 200个 多服务器做负载均衡

jboss 中大型 免费 可商用

jetty 小型 免费 不能商用 集成到框架中方便测试

weblogic 大型 收费 商用

支持的并发量

3.2与开发工具集成 方便测试和开发

1配置tomcat插件

tomcat会自动配置启动参数

做项目部署配置

注意:通过idea中tomcat插件启动时 没有使用原始tocmat中的配置参数和目录结构 只使用其中的jar包和代码

所以 通过idea启动的tomcat 看不到localhost:8080里的欢迎页面 只能看当前项目的代码

3.3tomcat按钮和功能

改了代码 重新部署

热部署 ---->改完直接自动编译 (容易卡 看情况使用)

功能按钮:

4Servlet

4.1servlet是什么

sun公司提的标准

自己的业务逻辑处理代码 必须符合Servlet的标准 才能在web应用服务器中运行

如果让自己的业务逻辑代码 能通过浏览器地址栏触发运行 需要做

1 继承指定的类对象 public class Login extends HttpServlet2 重写service()方法 service()方法是通过请求地址默认触发的方法
​
3 配置请求地址与类的对应关系  @WebServlet("/login")  
4.2 servlet三种实现方式
    * 实现方式1*   extends HttpServlet*   直接重写 doGet  doPost*   service()默认执行 直接继承父类的service()** 实现方式2*   extends  GenericServlet*   重写 service()** 实现方式3*   implements Servlet接口*   实现 service()
4.3servlet 两种请求路径配置方式
1 用注解  @WebServlet("/login") public class Login  extends HttpServlet2 配置文件方式<servlet><servlet-name>login2</servlet-name><servlet-class>com.javasm.controller.Login2</servlet-class></servlet><servlet-mapping><servlet-name>login2</servlet-name><url-pattern>/login2</url-pattern></servlet-mapping>    

通过java虚拟机读取tomcat中的项目代码是 加载tomcat核心容器 把业务逻辑代码的请求路径 和 类对象 映射到核心容器中

4.4生命周期
1 当请求到指定的servlet代码时 做实例化..... 调用init()...
2 如果已经有实例对象 直接调用service()...    
3 后续访问  直接调用service()......(使用单实例的方式)    
4 当服务器关闭时 销毁servlet对象 调用 destroy().....    5 如果配置了   <load-on-startup>1</load-on-startup> 改为服务器启动时自动创建实例对象 

4.5 会导致服务器服务器无法正常运行的错误配置

1请求地址重复
名为 [com.javasm.controller.Login]和 [com.javasm.controller.Login3] 的servlet不能映射为一个url模式(url-pattern) [/login]

注意:不同的servlet请求地址不要重复

2请求路径没有带/
java.lang.IllegalArgumentException: servlet映射中的<url pattern>[login3]无效

注意:最终请求路径 /项目名/服务 /day11/login

@WebServlet("login") 这样配置无法正常启动 @WebServlet("/login")

4.6 tomcat与 idea控制台编码格式冲突

tomcatvm中加入参数

-Dfile.encoding=UTF-8

5通过servlet与浏览器交互数据

servlet常用api

1获取请求参数
String name = req.getParameter("name") get/post 都用这个方法 取到的数据类型都是字符串
2设置请求参数编码格式(处理请求乱码)(get不用专门设置 post需要指定)
//需要在第一次解析参数前设置 才能生效
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name")
3设置响应头
//设置 ContentType响应头  返回数据的类型  和 字符编码
//text/html          文本形式的html标签
//application/json   json字符串
//不要随意覆盖 
//需要在获取输出流之前设置 才能生效
resp.setContentType("text/html;charset=utf-8");
4获得输出流
//PrintWriter 封装后的字符流 可以直接输出字符
PrintWriter writer = resp.getWriter();
writer.print("xxxx页面的文本信息")
writer.close()  

1.创建maven项目 使用idea中的工具 启动tomcat 测试servlet代码

2.通过注册页面 把数据从前端传到后端 后端返回注册成功

*注册信息插入数据库

http://www.dtcms.com/a/487658.html

相关文章:

  • 网站开发项目流程图基于推荐算法的网站开发
  • LeetCode 3350. 检测相邻递增子数组 II
  • 【底层机制】【Android】深入理解UI体系与绘制机制
  • 注册一个软件需要多少钱牡丹江网站seo
  • 高校英文网站建设贵阳网站推广有几家
  • 建设一个网络交友的网站的论文网站系统有哪些
  • Echarts【图表生成】
  • #深入解析Golang命令行框架Cobra:构建强大的CLI应用
  • 智能体开发基础
  • 亚当学院网站视频建设教程wordpress flash插件下载
  • 矩阵奇异值分解算法(SVD)的导数 / 灵敏度分析
  • 如何查看一个网站是不是用h5做的怎样做企业营销网站
  • Valentina Studio:一款跨平台的数据库管理工具
  • Jmeter接口测试与压力测试
  • 网站建设公司营业执照经营范围网推是干嘛的
  • 合规化短剧分销系统开发:用户数据保护、佣金税务合规与内容版权风险规避
  • 手机网站封装用户体验做问卷网站好
  • 算法性能的核心度量:时间复杂度与空间复杂度深度解析
  • 【shell】每日shell练习(系统用户安全审计/系统日志错误分析)
  • 【Kylin V10】SSLERRORSYSCALL 的修复方法
  • 注册一个网站域名一年需要多少钱夏县网站建设
  • 外贸企业网站建设一条龙大数据营销方案
  • 【vLLM】源码解读:vllm 模型加载到推理全流程
  • Keil MDK系列:(四)SCT文件编写教程
  • 如何熟悉网站项目的逻辑做班级网站的实训报告
  • 前端 TypeScript 项目中的“守护者”:Zod 实战使用心得与最佳实践
  • 1.n8n 的搭建与使用
  • 公司网站SEO优化哪个做得好永久免费可联网的进销存软件
  • qq官方网站登录入口做本地网站怎么挣钱
  • 睢县做网站怎样查找自己建设的网站