1.HTTP协议:客户端浏览器和Web服务器数据通讯格式的规范
2.Tomcat作为Web服务器管理我们的资源,在网络上共享,允许用户使用浏览器访问
目录结构:webapps里存放--静态资源(html,css,js,images,files...)
--WEB-INF (名字不可变,该目录下不允许用户直接访问,受保护资源)
--web.xml项目配置文件,服务端程序配置信息
--classes服务端程序的class文件
--lib服务端程序运行所需要的jar
3.在idea中创建一个Web工程,添加支持勾选JAVAEE中的Web application,在Add configuration中配置tomcat选择Local,在server中配置本地tomcat,在deployment中部署,idea会自动打包一个war包到tomcat,给Application context自己项目改一个名字,也就是访问路径
4.服务端程序servlet的实现步骤(需要导入jar包,需在WEB-INF下建一个lib文件夹放jar包,add as library),1.创建一个类extends HttpServlet,2.重写doxxx方法3.配置web.xml文件
5.web.xml配置
<servlet> <servlet-name>loginServlet</servlet-name>//servlet的名称 <servlet-class>com.kcnode.servlet.LoginServlet</servlet-class>//全限定名称,反射创建6. </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name>//映射的servlet名称 <url-pattern>/login</url-pattern>//url </servlet-mapping>
6.uri和url区别:uri是统一资源标识符,标识web上可访问的资源,url是统一资源定位符,url是uri的子类,用于定位一个资源的位置以及它的协议;例如uri:/web/html;
url:http://localhost:8080/web/html
7,service和doxx方法区别,service是servlet方法的入口类似于main方法,可以处理所以请求,没有重写调用父类,判断请求方式调用对于的doxx方法
8.servet的运行,输入网址->解析域名->找到主机和Web服务器->Web服务器将请求内容封装为Request对象->根据uri查找内部管理资源与之匹配的url-pattern->根据servletname找到权限的类名,通过反射创建servlet对象调用doxx方法传入req和resp对象,没有找到动态资源找静态
9.url-pattern怎么配1.精确匹配/login;/login.html不管哪种对于服务器来说都是字符串2.模糊匹配/*所有都可以*do前面模糊*前不能加/;精确匹配优先级高,配置过滤器时一般用模糊匹配
10,注解WebServlet(name="app1",urlPattern="/app1")
11.servlet的什么周期:构造方法Web容器启动后用户第一次访问时执行1次,init方法在构造方法执行后执行一次,doxx方法没访问一次执行一次,关闭或重启服务Destroy方法执行
因为Servlet的对象的创建延迟到用户第一次访问时,所有属于单例模式中的懒汉模式
在load-on-startup中配置指定一个正整数,会随着容器启动而创建,越小优先级越高,变成单例中的恶汉模式
12,servlet多线程安全问题,1避免在servlet中定义成员变量doxx中并发成员变量,2使用同步锁
13,servletconfig在父类init方法中可以获取web.xml中配置的信息
14,servletContext对象servlet上下文对象,一个运行项目只有一个,通过这个api可以获取servler的运行环境和全局参数
15,getRealPahh(),将相对路径转化为绝对路径,getResourceAsStream()获取想对路径资源返回输入流,路径定位到项目根目录,app.class.getClassLoader().getResourceAsStream()定位到项目的根目录下得WEB-INF-classess目录下
16,转发和重定向区别,1.转发只能访问项目内部静态和动态资源,重定向可以访问外部资源,2.转发是req.getRequestDispatcher("1.html").foward(req,resp)发起1次请求,地址栏没变,重定向是resp.sendRedirect("/rc/1.html")发起两次请求,地址栏变,3.业务的结束开始一个新业务使用重定向,业务没有结束使用转发
17,会话管理是客户端于服务端通讯过程中产生的数据,cookie是客户端会话技术,session是服务端会话技术
18,四个域对象,PageContext,RequestContext,session,ServletContext,PageContenxt作用于一个jsp页面,RequestContenxt一个请求资源,ServletContext整个项目,例如登录时账号密码在不同资源都可以用,用RequestContenxt需要转发,ServletContext,保存账户的key相同,所以出现后登录账户覆盖先登录账户,不能区分用户
19,cookie特点,不能直接保存中文,数据明码保存,数量有限制,大小不超过4K;cookie默认保存在浏览器内存中,设置存活时间,正整数秒,使用文本保存,负整数浏览器保存,0间接删除;浏览器访问服务器时会检查cookie的domain是否于服务器一致,一样携带,同一个项目不同资源访问到的cookie也不一样,由cookie的path决定
20,session作用范围,打开浏览器访问资源到浏览器关闭,第一次访问没有创建返回与浏览器绑定,数据结构为map,getSession(boolean b)参数为false没有session对象不创建返回null,存活时间默认30分钟
21,jsp运行在Web服务器上,本质为一个servlet,Web服务器将jsp翻译为java文件,再编译为class文件,反射创建对象,继承的类父类为HttpServlet,调用service方法处理业务,输出数据用el表达式和jstl标签