Javaweb-eclipse连接数据库&servlet

1.java_web概述

java_web应用是由servlet,html网页,类,以及其他资源组成。java_web应用可以在各种供应商提供的容器中运行。

常用的容器有 tomcat ,resin,weblogic等。

2.什么是servlet

servlet本身就是一种Java类,这种Java类提供了web形式的方法(JavaEE规范中),只要实现了servlet接口的类,都是一种servlet资源。
    
HTML只能用来保存静态内容,而通常情况下,静态页面很难满足实际应用的需要,鉴于此,动态页面的概念被引入。所谓动态页面,指的是能够根据不同时间、不同用户而显示不同内容的页面,例如常见的论坛、留言板、电子商务网站等都是通过动态页面来实现的。

Servlet是采用Java语言编写的服务器端程序,它运行于Web服务器中的Servlet容器中,其主要功能是提供请求/响应的Web服务模式,可以生成动态的Web内容,而这正是HTML所不具备的功能。

与其他生成动态页面的技术相比,Servlet有诸多优点,具体而言,主要表现在如下几个方面:

  1. 较好的可移植性。
    由于Java语言具有跨平台和可移植性强的特点,使得Servlet也有较好的可移植性,即无需修改代码就可以部署到多种不同类型的Web服务器上。

  2. 执行效率高。
    由于CGI针对每个请求都会创建一个进程来处理,而Servlet针对每个请求创建一个线程来执行,而创建线程比创建进程的开销要小,因此与CGI相比,Servlet在交互过程中有更短的响应时间,响应效率更高。

  3. 功能强大。
    Servlet可以与Web服务器进行交互,而CGI却无法与Web服务器直接交互。

  4. 使用方便。
    Servlet提供了许多非常有用的接口以用来读取或设置HTTP头消息,处理Cookie和跟踪会话状态等。

  5. 可扩展性强。
    由于Servlet是用Java语言编写的,因此它具备了Java语言的所有优点。

Java语言是健壮的、面向对象的编程语言,它很容易扩展,Servlet自然也具备这样的优点。为了更好地说明Servlet,在介绍Servlet处理请求的过程前,首先引入Servlet程序的基本结构,如下所示:
在这里插入图片描述
从以上Servlet的程序结构中可以看出,在Servlet中,并没有main()方法,连所谓的入口方法都没有,那么它到底是如何执行的呢?其实,它是在容器的控制下执行的,最常被使用的容器为Tomcat。当Web服务器获取到一个对Servlet的请求时,该服务器将会把这个请求交给对应的容器来处理,容器通过调用Servlet的方法(doGet()或doPost())来响应客户端的请求。

3.doPost()方法与doGet()方法怎么选择

从Web容器处理HTTP请求的流程中可以看出,最终的请求都会交给Servlet来处理,而Servlet是通过调用service()方法来处理请求的,service()方法会根据不同的请求类型分别调用doPost()方法(用于处理POST请求)或doGet()方法(用于处理GET请求)来处理用户请求,实现对客户的响应。如果请求是GET,就调用doGet()方法;如果请求是POST,就调用doPost()方法。在Servlet接口和GenericServlet(一个通用的、不特定于任何协议的Servlet,它实现了Servlet接口)中是没有doGet()方法与doPost()方法的,而HttpServlet中定义了这些方法,但是都是返回error信息,所以,当定义一个Servlet时,都必须实现doGet()方法或doPost()方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。

具体而言,当HTTP请求中的method属性为get时,调用doGet()方法;当method属性为post时,则调用doPost()方法。

4.JSP与Servlet有何异同

JSP与Servlet的相同点为:JSP可以被看作一个特殊的Servlet,它只不过是对Servlet的扩展,只要是JSP可以完成的工作,使用Servlet都可以完成,例如生成动态页面。由于JSP页面最终要被转换成Servlet来运行,因此处理请求实际上是编译后的Servlet。

JSP与Servlet的不同点为:

①Servlet的实现方式是在Java中嵌入HTML代码,编写和修改HTML非常不方便,所以它比较适合做流程控制、业务处理;而JSP的实现方式为在HTML中嵌入Java代码,比较适合页面的显示,例如,在Struts框架中,Servlet位于MVC设计模式的控制层,而JSP位于视图层。

