1 web开发概述
- 概述
所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互.
流程图如下:
Web服务器是指驻留于因特网上某种类型计算机的程序.
可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界 浏览; 它是一个容器,是一个连接用户与程序之间的中间件。
WEB服务器有很多,流行的WEB服务器有Tomcat 、 WebSphere 、 WebLogic、Jboss等。
在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器: Apache 的Tomcat,该服务器支持全部JSP以及Servlet规范.
Apache软件基金会(也就是Apache Software Foundation,),是专门为 运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织
2 web开发环境搭建
2.1 安装服务器
2.1.1 获取Tomcat安装包
Tomcat官方站点:Apache Tomcat® - Welcome!,获取Tomcat安装程序包。
tar.gz文件是Linux操作系统下的安装版本
zip文件是Windows系统下的压缩版本
2.1.2 安装jdk
tomcat是支持java程序运行的,所以它的运行需要jdk的支持;
安装JDK
设置JAVA_HOME环境变量
设置PATH环境变量
安装Tomcat
解压tomcat压缩文件
2.2 目录介绍
Tomcat的目录层次结构:
2.3 启动tomcat
双击 bin 目录下的 startup.bat 文件
输入 http://localhost:端口号 或 http:127.0.0.1:端口号 或 局域网ip:端口号
3 创建发布web项目
1.创建java项目,添加web功能
启动IDEA,创建一个新项目,此时这个项目是一个纯粹的JavaSE项目,我们要将它改成一个JavaEE项目:
4 创建Servlet
1.自己创建一个类,并继承HttpServlet
2.重写父类中的方法
3.在web.xml配置Servlet
<!--
xml文件:也是属于一种标记语言,但是与html不同。xml主要用来存储配置数据的
web.xml文件:用来存储当前项目配置信息,例如配置Servlet、过滤器、监听器
此文件是服务器启动时,由服务器读取,名字和位置都不能改
-->
<!--
注册Servlet
-->
<servlet>
<servlet-name>login</servlet-name><!--为Servlet对象定义名称-->
<!--配置Servlet类名,服务器启动时会创建此类的对象,只创建一次-->
<servlet-class>com.ffyc.webserver.servlet.LoginServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--
为Servlet配置访问地址
-->
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern><!--前端访问地址,必须以 / 开头-->
</servlet-mapping>
package com.ffyc.webserver.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
创建Servlet:
1.自己创建一个类,并继承HttpServlet,这样我们的类也就遵守了javaEE规范
2.重写父类中的方法
3.在web.xml配置Servlet
*/
public class LoginServlet extends HttpServlet {
/*
Servlet对象生命周期:
开始: 在第一次访问时/服务器自动创建 调用无参构造一次
初始化: 在构造方法被执行完后,执行一些初始化操作, 可以不写,会调用父类的 一次
服务: 多次调用 每请求后会调用service()
销毁: 在服务器关闭时,执行一些必要的操作,可以不写,会调用父类的 一次
*/
/*
无参构造方法,只被调用一次,一个Servlet类只被创建一个对象
什么时候调用: Servlet生命周期开始
1.第一次向Servlet程序发起请求时(默认的)
2.服务器启动时创建,需要在web.xml文件中配置<load-on-startup>1</load-on-startup>
*/
public LoginServlet(){
System.out.println("LoginServlet 无参构造方法");
}
/*
init()初始化Servlet的,在Servlet对象构造方法执行完毕后执行,只执行一次
是Servlet规范中必须要调用的方法
如果没有什么可以初始化执行的,可以不重写,默认调用父类的init()
*/
@Override
public void init() throws ServletException {
System.out.println("init");
}
/*
多次被执行,用来提供服务的
HttpServletRequest:前端发送的数据都被包装到此对象中
HttpServletResponse:表示响应
*/
/*
前端有get post两张请求方式,有可能在后端的处理方式不同
可以在后端定义不同的处理方法,为get和post请求分别进行处理
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doget");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("dopost");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("接受登录请求");
System.out.println(req.getParameter("account"));
System.out.println(req.getParameter("password"));
}
/* 在服务器关闭时调用,
最终需要执行的代码,可以写在此方法中
如果没有什么可以执行的最终操作,可以不重写,默认调用父类的destroy()*/
@Override
public void destroy() {
System.out.println("destroy");
}
}