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

24.11.19 web框架

2.2配置环境变量

2.3maven命令测试

mvn -v 测试maven查看版本

2.4maven仓库配置

配置远程仓库地址

配置本地仓库

2.5idea中配置maven

2.6通过配置idea 创建maven项目

创建项目时 构建系统 选到maven

初次创建项目时 会把maven的基础依赖库(jar包) 下载到本地仓库 需要等待一会(只有第一次需要等待)

要把快照版(-SNAPSHOT)删去

安装好后 可以使用maven相关命令 对项目操作

2.7mavenweb项目 及目录结构
1.添加web结构支持

2.勾上web应用

3.改目录结构

4.处理配置文件

5.可以通过maven打包web项目

2.8maven配置文件 POM.xml文件

配置项认知 知道有什么用就可以了

这一步不要忘记!!!!<packaging>war</packaging>

常用配置项:

<?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">
<!--  pom文件标签使用的版本 自动生成   -->
    <modelVersion>4.0.0</modelVersion>

<!--  当前项目的坐标
      公司名  项目名  版本号  确认到某个jar包
 -->
    <groupId>com.javasm</groupId>
    <artifactId>day9_mavenDemo1</artifactId>
    <version>1.0</version>
<!--通过修改配置文件 让idea自动适配maven项目需要的项目打包配置
    packaging 打包方式
              jar  默认值
              war  web项目打包 要生成对应的配置文件
              pom  项目聚合使用

-->

    <packaging>war</packaging>

<!-- dependencies 所有的项目依赖(jar包)配置
    查找需要jar包坐标网站
    https://mvnrepository.com/

 -->

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>

            <version>5.11.3</version>
<!--            jar包作用域
                默认值 compile  编译运行时使用
                      test     测试案例时使用
                      provided 编译时需要   运行时不需要
                      runtime  编译时不需要 运行时需要
    -->
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.36</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.4.0</version>
        </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/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>

        </dependency>

    </dependencies>
<!--
项目配置参数
maven的setting.xml配置过了
-->
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

<!--  maven 其他插件  tomcat插件 jetty插件 内嵌运行服务器

  -->


</project>

3.通过tomcat运行web项目

tomcat是运行java代码的web应用服务器

web服务器 html css javascript

web应用服务器 html css javascript 运行程序语言代码 用代码的输出流输出页面信息

tomcat 小型免费 性能中等 可以商用 200个

jetty 框架中嵌入的小型服务器 性能较差 不能商用

jboss 中型免费 性能中等 可以商用 配置繁琐

weblogic 中大型收费 性能较好 商用 贵

部署集群

tomcat服务器详解:

1.tomcat目录结构

2.bin目录 启动停止脚本

3.conf配置

改端口号:

4其他目录 知道有什么即可 一般不会改动
5.在idea中配置tomcat插件

1.配置运行

2.添加tomcat运行实例

配置完可以修改参数

tomcat需要加载项目

控制台乱码//这个在2024版本上的idea上没有乱码无需设置GBK

但是不能忘记设置这两个图

java.util.logging.ConsoleHandler.encoding = GBK

6.idea的tomcat插件的操作按钮

服务器运行控制台

如果修改了代码 需要重新加载代码数据

使用重新部署 较快 需要重新加载的数据都会加载

idea启动的tomcat 配置文件 部署目录等 都与原始的tocmat有隔离性 可以任意操作

启动时 没有root根项目

4.web项目配合java代码运行

tomcat可以运行 静态技术(html css javascript ) 和 动态技术(通过程序语言的输出流输出页面)

4.1静态技术

4.2动态技术

servlet

* server applet
* 服务端特定服务的处理

需要继承sun公司提供的标准类型(统一的父类(统一的接口)) HttpServlet

重写指定的方法 service(){ 当次服务处理的逻辑代码 }

配置请求路径(通过请求路径 触发当前servlet的service()方法运行)

package com.javasm;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/person")
public class PersonServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      /*servlet
      * server applet
      * 服务端特定服务的处理
      *
      **/
       //req  请求相关的数据和参数
        //resp 响应相关的输出和对象
        System.out.println("person处理类运行了......");
        //通过url触发代码...
        MyPerson myPerson = new MyPerson();
        myPerson.readBook();


        PrintWriter writer = resp.getWriter();

        writer.write("data info");
        writer.close();

    }
}
4.3实现servlet的三种写法(了解)

