Web开发基础

Web开发基础


URL(统一资源定位符)

格式:

协议://服务器的ip地址:服务器的端口号/项目名/资源路径

例子:

jdbc:mysql//localhost:3306/数据库名


服务器:分为软件和硬件

硬件服务器:构成包括处理器,硬盘,内存,系统总线等和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力,稳定性等方面要求更高

软件服务器:本质上是一个应用程序(有代码编写而成),运行在服务器设备上,能够接收请求并根据请求给客户端响应数据,发布资源(动态和静态)例如——》数据库服务器,网页服务器(Tomcat发布动态+静态网页,Nginx发布静态网页)


Tomcat小知识:

寻找对应的Tomcat目录
Web开发基础_第1张图片


Servlet:(Server Applet服务器端的程序)–》本质为Java代码

用来处理客户端的请求

处理业务逻辑

响应给浏览器的动态web资源(把数据响应给浏览器)
Web开发基础_第2张图片


Servlet实现的步骤

1、创建一个web项目

2、导入对应的servlet的依赖


      javax.servlet
      javax.servlet-api
      4.0.1
      provided
    

3、在创建的web项目中自定义类实现Servlet接口

public class HelloWorldServlet implements Servlet{
	
}

4、在自定义类中实现Servlet接口中的所有的抽象方法

5、在实现的Servlet接口的service方法体中书写代码处理业务逻辑

@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    //在服务器端,调用service方法,就会调用doGet或者doPost方法
    System.out.println("Hello World Servlet");
}

6、在web项目的核心配置文件web.xml中配置访问Servlet的路径

(说明:这样配置是告诉Tomcat有具体的Servlet类需要被访问)


  
    
    
        HelloWorldServlet
        com.example.servlet.HelloWorldServlet
    
    
    
        HelloWorldServlet
        /hello
    

7、启动Tomcat

8、在浏览器中访问Servlet类

实现:
Web开发基础_第3张图片


Servlet的生命周期

在创建Servlet对象的时候调用对应的无参构造方法创建对象,使用对象的时候调用init的初始化方法

创建对象之后再次访问Servlet类的时候只会执行service方法

关闭Tomcat服务器的时候调用对应的destroy方法
Web开发基础_第4张图片


1、服务器启动的时候创建Servlet类的对象,默认值为-1表示第一次访问创建对象

2、如果文本值大于等于0,表示Tomcat启动创建对象

3、如果多个Servlet都配置了该标签 那么对应的文本值越小创建的Servlet的优先级越高

-1

实现Servlet类:通过继承(extends)GenericServlet抽象实现其中的service方法


通过HttpServlet实现Servlet

(这一种方法实现Servlet可以针对于不同的请求方式做出对应的不同的处理例如:Post,Get)

重写对应的doGet方法,doPost方法

public class TestHttpServlet extends HttpServlet {
    /**
     * 处理get请求的方法
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet实现:自定义类继承抽象类HttpServlet实现对应的doGet方法");
    }

    /**
     * 处理post请求的方法
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet实现:自定义类继承抽象类HttpServlet实现对应的doPost方法");
    }
}

编写Servlet的时候出现常见问题

1、服务器异常(500错误)

查看相关的服务器的代码(就是编写的代码存在相关问题)

2、404页面找不到的异常

要访问的资源必须在target目录下

如果没有可以先尝试着去执行clean操作清除target,再去重新部署项目

3、405异常

原因是因为在HttpServlet的实现类中的doGet或者doPost方法中调用了父类HttpServlet类的doGet或者doPost方法

super.doGet(req, resp);
super.doPost(req, resp);

4、启动服务器报错

只要启动服务器报错的话那么都是跟路径写错了有关


Servlet的路径映射

通过标签Servlet-mapping,可以一个Servlet类映射多个路径


    
        TestHttpServlet
        com.example.servlet.TestHttpServlet
    
    
        TestHttpServlet
        /testHttp
    
    
        TestHttpServlet
        /test
    

1、完全路径匹配-----优先级最高

意思是在/test标签中文本配置了什么,那么浏览器的地址栏就访问什么:

http://localhost:8080/test

2、目录匹配(/Xxx/*)----优先级第二

表示在/xx/*标签中这样配置之后,那么在Xxx目录路径之后输入什么其他的子目录都是没有用的都是访问的这个Servlet类

/user/*

http://localhost:8080/user/12321

http://localhost:8080/user/dfjaw

上述的两个路径都可以访问到对应的Servlet

3、后缀名匹配(*.Xxx)----优先级第三

表示*.Xxx标签中这样配置之后,那么在以.Xxx为后缀名的都是访问的这个Servlet类

*.hello

http://localhost:8080/1234212.hello

http://localhost:8080/hhhh.hello

上述的两个路径都可以访问到对应的Servlet

你可能感兴趣的:(JavaWeb,java,后端)