JavaEE基础学习(一)

JavaEE的学习我们首先要弄清楚以下几个问题:

一.用户是如何访问网站的?

  • 1.通过一个网址(URL)访问网站 (发出一个请求)
  • 2.访问网站就是访问该网站的服务器
    访问服务器上的代码:
    静态资源 html div+css (不管什么用户访问 内容不会改变)。
    动态资源 jsp servlet(根据不同用户 返回不同信息)。
    javaweb程序员是干啥的?
    不是编写服务器的(服务器厂商写的),
    而是编写 运行在服务器上代码的。
  • 3.通过代码去访问数据库(JDBC)进行增删改查。
  • 4.将查询结果 返回给服务器你写的那堆代码中。
  • 5.服务器会将查询的结果响应回用户。

二.Tomcat服务器的介绍与安装

  • Tomcat服务器是sun公司提供的开源、免费、轻量级服务器 。

我们先来了解以下Tomcat下各个文件夹的用途:

  • bin文件夹: Tomcat服务器操作指令
    Windows startup.bat 开启服务
    Mac startup.sh 开启服务
  • conf文件夹: 服务器配置文件web.xml
  • lib文件夹: 服务器自己使用的jar包 内置dbcp数据库链接池
  • webapps文件夹: 存放你的工程(将网站运行的代码放上去)
  • temp文件夹: 服务器运行时产生的临时文件
  • logs文件夹: 存放服务器的日志信息(开启关闭服务器时间 以及运行时产生的错误)
  • work文件夹: 服务器自己的工作文件夹

利用Tomcat操作指令启动和关闭服务器

  • 1.打开cmd控制台
  • 2.切换盘符 cd(去往目录)
    输入d(安装在哪个盘就写哪个盘):
  • 3 .cd(去往目录) 去往Tomcat下的bin文件夹
  • 4.执行服务器开启服务的指令 startup.bat
  • 5.设置环境变量Java_home jre_home
  • 6.访问Tomcat默认网页
  • 访问地址(url)
    http://ip地址:服务器端口号/工程的名字/访问的资源
  • 访问默认的Tomcat路径
    http://localhost:8080
    8080:Tomcat默认端口号
  • URL全球统一定位符
    http://localhost:8080/test/文件名.html
  • URI
    /test/文件名.html
  • 7.关闭Tomcat服务shutdown.bat

eclipse添加Tomcat服务器
1.打开eclipse 点击 window——>点击preference
2.在左侧列表中找到 Server 项,展开,选中:Runtime Environments,右侧点击添加按钮
3.这里要根据你使用的 Tomcat 版本来选择,不一定是 Tomcat 9.0;
Stoker的JavaEE学习(一)
我这里是演示添加 Tomcat,当然也可以选择添加 IBM 的 Liberty ,或者 JBoss 之类的 Web 服务器(Java EE容器)。然后点击next。
4.点击 Browse 按钮选择 Tomcat 所在的位置
Stoker的JavaEE学习(一)

5.上面一切就绪点击 Finish 按钮就可以了。
6. 关联eclipse后 需要将工程存放的位置修改
选第二个 关联文件夹 wtpwebapps 切记保存
Stoker的JavaEE学习(一)
服务器上的工程目录

  • 服务器上项目运行后 会将工程中的WebContent文件夹下的内容 编译到服务器上(WebContent不会出现)
  • 1.网页资源HTML页面(静态资源)
  • 2.META-INF 配置工程的扩展应用(暂时没有用)
  • 3.WEB-INF(重点) 工程中的所有资源
  • classes 项目代码的。class文件
  • lib 工程中使用.jar包(web工程不用添加jar的路径)
  • web.xml 工程配置文件(配置servlet)
  • 注意:如果你的.html页面没有放到WebContent文件下,而是放到WEB-INF下 这时该资源无法通过网址来直接访问,需要使用Servlet来间接访问。

三.servlet(小服务程序)

servlet就是一个java中的接口。

  • 1.可以接受用户(浏览器)发过来的请求
  • 2.处理请求(我们来写的)
  • 3.可以将处理完的请求 再响应回浏览器
    创建Servlet有3种方式:

一. 实现servlet接口

  • 实现接口中的生命周期方法
    构造方法 init service destroy(4个)

  • 注意:需要去工程中的web.xml文件中配置该servlet的访问路径。

  • 注意:

  • 1.当系统第一次请求时 系统会创建servlet对象,并且只创建一次。

  • 2.当用户再次请求同一个servlet时 不会再创建新的servlet对象,而是 只会调用服务方法(service方法)

  • 3.当停止服务器 调用销毁方法

  • 4.不管多少用户访问 都只会创建一个servlet

public class Demo01 implements Servlet{
	// 构造方法
	public Demo01() {
		// TODO Auto-generated constructor stub
		System.out.println("Demo01 的构造方法");
	}
	// 初始化servlet的配置信息
	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init 初始化方法");		
	}
	// servlet的服务方法(处理请求方法)
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("service 服务方法");
	}
	// servlet的销毁方法
	// 1.服务器停止时
	// 2.当应用程序从Tomcat中被移除时调用
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy 销毁方法");
	}
	// 获取当前servlet的配置信息
	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}
	// 获取servlet的版本 作者信息
	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}




}

web.xml文件中配置该servlet的访问路径

    <!-- 配置servlet名字和类 -->
  <servlet>
  	<!-- 给该servlet设置一个名字 -->
  	<servlet-name>demo01</servlet-name>
  	<!-- 设置servlet是哪个类的 (使用全类名)-->
  	<!-- 系统通过反射可以将类创建出来 -->
  	<servlet-class>com.lanou3g.Demo01</servlet-class>
  </servlet>
  <!-- 配置servlet的访问路径 -->
  <servlet-mapping>
  <!-- 设置给哪一个servlet配置路径 -->
  <!-- 注意:要与配置相同 -->
  	<servlet-name>demo01</servlet-name>
  	<!-- 配置路径(见名知意) -->
  	<!-- /demo01  这个斜杆表示的是 http://localhost:8080/sh-web-01/ -->
  	<url-pattern>/demo01</url-pattern>
  
  </servlet-mapping>

二. 继承GenericServlet

  • 只用实现服务方法
  • 该类使用了缺省适配器写的
  • 好处:节省代码
public class Demo02 extends GenericServlet{

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("Demo02 服务方法");
	}

}

三. 利用模板设计模式 继承HttpServlet

public class Demo03 extends HttpServlet{
	// 重写doget
	// 注意:重写方法后 不要调用父类中的方法
	// 		父类中的处理,就是给浏览器发送错误信息
	// 可以在dopost方法中调用doget方法
	// 好处:不论接受的请求是get还是post 写一次处理的代码就行
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doget");
		
	}
	// 重写dopost
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
		
	}
}

四.用户通过网址访问服务器 是如何访问到想访问的Servlet?

  • 1.服务器会接受到用户请求过来的网址
  • 2.通过网址中的工程名/sh-web-01
    在webapps文件中 找到对应的工程
  • 3.在工程中找到web.xml文件进行读取
  • 4.通过用户的访问网址中 /demo01(访问资源路径)
    找到该路径所对应的 servlet-name
  • 5.通过servlet-name 找到对应 servlet-class
  • 6.通过servlet-class 系统反射出 该类的对象
  • 7.调用servlet的生命周期方法

相关文章: