Javaweb基础知识

1.1 准备

Web:网页

静态Web (HTML):从网页中获取的数据始终不变

动态Web(JSP、Servlet):可以从服务器端动态的获取数据;

在Java中 , 动态Web资源开发的技术统称为 JavaWeb;

1.2 web应用程序

Web应用程序就是提供浏览器服务支持的一些程序

我们需要把自己开发出来的Web程序放在我们服务器的webapps目录下;

1.3 Web 发展史

静态Web

html,htm , 服务器会直接读取HTML的数据;
缺点:

  • 网页内容无法更新

  • 一些简单手段可以让他动起来

    • JavaScript
    • VBScript
      动态Web
  • 主要特征:可以从服务端获取数据,Web界面因人而变

  • 优点 :

  • 可以实现真正用户交互

  • 可以从服务端保证每个用户有自己的空间

  • 增强了用户体验性

1.4实现动态web的手段

  • PHP

  • ASP : 微软 IIS

  • JSP / Servlet : SUN 解决 B/S 架构

    • 性能比较高
    • 跨平台 (class文件)
    • 不用任何门槛 (HTML嵌套Java代码)

    。。。。。。

1.5有哪些web服务器

1.IIS (微软)
2.Tomcat (性能优良,非常的小,他是符合Web服务器最小的服务器,Apache)
3.WebLogic
4.WebShare

搭建Javaweb开发环境

理由:因为不管什么Web资源,想要被计算机访问 , 都必须要有一个与之对应的网络通信程序。

安装Tomcat服务器

百度经验有详细的教程,可以详细查看。

HTTP协议

HTTP :超文本传输协议

请求:

请求方式

请求参数

请求内容

响应:

常用值:

200 : OK

302 :重定向

404 :请求的文件不存在 , 路径写错了

500 :服务器代码写错了,你的 Java程序有问题

servlet

简介

servlet是sun公司提供的一门用于开发动态web资源的技术。
sun公司在是api中提供了一个servlet接口,用户若想用若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:1. 编写一个Java类,实现servlet接口。
2.把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

servlet运行过程

Javaweb基础知识_第1张图片

servlet实现类

Javaweb基础知识_第2张图片

使用IDEA开发Servlet

Javaweb基础知识_第3张图片

servlet映射路径问题

1.一般情况下我们都会指定一个URL,一个URL对应一个请求
2.通配问题

/*:不报错
*.do

Response

重定向

将这个请求,转换到另一个地址;
比如我们请求 http://localhost:8080/servlet01/dasdasdasda/aaaa.do 他会跳转到百度首页;

//通过响应对象重定向页面
resp.sendRedirect("404.jsp");

ServletContext

web容器在启动时,它会为每个web应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
多个servlet通过ServletContext对象实现数据共享
获取web应用的初始化参数
用ServletContext实现请求转发
利用ServletContext对象读取资源文件

通过ServletContext对象实现数据共享

通过servletcontext对象实现数据共享

通过servletcontext对象读取网站配置文件

1.新建一个properties文件

driver=com.mysql.jdbc.Driver
username=root
password=123456
url=jdbc:mysql://localhost:3306/smbms

2.编写servlet类

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

//读取properties配置文件
public class ServletDemo03 extends HttpServlet {

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //读取配置文件

        //1.获得配置文件的路径
        String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/resources/database.properties");
        System.out.println("取得的路径为:"+realPath);

        Properties properties = new Properties();
        FileInputStream is = new FileInputStream(realPath);

        properties.load(is);//把文件流加载到配置文件的对象中;

        String driver = properties.getProperty("driver");
        String username = properties.getProperty("username");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");


        //响应到网页
        resp.getWriter().println(driver);
        resp.getWriter().println(username);
        resp.getWriter().println(password);
        resp.getWriter().println(url);

        //=======================================
        System.out.println(driver);
        System.out.println(username);
        System.out.println(password);
        System.out.println(url);



    }
}

3.配置web.xml


    Demo03
    com.kuang.servlet.ServletDemo03



    Demo03
    /q3

4.访问查看
localhost:8080/demo02/q3
5.项目结构
Javaweb基础知识_第4张图片

简单的验证码

package com.kuang.servlet;




import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Map;

//验证码
public class ServletDemo04 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

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

        //resp.getWriter().println(newRandom());

        //自动刷新网页
        resp.setHeader("refresh","2");
        //验证码是一个图片 , 我们需要制作一个图片
        BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_3BYTE_BGR);

        //图片写入一些东西
        Graphics2D graphics = image.createGraphics();
        graphics.setColor(Color.red);
        String num = String.valueOf(newRandom());
        graphics.drawString(num,10,10);

        //想办法让浏览器知道我们给的是一张图片
        resp.setContentType("image/jpg");

        //让网站去打开图片
        ImageIO.write(image,"jpg",resp.getOutputStream());

    }


    //生成随机数
    public int newRandom(){
        int num = (int)(Math.random()*9+1)*100000;
        return num;
    }

    /*
    @Test
    public void  test(){
        ServletDemo04 servletDemo04 = new ServletDemo04();

        for (int j = 0; j < 100; j++) {
            int i = servletDemo04.newRandom();
            System.out.println(i);
        }
    }
    */



}

你可能感兴趣的:(Javaweb基础知识)