URL(统一资源定位符)
格式:
协议://服务器的ip地址:服务器的端口号/项目名/资源路径
例子:
jdbc:mysql//localhost:3306/数据库名
服务器:分为软件和硬件
硬件服务器:构成包括处理器,硬盘,内存,系统总线等和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力,稳定性等方面要求更高
软件服务器:本质上是一个应用程序(有代码编写而成),运行在服务器设备上,能够接收请求并根据请求给客户端响应数据,发布资源(动态和静态)例如——》数据库服务器,网页服务器(Tomcat发布动态+静态网页,Nginx发布静态网页)
Tomcat小知识:
Servlet:(Server Applet服务器端的程序)–》本质为Java代码
用来处理客户端的请求
处理业务逻辑
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类
Servlet的生命周期
在创建Servlet对象的时候调用对应的无参构造方法创建对象,使用对象的时候调用init的初始化方法
创建对象之后再次访问Servlet类的时候只会执行service方法
1、服务器启动的时候创建Servlet类的对象,默认值为-1表示第一次访问创建对象
2、如果文本值大于等于0,表示Tomcat启动创建对象
3、如果多个Servlet都配置了该标签 那么对应的文本值越小创建的Servlet的优先级越高
-1
实现Servlet类:通过继承(extends)GenericServlet抽象实现其中的service方法
(这一种方法实现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方法");
}
}
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-mapping,可以一个Servlet类映射多个路径
TestHttpServlet
com.example.servlet.TestHttpServlet
TestHttpServlet
/testHttp
TestHttpServlet
/test
1、完全路径匹配-----优先级最高
意思是在
标签中文本配置了什么,那么浏览器的地址栏就访问什么:
http://localhost:8080/test
2、目录匹配(/Xxx/*)----优先级第二
表示在
标签中这样配置之后,那么在Xxx目录路径之后输入什么其他的子目录都是没有用的都是访问的这个Servlet类
http://localhost:8080/user/12321
http://localhost:8080/user/dfjaw
上述的两个路径都可以访问到对应的Servlet
3、后缀名匹配(*.Xxx)----优先级第三
表示
标签中这样配置之后,那么在以.Xxx为后缀名的都是访问的这个Servlet类
http://localhost:8080/1234212.hello
http://localhost:8080/hhhh.hello
上述的两个路径都可以访问到对应的Servlet