JavaWeb开发入门(Servlet)1

JavaWeb开发入门

1.1准备

web:网页

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

动态Web(Jsp,Servelt):可以从服务器动态的获取数据;

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

1.2Web应用程序

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

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

1.3Web发展史

  • 静态web

  • html,htm,服务器会直接读取HTML的数据

JavaWeb开发入门(Servlet)1_第1张图片

  • 缺点:

    • 网页内容无法更新
    • 一些简单的手段可以让他动起来
      • JavaScript
      • VBSScript
  • 动态Web

    • 主要特征:可以从服务器端获取数据,Web界面因人而异

JavaWeb开发入门(Servlet)1_第2张图片

  • 优点:
    • 可以实现真正的用户交互
    • 可以从服务器端保证每个用户有自己的空间
    • 增强了用户体验性

实现动态Web的手段

  • PHP:
  • ASP:微软
  • JSP/Servelt:Sun解决 b/S架构 Applet
    • 性能比较高
    • 跨平台
    • 不用任何门槛(HTML嵌套Java代码)

有哪些Web服务器

1.IIS(微软)

2.Tomact(性能优良,非常的小,它是符合Web服务器最小的服务器,Apache)

3.weblogic

4.WebShare

搭建tomact环境

思考?为什么要搭建JavaWeb环境

因为不管什么web资源,想要被计算机访问,都必须要与一个与之对应的网络通讯程序

1.下载tomcat:http://tomact.apache.org/

2.下在完成后,解压到任意一个目录下

3.bin目录是存放一些课执行文件,启动或关不

4.conf存放一些Tomact配置文件

5.lib存放服务器需要的Jar包

6.logs日志文件

7.temp:临时文件

8.webapps:存放网站和web项目的地方

9.work:Tomcat的工作目录

注意:不能关闭Tomact的DOS窗口,否则Tomact就停止了

访问Tomact服务器

通过localhost:8080访问

Tomact启动常见问题

1.启动乱码问题(不影响操作)

conf/logging.properties中增加了一句java.util.logging.ConsoleHandler.encoding = UTF-8,导致在有些windows系统中出现中文乱码。修改方法:
JavaWeb开发入门(Servlet)1_第3张图片

2,JAVA_HOME配置是否成功,必须要这个名字

3,闪退问题

  • 打开bin目录下的catalina.bat,增加一个jdk和一个jre目录
  • set JAVA_HOME=jdk 安装目录
  • set JRE_HOME=jre 安装目录

Tomact服务器

1.8080端口问题

在cof/server.xml配合文件配置了我么服务器相关一些服务,我们可以修改其内容,改tomact运行端口号

如何发布一个项目

发布到:tomact-9.0

项目中必须要有一个Web-INF目录,其中必定有一个web.xml

网络请求的终极步骤讲解

JavaWeb开发入门(Servlet)1_第4张图片

使用IDEA搭建WEB开发环境

1.打开IDEA

2.新创一个Web项目

3.配置Tomcat服务器

4.配置好之后需要导包

JavaWeb开发入门(Servlet)1_第5张图片

HTTP协议

HTTP:超文本传输协议

请求:

请求方式

请求参数

请求内容

响应:

常用值

200:ok

302:重定向

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

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

Servlet

简介

  • Servlet是sun公司提供的一门用于开发动态web资源的技术
  • Sun公司在API中提供了servlet接口,用户若想开发一个动态web资源,需要
    • 编写一个Java类,实现Servlet接口
    • 把开发的Java类部署到web服务器中
  • 按照一种约定俗称的习惯,我们把实现了servlet接口的java程序,称之为Servlet

Servlet实现类

1.创建Servlet的两种方式

方式一:创建一个java文件,继承HttpServlet,重写里面的方法

public class Servlet3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

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

方式二:直接在idea里面创建一个servlet

public class Servlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
     
    }
}

2.配置web.web中的Servlet的映射mapping url;



    
        ServletTest01
        com.wang.demo.ServletTest01
    


    ServletTest01
    /test


注意:


    ServletTest01
    /test//这里记得一定要加“/",否则服务器会报错

3.启动tomact服务器

Servlet映射路径问题

1.一般情况下,我们都会指向指定的一个URL,一个URL对应一个请求

2.通配问题

/*:不报错

在这里插入图片描述

/之后可以随便输,都能跳转到指定的页面

/*.do:会报错,不需要/

    ServletTest01
    *.do


在这里插入图片描述

do前面可以随便输,都可以跳转到指定的页面

重定向

将这个请求,转到另一个地址

比如我们需要跳转到百度,只需:response.sendRedirect(“https://www.baidu.com/”);

package com.wang.demo;

import java.io.IOException;
import java.io.PrintWriter;

public class ServletTest01 extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
       doGet(request,response);

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.sendRedirect("https://www.baidu.com/");
        System.out.println("你好");

    }
}

ServletContext

1.通过ServletContext实现数据共享

就是这一个Servlet可以获得另一个Servlet的信息

第一个Servlet需要:this.getServletContext();

context.setAttribute(“name”,name);

第二个需要:

​ String name = (String) context.getAttribute(“name”);

​ String name = (String) context.getAttribute(“name”);

package com.wang.servlet;

import javax.servlet.ServletContext;
import java.io.IOException;

@javax.servlet.annotation.WebServlet(name = "Servlet")
public class Servlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request,response);
    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        ServletContext context = this.getServletContext();
        String name="佩奇";
        context.setAttribute("name",name);
        response.getWriter().print("信息录入成功"+name);

    }
}
package com.wang.servlet;

import javax.servlet.ServletContext;
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;

@WebServlet(name = "Servlet2")
public class Servlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context = this.getServletContext();

        String name = (String) context.getAttribute("name");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("我收到的消息是"+name);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
    }
}

注意:我们要防止乱码问题的产生,就要在Servlet中设置编码问题

通过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);
    }

}





    //响应到网页
    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);
    }

}

你可能感兴趣的:(JavaWeb开发入门(Servlet)1)