JavaWeb详解

本文详细介绍了JavaWeb开发的核心概念和技术,包括Web服务器、Tomcat的安装与配置、HTTP协议、Maven的使用、Servlet的原理与实践、Cookie与Session管理、JSP基础与应用、JavaBean、MVC架构、过滤器(Filter)和监听器等。通过实例讲解,帮助读者全面理解JavaWeb开发。
摘要由CSDN通过智能技术生成

1、基本概念

https://blog.csdn.net/qq_19782019/article/details/80292110

image-20220118103032758

image-20220118103834800

动态web:

image-20220118104451466

image-20220118104505000

2、web服务器

2.1技术讲解

image-20220118105456444

image-20220118105517436

image-20220118105551210

2.2web服务器

image-20220118110159912

3、Tomcat详解

3.1安装

image-20220118120753437

访问测试:http://localhost:8080/

3.2配置

image-20220118121004153

image-20220118122631619

3.3发布一个网站

image-20220118123656514

4、HTTP

4.1 什么是http

image-20220118125928003

4.2 两个时代

image-20220118130324019

4.3 HTTP请求

image-20220118130405754

image-20220118130654841

image-20220118131130490

##4.4 Http响应

image-20220118131342512

image-20220118131538188

5、Maven

5.1 Maven项目架构管理工具

image-20220118132320910

5.2 安装Maven

image-20220118132813364

image-20220118132921531

image-20220118133123262

5.3 阿里云镜像

image-20220118133419252

5.4 本地仓库

image-20220118133935430

5.6 在IDEA中使用Maven

1、启动IDEA

2、创建一个MavenWeb项目

image-20220118152012931

3、IDEA项目创建成功后,看一眼Maven配置

5.7 创建一个普通Maven项目

image-20220118154201538

image-20220118154459692

5.8 标记文件夹功能

image-20220118154823309

5.9 在IDEA中配置Tomcat

image-20220118155328605

image-20220118155609558

image-20220118155627963

image-20220118162747868

5.10 pom文件

image-20220118163330205

6、Servlet

img

6.1 Servlet简介

image-20220118171502073

image-20220118164805213

6.2 HelloServlet

image-20220118170741982

image-20220118173507260

public class HelloServlet extends HttpServlet {
   

    //由于get和post只是请求实现的不同方式,可以互相调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("Hello Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        super.doPost(req, resp);
    }
}

image-20220118174244102

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.cc.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

image-20220118191301342

image-20220118191316498

6.3 Servlet原理

6.4 Mapping

image-20220118193548001

image-20220118193627072

image-20220118193657675

image-20220118193809830

image-20220118194550108

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>error</servlet-name>
    <servlet-class>com.cc.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>/*</url-pattern>

默认走404,http://localhost:8080/s1/hello走HelloServlet

6.5 ServletContext

image-20220119114603501

1、共享数据

放置数据的类:

public class HelloServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext Context = this.getServletContext();
        String username = "cc";
        Context.setAttribute("username",username);//将一个数据保存在了ServletContext中,键值对。

    }
}

读取数据的类:

public class GetServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext context = this.getServletContext();
        String username = (String) context.getAttribute("username");

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("名字:"+username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        doGet(req, resp);
    }
}

2、获取初始化参数

<!--配置一些web应用初始化参数-->
<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
    ServletContext context = this.getServletContext();
    String url = context.getInitParameter("url");
    resp.getWriter().print(url);
}

3、请求转发

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
    ServletContext context = this.getServletContext();
    System.out.println("进入了ServletDemo04");
    //RequestDispatcher requestDispatcher = context.getRequestDispatcher("/gp");//转发的请求路径
    //requestDispatcher.forward(req,resp);//调用forward实现请求转发
    context.getRequestDispatcher("/gp").forward(req,resp);
}

image-20220119122433361

4、读取资源文件

image-20220119143556893

配置文件在resources下可以导出,在java下不能导出,要添加如上配置

image-20220119145101825

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
    InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
    Properties prop = new Properties();
    prop.load(is);
    String username = prop.getProperty("username");
    String pwd = prop.getProperty("password");

    resp.getWriter().print(username+":"+pwd);
}
db.rpoperties:
username = root
password = 123456

6.6 HttpServletResponse

image-20220119152711849

1、简单分类

image-20220119153029468

image-20220119153231926

2、下载文件

image-20220119153738741

public class FileServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //获取文件路径
        String realPath = "E:\\code\\IntelliJ IDEA 2021.3.1\\project\\javaweb-02-servlet\\response\\src\\main\\resources\\1.jpg";
        System.out.println("下载文件路径:"+realPath);
        //获取文件名
        String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
        //设置浏览器能够支持下载,中文文件名URLEncoder.encode编码
        resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
        //获取下载文件输入流
        FileInputStream in = new FileInputStream(realPath);
        //创建缓冲区
        int len = 0;
        byte[] buffer = new byte[1024];
        //获取OutputStream对象
        ServletOutputStream out = resp.getOutputStream();
        //将FileInputStream流写入到buffer缓冲区,使用ServletOutputStream将缓冲区数据输出到客户端
        while ((len=in.read(buffer))>0){
   
            out.write(buffer,0,len);
        }
        in.close();
        out.close();

    }

3、验证码功能

public class ImageServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //浏览器3秒自动刷新一次
        resp.setHeader("refresh","3");
        //在内存中创建图片
        BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值