**总体回顾_重要知识点 [web基础day24] *

版权声明:文章为作者自己原创文章,转载请注明出处。 https://blog.csdn.net/qq_37128049/article/details/85273261

总体回顾:

Servlet – 实际应用很多,很重要。

* jsp本质是一个servlet,所以它不是前台的,而是后端的内容。
	* 展示给用户的最好是html界面,效率高,完成的效果好,jsp可以用来公司管理系统,方便获取
	* web四大域对象:
		* ServletContext:生命周期是在服务器启动创建,关闭销毁(正常关闭)
		* Session:浏览器第一次访问服务器servlet,如果servlet调用getSession则创建。
			* 关闭方式:
				1.默认时间  30分钟
				2.seesion.invilidata()
				3.服务器正常关闭	
		* HttpServletRequest:响应浏览器访问web服务器。(它是一个一次请求,浏览器触发,服务器接收。)
		* PageContext:在jsp页面的一个类似于ServletContext的域对象,在html页面不使用
	* Servlet
		* 接口Servlet
		* 生命周期方法:
			1.init   //只执行一次
			2.service   //每次访问都会被执行
			3.destory   //只执行一次
		* 继承结构体系: Servlet-> GenericService->HttpServlet(分发在httpservlet中,将七种方法进行判断)
		* http请求: 七种    get/post/put/delete
		* Servlet配置方式:
			1.xml
				/WEB-INF/WEB.xml
					* <servlet>
					* 	<servlet-name>demo</servlet-name>		(标识名)
					* 	<servlet-class>com.itheima.itcast.Servlet</servlet-class>  		(全路径)
					* 	</servlet>
					* 	<servlet-mapping>
					* 		<servlet-name>demo</servlet-name>
					* 		<url-patter>/demo</url-pattern>			(虚拟路径)
					* 	</servlet-mapping>
			2.注解
				@WebServlet("/a")

			3.url-pattern路径配置
				* /a
				* /user/a
				* /user/*
				* *.do
						!! * /*.do(不能这么操作)

Request:

	1.获取请求参数
		* getParameter("参数名")
		* getParameterMap("参数名")
		* getParameterValues("参数名")	
	2.获取ServletContext
		* getServletContext()
	3.作为域对象进行存取数据
		* setAttribute("键",值)
		* getAttribute("键")
		* removeAttribute("键")
	4.能请求进行转发
		* request.getRequestDispatcher("/服务端绝对访问路径").forward(request,response)
	5.获取请求行:
		* getRequestUri()   
		* getRequestUrl()
		* getMethod()
		* getCOntextPath()
	6.获取请求头
		* getHeader("请求头")
	

	* 路径问题:
		* 相对路径(不以/开头)
			* ./ 当前目录
			* ../上一级目录
		* 绝对路径(用于请求转发)
			* 服务端绝对路径(请求转发)	
				* /访问资源路径
			* 浏览器端绝对路径
				* /虚拟目录/访问资源路径
	* response(响应)
		* 设置响应行:
			* setStatus(状态码)
				1.200:连接正常
				2.404:客户端异常
				3.500:服务器端异常
				4.其他的还有:302,304...
			* 设置响应头
				setHeader("响应头","头的内容")
				setContentType("text/html;charset=utf-8")
			* 设置响应内容
				getWriter().Writer("")
				getOutputStream().write("".getBytes())
			* 重定向
				sendRedirect("/浏览器端绝对路径")

		* 重定向和请求转发的区别:
			1.路径不一样
			2.地址栏(转发不会发生改变,重定向会发生改变)
			3.请求次数
			4.共享数据
				* 域对象/url重写   --将url地址拼接携带数据,参照response课程中重点图

会话技术 :1.多次请求和响应 – 面试经常考,很重要。

	1.Cookie:
		* cookie来自服务器,保存在浏览器端。
		* Cookie相关api: 
			* 发送:
				Cooke c=new Cookie("名字","值")		-- 创建cookie
				c.setMaxAge(10);		//单位是秒	-- 设置存活时间
				c.setPath("/虚拟目录")			-- 这个的意思是cookie的作用范围。
					* 如果要设置cookie的有效访问路径,必须以虚拟目录开头。
				response.addCookie(cookie对象)		发送cookie
			* 接收:
				Cookie[] cookies=request.getCookies();
				cookie.getName()
				cookie.getValue()
		* cookie原理:
			请求头:
				Cookie
			响应头:
				Set-Cookie
	2.Session 基于服务器会话技术
		* session依赖于cookie(set-cookie/请求头cookie)
		* session创建
			HttpSession session=request.getSession		(一旦第一次执行该方法,会创建一个Session,Session对象会提供一个id,该id会以cookie的形式回写到浏览器JSESSIONID)   格式: Set-Cookie:JSESSIONID=2C23FF5CF6ABF728...
		
		* 面试题:访问a.html/a.jsp/a.servlet   谁会在第一次访问的时候就会创建Session。
		* 答:html不会创建Session。Servlet不会创建Session。jsp第一次访问一定会创建Session
		* 域对象:
			* setAttribute("键",值)
			* getAttribute("键")
			* removeAttribute("键")	
		* Seesion的持久化:
			* 钝化活化
			* 通过JSESSIONID=2C23FF5CF6AB...的cookie来进行持久化,setMaxAge()
		* session的销毁:
			* 默认销毁时间   30分钟
			* 服务器正常关闭
			* sessioninvilidate()

ServletContext

	1.域对象:
		* setAttribute("键",值)
		* getAttribute("键")
		* removeAttribute("键")
	2.获取文件的mime类型
		* getMimeType("文件名.后缀名")
	3.获取文件的绝对磁盘路径
		* getRealPath("文件名称")
		* 文件名称
			* web目录
				getRealPath("1.txt")
			* web-inf
				getRealPath("/web-inf/1.txt")
			* src
				getRealPath("/web-inf/classes/1.txt")

jsp/el/jstl脚本

	1. jsp:
		* 常用标签:
			* <% %>
			* <%=%>
			* <%!%>
		* jsp指令:
			* page
			* taglib
			* include
		* jsp注释:
			* <%-- 内容 --%>
		* jsp 9大内置对象
			* application
			* session
			* request
			* pageContext
			* config
			* response
			* page
			* out
			* exception
		
	2.el表达式:	
		* ${pageContext.request.contextPath}
		* jstl:taglib/jar
		* <c:if> 
			-- test
		* <c:foreach>
			-- 普通for循环
				* var
				* begin
				* end
				* step
				* varStatus
			-- 增强for循环
				* var
				* items
				* varStatus

动态代理:

	1.创建:
		* Proxy.new ProxyInstance(类加载器,实现接口,new invocationHander(){
		* 	@Override
		* 	public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
		* 	//具体增强
		* 	//增强前执行功能
		* 	Object result=method.invoke(外部的对象,args);
		* 	//方法执行后的增强
		* 	return result;
		* }
		* })

案例

* 通过ajax去发送异步请求
	* 获取要提交的表单的参数:
		* var params=$("#表单").serialize();

	* 在查询数据库的时候,如果查不到指定对象的内容则会直接报错,可以手动抓取。
	* 先关闭掉tomcat再clean,不然关不掉,因为tomcat文件在target中,如果tomcat一直在运行则无法clean;
	* tomcat很多版本,tomcat在默认处理编码集的时候默认utf-8,而tomcat7 的在处理的时候处理的编码集是iso-8859-1(拉丁文编码)
		* String encodeName=URLEncoder.encode(name,"iso-8859-1")    -- 将name编码为%E5%BC%E4...
		* String encodeName=U
		* domain中的user类和数据库中的user表必须一致。不能少。

猜你喜欢

转载自blog.csdn.net/qq_37128049/article/details/85273261
今日推荐