一、安装步骤
Tomcat官方站点:
http://tomcat.apache.org
1、进入官方网站后获取安装包:
 
 🤠tar.gz文件是Linux操作系统下的安装版本  
 
 
 
 🤠zip文件是Windows系统下的压缩版本 
 
 
   2、解压安装 
 
 
 
   解压到自己的文件夹中 
 
 
 
 3、安装JDK 
 
 
 设置环境变量 
 
 
  设置JAVA_HOME环境变量 
 
 
 
 
 
   设置Path环境变量 
 
 
 
 
 
  4、在TomCat的bin目录中找到startup.bat 
 
 
显示以下黑框则成功安装(如果只是闪一下,则要重新设置环境变量)黑框打开表示服务器打开
黑框关闭表示服务器关闭

5、在浏览器中打开127.0.0.1:8080跳转到TomCat网站

完成以上步骤,Tomcat安装成功。
二、修改服务器Tomcat端口号
打开conf文件找到server.xml文件,用Notepad++打开,找到8080端口号修改它,只要不超过范围即可,最好用4位数的端口号。



三、web开发环境搭建

 
 
 
 
 

 

 
重写下面三个方法,以及一个无参构造方法
 
package com.ffyc.dormServer.web;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
   /*1、接收请求中的数据
   * 2、调用其他的Java程序处理
   * 3、向前端做出响应*/
    public LoginServlet(){
        /*
        无参构造方法,默认时存在的,初始化创建的对象
        只被调用一次(始终只创建了一个对象),在第一次访问servlet程序时由服务器创建执行
         */
        System.out.println("无参的构造方法");
    }
    /*
    init()初始化  在构造方法执行完成后,立即被调用执行,完成一些servlet程序的初始化
    例如(读取配置文件的参数)
    只执行一次
     */
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }
    /*
    service()用来接收前端请求,为前端提供服务的,
    每次前端发送的请求,都会调用service(),多次调用
    HttpServletRequest req:表示请求对象,前端提交过来的所有数据,都由服务器封装在此对象
    HttpServletResponse resp:表示响应对象,响应前端数据
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }
    /*
    destroy()
    销毁
    服务器关闭,要执行的一些操作,就可以在这里执行
     */
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}
 
在web.xml中配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--
    .xml文件:ml结尾的,也是一种标记语言,设计的目的是用来在项目中存储项目中的配置信息,
    制定好可以使用那些标签
    web.xml:存储web后端项目配置信息,
    在服务器启动时,由服务器加载读取
    -->
    <!--
    配置Servlet,把我们开发的servlet程序注册到服务器,由服务器启动时加载,第一次加载时,由服务器创建对象
    -->
    
    <!--注册登录处理的Servlet-->
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.ffyc.dormServer.web.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name><!--为指定name的servlet程序配置访问地址-->
        <url-pattern>/login</url-pattern><!--配置的供外界访问的地址,必须 / 开头-->
    </servlet-mapping>
</web-app> 
开发环境搭建完成
四、一个简单的前后端的交互示例
用Hbuilder X写一个表单
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<!-- 
		 从前端向后端发送请求 都是http请求
		 http请求只能发送 超文本内容
		     http请求包含请求行、请求头、请求体部分
			 请求行、请求的方式,请求的资源地址等等
			 请求头、包含客户端的一些环境信息,这些信息都是由浏览器自动发出的,以键值形式传递
			 请求体:代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递
			 
			 
			 get请求:主要是从后端获取信息的,例如网页上的超链接,向后端传递少量信息,获得大量信息
			 请求数据直接在请求地址中拼接,所有传输的数据量有限,并且数据敏感不安全
			 
			 
			 post请求:主要用于向后端发送大量数据
			 请求数据在请求体中,可以传输大量数据,不在地址中显示,数据也安全
		 -->
		
		<form action="http://127.0.0.1:8088/domServer/login" method="post">
			账号:<input type="text" name="account" value=""/> <br />
			密码:<input type="password" name="password" value=""/> <br />
			<input type="submit" value="登录"/>
		</form>
	</body>
</html>
 
 

因为在后端处理get和post时会有不同,所以有了doget 和dopost俩个方法分别处理
package com.ffyc.dormServer.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
    //默认无参构造存在
    //init()在没有初始化操作时,可以不用重写,但是服务器会调用父类发init()方法
    /*@Override
    public void init() throws ServletException {
        super.init();
    }*/
    /*
    由于前端请求有get和post俩种,在后端的处理上有点不同
    所以在父类的service方法中,会根据请求方式的不同,调用doget或者dopost方法分别处理
     */
   /* @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行登录处理");
        //接收前端提交的数据
        String account=req.getParameter("account");
        String password=req.getParameter("password");
        System.out.println(account);
        System.out.println(password);
    }*/
/*
处理get请求
 */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
        String name=req.getParameter("name");
        String age=req.getParameter("age");
        System.out.println(name);
        System.out.println(age);
    }
    /*
    处理post请求
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
        //设置解码的编码
        req.setCharacterEncoding("utf-8");
        String account=req.getParameter("account");
        String password=req.getParameter("password");
        System.out.println(account);
        System.out.println(password);
    }
    //destroy(),没有最终执行的操作时,也可以不用重写,但是服务器会调用父类的destroy()
    /*@Override
    public void destroy() {
        super.destroy();
    }*/
}
 
                


















