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 HttpServlet
    
2 重写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 HttpServlet
        
        
2 配置文件方式
      <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.通过注册页面 把数据从前端传到后端 后端返回注册成功

*注册信息插入数据库

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值