tomcat软件安装在linux系统上,用于运行Java程序和web程序(tomcat也叫web服务器,因为tomcat也运行web项目)
tomcat:浏览器和服务器交互的过程
根据浏览器URL地址栏中的IP和端口号找到对应的web服务器 浏览器以流的形式向服务器发送网络请求,告诉服务器需要哪些资源 GET /JavaWebDemo1/1.jsp HTTP/1.1
服务器会解析请求 GET /JavaWebDemo1/1.jsp HTTP/1.1
,将静态网页以流的形式返回给浏览器 同时,请求动态的数据,服务器解析后将数据作为响应结果返回到浏览器上
tomcat中的目录文件
tomcat:虚拟目录的映射
.将写好的web
程序交给web
服务器管理,这个过程成为虚拟目录的映射:直接将项目放到webapps
目录中(localhost:端口号/项目名/参数
) 每次修改config
目录下的server.xml
文件,tomcat
服务器就要重启读取server.xml
配置文件
计网:5层模型
ISO5层 协议 应用层 HTTP,FTP:文件传输协议,SMTP:邮件传输协议 传输层 TCP,UDP 网络层 IP 物理层 网络接口 链路层 硬件
计网:HTTP
http:是超文本传输协议,基于TCP/IP的应用层协议,浏览器和服务器在传输数据时需要遵守http指定的规则 HTTP请求:客户端向服务器请求一个web资源成为HTTP请求 HTTP常见状态码:(状态码表示的是服务器对请求的处理结果)
状态码 描述 100 请求成功,客户端要继续提交请求来完成整个操作 200 成功 300 为完成整个过程要继续请求,通常是重定向,常见的302,304 400 客户端出错,常见404 500 服务器端内部出错,常见500
HTTP1.1允许在一个连接上,请求多个web资源,有7种请求方式:get,post,put,delete,(分别对应CRUD)trace,head,options
i请求方式 描述 get 用于请求数据 post 用于提交数据 put 和get很像,用于更新数据 delete 删除数据
计网:get/post的区别
get post 参数在地址栏可见参数,不安全,所以大众可见的数据用get请求 参数在请求头中 用于请求数据 用于提交数据 get请求是基于TCP/IP post请求是基于TCP/IP get请求会有本地缓存,有历史来记录 post没有本地缓存,没有历史记录 get请求只支持URL编码 post请求支持多种编码
servlet
配置web.xml文件
提问?为什么servlet类中的方法被调用起来了 将请求发送给servlet容器,自动加载xml文件,通过网址映射找到全限定类名,通过反射class.forName(全限定类名)创建对象
< servlet>
< servlet-name> ServletDemo</ servlet-name>
< servlet-class> com.taiji.dao.ServletDemo</ servlet-class>
</ servlet>
< servlet-mapping>
< servlet-name> ServletDemo</ servlet-name>
< url-pattern> /</ url-pattern>
</ servlet-mapping>
定义:servlet接收前端请求,响应请求的结果给浏览器实现类与网址直接交互,我们一般把实现了servlet接口的类也叫做servlet
servlet
的运行过程:
客户端发送HTTP
请求tomcat
,tomcat
解析HTTP
为request
给servlet
容器 servlet
容器将请求发送给servlet
类,调用service
方法处理前端请求request
将响应response
回来的数据由servlet
类传递给容器,容器传递给tomcat
转换为HTTP
,将HTTP
再响应给前端页面
servlet的作用:
接收请求 处理请求 响应结果
servlet接口中的方法
void init ( ServletConfig var1) ;
ServletConfig getServletConfig ( ) ;
void service ( ServletRequest var1, ServletResponse var2) ;
String getServletInfo ( ) ;
void destroy ( ) ;
servlet的生命周期(servlet类只被实例化一次,无论发送多少次请求)
init(),service(),destory()是生命周期的方法 init()只在第一次请求时被调用,被调用时,servlet容器会传入servletConfig进行对象初始化(servletConfig可以拿到全局上下文,初始化参数等) service()处理请求,在每次接收请求都会执行方法 destory()销毁servlet对象
9.init()初始化方法中的 servletConfig与servletContext
config
ServletContext servletContext = servletConfig. getServletContext ( ) ;
String servletName = servletConfig. getServletName ( ) ;
Enumeration < String > initParameterNames = servletConfig. getInitParameterNames ( ) ;
String username = servletConfig. getInitParameter ( "username" ) ;
context 全局上下文对象,整个项目中共享一个
String path = servletContext. getRealPath ( "/web" ) ;
String contextPath = servletContext. getContextPath ( ) ;
String usr = servletContext. getInitParameter ( "usrename" ) ;
String username = servletConfig. getInitParameter ( "username" ) ;
servletContext. setAttribute ( "username" , "zs" ) ;
Object username1 = servletContext. getAttribute ( "username" ) ;
域对象:在servlet容器中有4个域对象page
,request
,session
,application
,用来在jsp和servlet中传递数据
page域,只能在同一个类中使用 request域,可以创建多个,jsp和servlet存取数据时一定要保证是同一个request session域,jsp和servlet共享一个session,同一个项目下才可以使用 application域,可以让在同一tomcat下的项目实现数据存取共享
httpServlet抽象类对servlet类的功能进行了封装和完善,让开发者只关系业务代码的实现,不需要每次重写5个方法
public class ServletDemoTwo extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp) throws ServletException , IOException {
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException , IOException {
doGet ( req, resp) ;
}
}