②Servlet中没有内置对象,JSP中的内置对象都是必须通过HtpServletRequest对象、HttpServletResponse对象以及HtpServlet对象得到。

5.如何创建servlet

实现servlet接口

继承HttpServlet

HttpServlet-继承–>Servlet

5.1实现servlet接口

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; /主要实现该方法,当浏览器访问一个servlet    时,该方法被tomcat服务器调用/

5.2service方法:

我们可看出来,service还是抽象方法,并没有被重写,如果以这种方式创建servlet我们需要自己写service方法。

init方法:

有个带参数的init方法,该方法在启动tomcat服务器时会被调用【执行一些初始化工作】。

@Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

5.3继承HTTPServlet抽象类

这种方法使我们最常用的也是最好用的。
    仔细看可以发现HTTPServlet并没有抽象方法,却是抽象类,why?

回想一下抽象类和接口。当写了一个类,方法也全部实现,但是却不想别人直接使用它,可以把它声明为抽象类,让想使用

他的人通过继承来使用。

service源码:

@Override
    public void service(ServletRequest req, ServletResponse res)
        throws ServletException, IOException {

        HttpServletRequest  request;
        HttpServletResponse response;

        try {
            request = (HttpServletRequest) req;
            response = (HttpServletResponse) res;
        } catch (ClassCastException e) {
            throw new ServletException("non-HTTP request or response");
        }
        service(request, response);
    }

servlet配置

当我们写了一个servlet,如何让他与一般的java类不同,tomcat服务器如何识别他?这就需要配置文件【配置文件会在tomcat服务器启动时被解析,只要按它的约束,就能正常解析】。

当然,直接创建servlet,ecplise会帮我们配置好。



HelloWorld


  HelloWorld


  com.briup.servlet.HelloWorld


   HelloWorld


   /HelloWorld

servlet的生命周期

servlet默认是单例,在web运行期间一个servlet类只会创建一个对象。

servlet的生命周期可以用3个方法体现init、service、destory

init(ServletConfig config)

servlet初始化。调用时间取决于标签。
标签表示当前这个servlet需要在启动tomcat服务器期间就被创建出来
标签里面需要放一个正整数,数值的大小可以决定servlet对象被创建的先后顺序,【数值越小就越先被创建】。
(如果有多个servlet对象需要在tomcat启动期间被创建的话)
注意:如果值一样,也是可以创建成功的,有内部顺序,并非依次创建。

service(ServletRequest req,ServletResponse res)

tomcat服务器会执行该方法处理浏览器的请求。

destory()

当servlet需要销毁时调用servlet中的该方法。

销毁时间:

1.tomcat服务器【正常】关闭

2.tomcat重新加载项目的时候

6.连接数据库

6.1建项目

在这里插入图片描述
这里填完之后直接点击完成就可以了
在这里插入图片描述

6.2导入oracle jar包

把包复制到lib文件夹里面
在这里插入图片描述
把包复制过来后记住操作图片上的步骤
在这里插入图片描述

6.3建包建类别写java代码

反键src创建包
在这里插入图片描述
反键刚刚创建的包在包里创建类
在这里插入图片描述
在这里插入图片描述

在新建类DBHelper里编写java代码连接数据库
在这里插入图片描述

package com.zking.util;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class DBHelper {
	private static final String URL="jdbc:oracle:thin:@localhost:1522:orcl";
	private static final String CLASS_NAME="oracle.jdbc.driver.OracleDriver";
	//代码块
	static {
		try {
			Class.forName(CLASS_NAME);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//创建连接
	public static Connection getCon() {
		Connection con=null;
		try {
			con=DriverManager.getConnection(URL, "scott", "tiger");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
	//释放连接
	public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if(con!=null&&!con.isClosed()) {
				con.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(rs!=null) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
		public static void main(String[] args) {
		System.out.println(DBHelper.getCon());
	}
}

上面代码输入完后可以写一个main方法测试是否连接oracle数据库
,如果连接数据库成功的话控制台输出的东西就会与下方图片一致,测试失败的话就会报错

在这里插入图片描述

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值