java-Web(Tomcat)

 注意,使用tomcat必须配置JAVA_HOME和CATALINA_HOME,JAVA_HOME指向java根目录,CATALINA_HOME指向tomcat根目录。

 

查看是否设置成功直接打开tomcat的bin下面的stratup.bat,关闭的话点shutdown.bat。linux用sh结尾的。

关于strartup.bat启动后乱码

启动成功

 修改端口号的方法

 进入tomcat的conf文件打开server.xml,里面找改connector port

 

启动服务器之后,浏览器输入http://localhost:5038或者http://127.0.0.1:5038进入页面

 

 默认访问的是webapp的root

状态码

404出错:资源不存在

200:一切正常

403:权限不足

300/301:页面重定向

500:服务器内部错误(代码有错)

自己在webapp里面做的自己的网站里必须要有的文件夹,

classes用于存放所有的java运行完毕生成的文件,lib放自己想给自己网站用的jar包,webinf里面的web.xml指定了各种初始信息

 

 

 

 可以指定多个寻找网页文件

在web.xml中加入网页文件的搜索路径,第一个没找到就找第二个,第二个没找到就找第三个

 

 平常默认路径是webapp,如果想在其他外面的文件夹也识别需要配置相对路径。

首先去conf的web.xml把listings下面的param-value的false改成true

找到server.xml

 

加上<Context docBase="绝对路径的文件夹"  path="相对路径文件夹"  />  以后网站中如果在ip端口号后面输入相对路径文件夹,实际执行的是绝对路径的文件夹

 <Context path="/test" docBase="D:\zqhweb" reloadable="true" debug="0" />

只需要输入localhost:端口/test   即可跳到d:zqhweb的项目文件夹

 域名解析

 www.jd.com当输入这个域名的时候,首先会查看本机有没有解析,如果本机没有解析,他才会去访问互联网,从互联网解析出主机地址。

自己创建虚拟主机,创建解析地址

同样是在conf的server.xml中,它可以帮我们在输入网址的时候,不需要再输入后面的项目名,比如说localhost:8080/zqhweb可以直接输入localhost:8080/

<Host appBase="真实项目路径"  name="zqhfun.top"><Context docBase="真实项目路径"  path="/" />     </Host>

另一种启动方式

cd到tomcat目录下面的bin目录然后输入 catalina run

 关闭记得用shutdown.bat

在idea中的装载

 

 

 

------------恢复内容开始------------

 注意,使用tomcat必须配置JAVA_HOME和CATALINA_HOME,JAVA_HOME指向java根目录,CATALINA_HOME指向tomcat根目录。

 

查看是否设置成功直接打开tomcat的bin下面的stratup.bat,关闭的话点shutdown.bat。linux用sh结尾的。

关于strartup.bat启动后乱码

启动成功

 修改端口号的方法

 进入tomcat的conf文件打开server.xml,里面找改connector port

启动服务器之后,浏览器输入http://localhost:5038或者http://127.0.0.1:5038进入页面

 默认访问的是webapp的root

状态码

404出错:资源不存在

200:一切正常

403:权限不足

300/301:页面重定向

500:服务器内部错误(代码有错)

自己在webapp里面做的自己的网站里必须要有的文件夹,

classes用于存放所有的java运行完毕生成的文件,lib放自己想给自己网站用的jar包,webinf里面的web.xml指定了各种初始信息

 

 可以指定多个寻找网页文件

在web.xml中加入网页文件的搜索路径,第一个没找到就找第二个,第二个没找到就找第三个

 平常默认路径是webapp,如果想在其他外面的文件夹也识别需要配置相对路径。

首先去conf的web.xml把listings下面的param-value的false改成true

找到server.xml

 

加上<Context docBase="绝对路径的文件夹"  path="相对路径文件夹"  />  以后网站中如果在ip端口号后面输入相对路径文件夹,实际执行的是绝对路径的文件夹

 <Context path="/test" docBase="D:\zqhweb" reloadable="true" debug="0" />

只需要输入localhost:端口/test   即可跳到d:zqhweb的项目文件夹

 域名解析

 www.jd.com当输入这个域名的时候,首先会查看本机有没有解析,如果本机没有解析,他才会去访问互联网,从互联网解析出主机地址。

自己创建虚拟主机,创建解析地址

同样是在conf的server.xml中,它可以帮我们在输入网址的时候,不需要再输入后面的项目名,比如说localhost:8080/zqhweb可以直接输入localhost:8080/

<Host appBase="真实项目路径"  name="zqhfun.top"><Context docBase="真实项目路径"  path="/" />     </Host>

另一种启动方式

cd到tomcat目录下面的bin目录然后输入 catalina run

 关闭记得用shutdown.bat

在idea中的装载

 

 

 可在下面修改工程路径

 

热部署,修改代码不用重启tomcat直接改动

 

 

 第一个servlet程序

按住alt+inserct可以快速添加全部的overide方法

import javax.servlet.*;
import java.io.IOException;

public class ZqhServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("ZqhServlet被访问了");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {

    }
}

web.xml

<?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">
<servlet>
    <!-- servlet-name是给servlet程序一个名字-->
    <servlet-name>zqh1</servlet-name>
    <!-- servlet-class是配置类的全类名-->
    <servlet-class>ZqhServlet</servlet-class>