HttpServlet ----> GenericServlet ----> Servlet

service() 请求进入时 会默认触发的方法

简化使用方法:

继承HttpServlet 不使用请求分发成get/post等方法 直接重写service()方法

在service()方法中写服务的处理代码

package com.javasm;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/person")
public class PersonServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      /*servlet
      * server applet
      * 服务端特定服务的处理
      *
      **/
       //req  请求相关的数据和参数
        //resp 响应相关的输出和对象
        System.out.println("person处理类运行了......");
        //通过url触发代码...
        MyPerson myPerson = new MyPerson();
        myPerson.readBook();


        PrintWriter writer = resp.getWriter();
        writer.write("data info");
        writer.close();

    }
}
4.4servlet两种配置方式(了解)

注解

在类上直接配置请求地址

@WebServlet("/demo2")
public class ServletDemo2 extends GenericServlet {

配置文件

<servlet>
        <servlet-name>demo3</servlet-name>

        <servlet-class>com.javasm.ServletDemo3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo3</servlet-name>
        <url-pattern>/test3</url-pattern>
    </servlet-mapping>
4.5servlet生命周期

1.服务器启动时 先准备路径和实例的对应关系(先不创建实例 懒加载)

2.当请求访问到时 先检查是否有示例对象 如果没有则创建实例 调用init方法

3.如果已经有实例 调用service()方法

4.服务器关闭时 销毁实例 调用destroy方法

5.如果配置了load-on-startup 则生命周期提前到服务器启动时创建实例

5.servlet接收请求 返回响应

package com.javasm;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;



//servlet中配置的路径
// 需要补上项目名 才是完整的访问路径
// /day9/login
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("login服务触发了....");
        //tomcat已经解析过请求报文
        //给tomcat指定解析请求体的字符编码

        //必须在读取第一个参数前设置 否则会失效
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String pwd = req.getParameter("pwd");
        //tomcat 默认使用iso8859-1对字符编码
        //System.out.println( new String(username.getBytes("iso-8859-1"),"utf-8")  );
        System.out.println(username);
        System.out.println(pwd);


        /*
        * 查数据库 看数据对不对
        * */
        //给页面反馈

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print(username+"<h1>loginok.....<h1>");
        writer.close();

    }

}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 页面中的访问路径
     相对路径
     相对根路径
     绝对路径

  -->

  <form action="/day9/login" method="post">
    <input type="text" name="username"><br>
    <input type="password" name="pwd"><br>
    <input type="submit"><br>

  </form>
</body>
</html>
html

servelt常见错误:

1.servlet配置地址没带/

报错信息中有这条

servlet映射中的<url pattern>[login]无效

2.servlet请求地址配置重复了

报错信息中有这条

名为 [com.javasm.ServletDemo1]和 [com.javasm.ServletDemo2] 

    的servlet不能映射为一个url模式(url-pattern) [/demo1]


http://www.kler.cn/a/401331.html

相关文章:

  • Python设计模式详解之5 —— 原型模式
  • Pandas-3:数据输入与输出
  • web应用安全和信息泄露预防
  • 机器学习基础04
  • MySQL的聚簇索引和二级索引
  • 父组件提交时让各自的子组件验证表格是否填写完整
  • 百度世界2024:智能体引领AI应用新纪元
  • ALS 推荐算法案例演示(python)
  • Axure PR 9 穿梭框 设计交互
  • https(day30)
  • 疫情中的图书馆管理:Spring Boot系统设计
  • 乘最多水的容器python
  • CSS:高级寄巧
  • 算法--动态规划--环形数组的最大贡献值
  • 邻接多重表、十字链表、边集数组
  • 浅谈电力行业网络安全与防护
  • centos7 安装gitlab
  • 深入理解 Vue 3 的 onLoad 和 onReady 生命周期及相关知识点
  • GNU与开源:塑造数字世界的自由基石
  • 【C++】多态:C++编程的魔法师(1)
  • tdengine学习笔记-整体架构及docker安装
  • ([LeetCode仓颉解题报告] 661. 图片平滑器
  • 深入探索Python数据可视化:自定义颜色映射、标签与进阶技巧
  • gitHub常用操作
  • 论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)
  • 从零开始打造个人博客:我的网页设计之旅