JavaEE开发学习笔记(1)
1. JavaEE的学习顺序
Servlet —> Jsp —> Structs —> Hibernate —> Spring —> Ejb
2. 安装Tomcat
Tomcat安装完成之后需要给它配置 TOMCAT_HOME目录,也即Tomcat 的安装目录
检验Tomcat是否安装成功:
1. 进入Tomcat 的安装目录,进入/bin 目录,找到Startup.bat,双击启动Tomcat
最后显示 “Server startup in 1633ms”,则说明启动成功。
2. 在浏览器中输入:
出现一个Tomcat的小猫标记,则说明安装成功。
3. 双击Shutdown.bat可以将Tomcat关闭。
3. Tomcat在网络中的位置(地位)
Tomcat是作为Web应用的容器程序使用。
其中提供了Web服务器模块,Jsp/servlet存储模块,如上图所示。
一个网页请求,首先通过HTTP协议,发送到Web服务器,由Web服务器转发给Jsp/Servlet容器处理,并返回结果给Web服务器,Web服务器将静态的页面返回给IE浏览器。
4. Servlet/Jsp网络框架
Servlet/Jsp技术的整个网络包括三大部分:客户端(IE浏览器),Tomcat(包括Web服务器等),后台数据库。
客户端主要是有关客户界面设计部分:涉及到Html,Javascript,Flash,Applet等技术。Tomcat部分是Servlet/Jsp技术的逻辑部分:设计到Javabean,Servlet,Jsp,Ejb,Structs,Hibernate,Spring等技术。后台数据库则主要是Tomcat与数据库的交互部分:设计到JDBC,各种数据库的使用,JDBC-ODBC桥,数据源类型等。
5. Servlet开发的方法
a. 实现servlet接口
b.继承GenericServlet类
c.继承HttpServlet类
6. Servlet开发流程:
1. 在%TOMCAT_HOME%\webapps下建立” WEB-INF”文件夹,在WEB-INF文件夹下写一个“web.xml” (用于配置网站信息),建立一个classes子文件夹(放置.class文件)和lib文件夹(应用用到的jar包,文件上传下载等),也可以从别的目录下拷贝,例如Root下,
注:这几个东西要注意大小写,大小写必须要一样。
2. 开发servlet(引入servlet-api.jar)
3. 部署你的Servlet
在web.xml文件中,需要修改的代码的部分如下:
这两部分是对应的,他们共同对应了一个Servlet
<!-- JSPC servlet mappings start -->
<servlet>
<!—给servlet取得名字,这个名字可以是任意的 -->
<servlet-name>hello</servlet-name>
<!—指定servlet路径,就是Servlet(包名+类名),注意类名不能加.class -->
<servlet-class>com.tsinghua.Hello</servlet-class>
</servlet>
<!-- 将servlet映射一个名称 -->
<servlet-mapping>
<!—给servlet取得名字,这个名字要与上面的名字对应 -->
<servlet-name>hello</servlet-name>
<!—浏览器中输入的url,可以取任意的名字,注意其中斜线一定要有 -->
<url-pattern>/gt</url-pattern>
</servlet-mapping>
<!-- JSPC servlet mappings end -->
4. 启动tomcat访问你的servlet,在浏览器地址栏中输入:
http://127.0.0.1:8080/MyWebSite/Hello
回车就可以看到Servlet的输出
注意: 127.0.0.1是服务器所在的IP地址
8080 是端口号,需要根据实际情况进行修改
7. Servlet的生命周期
Servlet部署在容器里面,(我们使用的是Tomcat,也可以是其他的如Jboss,weblogic等),它的生命周期由容器来管理:
Servlet的生命周期分为如下的几个阶段:
1. 装载Servlet,用相应容器完成
2. 创建一个Servlet实例
3. 调用Servlet的init()方法,该方法只会在第一次访问该Servlet时调用一次。
4. 服务:调用Servlet的Service()方法,一般的业务逻辑都是在这块处理的。该方法在访问Servlet时,都会被调用一次。
5. 销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下几种情况调用:
A tomcat重新启动 B:reload该Webapp C: 重新启动电脑
对应代码如下:
// 这是我的第一个Servlet程序,通过实现Servlet接口来实现
package com.tsinghua;
import javax.servlet.*; // servlet包
import java.io.*; // java IO 包
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class Hello implements Servlet {
// 该函数用于初始化该Servlet(类似于类的构造函数)
// 该函数只会被调用一次,(用户在第一次访问Servlet时被调用)
public void init(ServletConfig parm1) throws ServletException {
System.out.println("init function!");
}
public ServletConfig getServletConfig() {
return null;
}
// 这个函数用于处理业务逻辑
// 程序员应该把业务逻辑代码写在这里
// 当用户每访问一次Servlet时,都会调用该函数
// req: 用于获得客户端(这块可以理解为浏览器)的信息
// res: 用于向客户端(这块可以理解为浏览器)返回信息
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//
System.out.println("service it");
// 从res中得到PrintWriter
PrintWriter pw = res.getWriter();
pw.println("hello World");
}
public String getServletInfo() {
return "";
}
// 销毁Servlet实例(释放内存)
// 调用Destroy方法的情况
// 1. reload 该Servlet(webApps)
// 2. 关闭tomcat
// 3. 关机
public void destroy() {
//
System.out.println("destroy!");
}
}
第一次的代码,有注释,不做过多解释,可以看注释。