</servlet>
<servlet-mapping>    <!-- servlet-mapping设定访问地址-->
    <servlet-name>zqh1</servlet-name>
    <!-- url-pattern设定访问ip:port/工程路径/hello时将会访问ZqhServlet程序-->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

启动tomcat后访问     ip:port/工程路径/hello (http://localhost:5038/zqh/hello)    时将会访问ZqhServlet程序

 Servlet的生命周期

import javax.servlet.*;
import java.io.IOException;

public class ZqhServlet implements Servlet {
    public ZqhServlet(){
        System.out.println("这里是servlet的构造器方法,只在开始执行一次");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("这里是servlet初始化方法,只在开始执行一次");
    }
    @Override
    public ServletConfig getServletConfig() {

        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("ZqhServlet被访问了,刷新也会执行,不止执行一次");
    }
    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("这里是servlet销毁方法,tomcat停止的时候会执行");
    }
}

使用<form>表单标签和get请求或者post请求去访问执行java的类程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>m870</title>
</head>
<body>
    <form action="http://localhost:5038/zqh/hello" method="get">
        <input type="submit">
    </form>
</body>
</html>

 更常用的是继承HttpServlet

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 Zqhhttpservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
    }
}


web.xml里加入
    <servlet>
        <servlet-name>Zqhhttpservlet</servlet-name>
        <servlet-class>Zqhhttpservlet</servlet-class>
    </servlet>
    <servlet-mapping>   
        <servlet-name>Zqhhttpservlet</servlet-name>
        <url-pattern>/Zqhhttpservlet</url-pattern>
    </servlet-mapping>

servletconfig可以获取当前servlet程序的名字,init的参数值servletcontext

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class ZqhServlet implements Servlet {
    public ZqhServlet(){
        System.out.println("这里是servlet的构造器方法,只在开始执行一次");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("Config可以获取servlet程序名字"+servletConfig.getServletName());
        System.out.println("Config可以获取初始化参数值"+servletConfig.getInitParameter("username"));
        System.out.println("Config可以获取初始化参数值"+servletConfig.getInitParameter("password"));
        System.out.println("Config可以获取servlet_context"+servletConfig.getServletContext());
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("ZqhServlet被访问了,刷新也会执行,不止执行一次");
            //对servletRequest进行强制转换,换换成HttpServletRequest就可以用方法查看当前的请求是post还是get
            HttpServletRequest httpServletRequest=(HttpServletRequest) servletRequest;
        //  --------
            String method1=httpServletRequest.getMethod();
            if (method1.equals("GET")){
                System.out.println("是get请求");
            }
        else if (method1.equals("POST")){
            System.out.println("是post请求");
        }
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("这里是servlet销毁方法,tomcat停止的时候会执行");
    }
}


web.xml
<servlet>
    <!-- servlet-name是给servlet程序一个名字-->
    <servlet-name>zqh1</servlet-name>
    <!-- servlet-class是配置类的全类名-->
    <servlet-class>ZqhServlet</servlet-class>
    <init-param>
        <param-name>username</param-name>
        <param-value>zqh</param-value>
    </init-param>
    <init-param>
    <param-name>password</param-name>
    <param-value>123</param-value>
    </init-param>
</servlet>
<servlet-mapping>    <!-- servlet-mapping设定访问地址-->
    <servlet-name>zqh1</servlet-name>
    <!-- url-pattern设定访问ip:port/工程路径/hello时将会访问ZqhServlet程序-->
    <url-pattern>/ZqhServlet</url-pattern>
</servlet-mapping>

在HttpServlet中的使用方法

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

public class Zqhhttpservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
        ServletConfig servletConfig=getServletConfig();
        System.out.println("获取config的servlet程序名"+servletConfig.getServletName());
        System.out.println("获取config的属性值"+servletConfig.getInitParameter("username"));
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
    }
}


web.xml内容
    <servlet>
        <!-- servlet-name是给servlet程序一个名字-->
        <servlet-name>Zqhhttpservlet</servlet-name>
        <!-- servlet-class是配置类的全类名-->
        <servlet-class>Zqhhttpservlet</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>zqh</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>    <!-- servlet-mapping设定访问地址-->
        <servlet-name>Zqhhttpservlet</servlet-name>
        <!-- url-pattern设定访问ip:port/工程路径/hello时将会访问ZqhServlet程序-->
        <url-pattern>/Zqhhttpservlet</url-pattern>
    </servlet-mapping>

servletContext域对象

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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 TestContextSlt extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取web.xml里面的全局上下文参数
        ServletContext servletContext=getServletConfig().getServletContext();
        String 全局参数=servletContext.getInitParameter("全局参数");
        System.out.println(全局参数);
        //获取当前的工程路径
        System.out.println("当前的工程路径(浏览器里面显示的虚拟路径)为"+servletContext.getContextPath());  //映射到代码的webapp目录
        System.out.println("当前工程部署的路径是(服务器里web工程的webapp真实路径)"+servletContext.getRealPath("/"));
    }
}


web.xml的内容里加
<context-param>
    <param-name>全局参数</param-name>
    <param-value>属于整个web工程</param-value>
</context-param>
<servlet>
    <servlet-name>TestContextSlt</servlet-name>
    <servlet-class>TestContextSlt</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>TestContextSlt</servlet-name>
    <url-pattern>/TestContextSlt</url-pattern>
</servlet-mapping>

 

posted @ 2021-04-02 16:47  克莱比-Kirby  阅读(109)  评论(0)    收藏  举报