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;
我这里是演示添加 Tomcat,当然也可以选择添加 IBM 的 Liberty ,或者 JBoss 之类的 Web 服务器(Java EE容器)。然后点击next。
4.点击 Browse 按钮选择 Tomcat 所在的位置
5.上面一切就绪点击 Finish 按钮就可以了。
6. 关联eclipse后 需要将工程存放的位置修改
选第二个 关联文件夹 wtpwebapps 切记保存
服务器上的工程目录
- 服务器上项目运行后 会将工程中的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的生命周期方法