Tomcat基础
该容器可以根据用户的请求来启动并运行我们编写的数据逻辑代码 —- 服务器
1、所谓服务器就是(代码编写的)一个可以放根据用户请求实时调用执行对应的逻辑代码的一个容器。所以服务器并不是某台电脑,只是这台电脑的功能是做服务器的。
2、tomcat服务器下载:https://tomcat.apache.org/download-80.cgi
bin:可执行文件
conf:配置文件
—- 改端口在conf/server.xml 中的
标签中即可 lib:相关的jar包
webapps:放想要运行的代码
work:gsp的编译目录
3、不管是get还是post方式的请求,都会先执行 方法(如果有这个方法)。
doGet / doPost两种方法分别执行Get和Post方法;如果在你的Servlet中存在service、doGet、doPost三种方法,会优先执行service方法。
⭐⭐注意:如果在覆写的service方法中调用了父类的service方法(super.service(arg0,arg1)),则在service方法处理完后,会再次根据请求方式调用doGet和doPost方法。所以,一般情况下,我们不在覆写的service中调用父类的service方法,避免出现405错误。
4、Servlet常见错误:
- 404错误 —- 资源未找到(在请求地址中的servlet的别名书写错误、虚拟项目名称拼写错误)
- 500错误 —- java.lang.ClassNotFoundException:com.***.ServletMethod
解决:在web.xml中校验servlet类的权限定路径是否拼写错误
—- 因为service方法体中的代码逻辑错误
405错误 —- 请求方式不匹配
5、一个请求创建一个对象存储,用完即销毁。
6、request对象:
作用:封存当前请求的所有数据
使用:
获取请求头
获取请求行
获取用户数据
注意:
request对象由tomcat服务器创建,并作为实参传递给处理请求的servlet的service方法。
7、获取用户数据:
req.getParameter(“key”); //返回指定的用户数据
req.getParameterValues(“key”); //返回同键不同值的请求数据(多选),返回的数组
req.getParameterNames(“key”); //返回所有用户请求数据的枚举集合
注意:如果获取的请求数据不存在,返回null
⭐8、错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
解决方法:在工程的WEB-INF/bin文件夹中添加jdbc-jar包,然后点击Build path中的add to build path 即可解决。
9、请求转发:req.getRequestDispatcher(“要转发的地址—相对路径,直接写Servlet的别名”).foward(req,resp);
作用:实现多个Servlet联动操作处理请求,避免代码冗余,明确Servlet职责。
特点:一次请求,多个Servlet
注意:请求转发后直接return直接结束。
10、request作用域 —- 解决一次请求内不同Servlet的数据问题。
request.setAttribute(Object name,Object value);
requset.getAttribute(Object obj);