jsp基础速成精华讲解

  1. Servlet三个要素:
  2. 1.必须继承自HttpServlet
  3. 2.必须实现doGet()或者doPost()
  4. 3.必须在web.xml中配置Servlet
  5. <servlet>
  6. <servlet-name></servlet-name>
  7. <servlet-class></servlet-class>
  8. </servlet>
  9. <servlet-mapping>
  10. <servlet-name></servlet-name>
  11. <url-pattern></url-pattern>
  12. </servelt-mapping>
  13. HttpServeltRrequest:请求对象
  14. getParameter():获得表单元素的值
  15. getAttribute():获得request范围中的属性值
  16. setAttribute():设置reqeust范围中的属性值
  17. setCharacterEncoding():设置字符编码
  18. HttpSerletResponse:相应对象
  19. sendRedirect():外部跳转
  20. getWriter():获得输出流对象
  21. setContentType("text/html;charset=utf-8"):设置相应内容格式和编码
  22. 四种会话跟踪方式:
  23. 1.Session
  24. HttpSessionsession=request.getSession();
  25. session.setAttribute("name","zhangsan");
  26. session.setAttribute("pwd","aaa");
  27. Stringname=(String)session.getAttribute("name");
  28. 2.cookie:
  29. //创建Cookie
  30. Cookiecookie=newCookie("name","zhangsan");
  31. //设置Cookie的超时时间
  32. cookie.setMaxAge(24*60*60*60);
  33. //把Cookie发送到客户端
  34. response.addCookie(cookie);
  35. //得到客户端发送的Cookie
  36. Cookie[]cookies=request.getCookies();
  37. for(inti=0;i<cookies.length;i++){
  38. Cookietemp=cookies[i];
  39. Stringkey=temp.getName();
  40. Stringvalue=temp.getValue();
  41. }
  42. 3.隐藏表单域
  43. <inputtype="hidden"name="name"value="zhangsan"/>
  44. request.getParameter("name");
  45. 4.Url重写
  46. 问号传参
  47. LoginServlet?username=zhangsan&pwd=123
  48. Stringname=request.getParameter("username");
  49. Stringpwd=request.getPareameter("pwd");
  50. 内部跳转:
  51. LoginServlet
  52. request.getRequestDispatcher("index.jsp").forward(request,resposne);
  53. 外部跳转:
  54. response.sendRedirect("index.jsp");
  55. 内部跳转是一次请求和一次响应
  56. 外部跳转是两次请求和两次响应
  57. ServletContext:Servlet上下文对象
  58. 它是一个公共区域,可以被所有的客户端共享
  59. setAttribute():向公共区域里放入数据
  60. getAttribute():从公共区域里取数据
  61. 二:
  62. 三:三个标准范围:request,session,ServletContext
  63. 共同点:都有setAttribute(),getAttribute()
  64. 区别:范围不同,request<session<servletContext
  65. 四:四种会话跟踪方式
  66. 五:服务器上的五大对象
  67. request,response,servlet,session,servletContext
  68. Jsp:JavaServerPage
  69. 页面构成:7种元素
  70. 1.静态内容:html
  71. 2.指令:page,include,taglib:
  72. <%@指令名属性1="属性值1"属性2="属性值2"%>
  73. 3.表达式:<%=表达式%>
  74. 4.Scriptlet<%Java代码%>
  75. 5.声明:<%!%>:变量和方法
  76. 6.动作:<jsp:动作名属性="属性值"></jsp:动作名>
  77. 7.注释:
  78. 客户端看不到的:<%----%>
  79. 客户端可以看到的:<!---->
  80. Jsp的执行过程:
  81. 1.转译:Jsp--->Servlet
  82. 2.编译:Servlet---->.class
  83. 3.执行:.class
  84. 第一次访问jsp的时候响应速度较慢,后面请求时响应速度快
  85. 脚本:
  86. 表达式:<%=%>
  87. Scriptlet:<%%>
  88. 声明:<%!%>
  89. 指令:
  90. page:language,import,errorPage,isErrorpage
  91. include:file
  92. taglib:uri:指定标签库描述符的路径prefix:指定标签的前缀
  93. 隐式对象:
  94. 分类:
  95. 1.输入和输出对象:request(HttpServletRequest),
  96. response(HttpServletResponse),
  97. out(JspWriter),servlet中的out是PrintWriter
  98. 2.作用域通信对象:pageContext,request,
  99. session(HttpSession),
  100. application(ServletContext)
  101. 3.Servlet对象:page(this),config
  102. 4.错误对象:exception
  103. JavaBean:
  104. 一个标准的JavaBean有三个条件
  105. 1.共有的类
  106. 2.具有不带参数的公共的构造方法
  107. 3.具有set()和get()方法
  108. 4.私有属性
  109. Jsp中的标准动作:
  110. 1.useBean:创建JavaBean的一个实例
  111. <jsp:useBeanid="stu"class="com.westaccp.test.Student"scope="page/session/application/request"/>
  112. 2.setProperty:给JavaBean的属性赋值
  113. <jsp:setPropertyname="stu"property="stuName"value="zhangsan"/>
  114. <jsp:setPropertyname="stu"property="stuName"param="txtName"/>
  115. value和param不能同时使用
  116. 偷懒的方法:<jsp:setPropertyname="stu"property="*"/>
  117. 这个时候需要注意的是,表单元素的名字必须和JavaBean的属性值
  118. 一模一样
  119. 3.getProperty:获得JvaBean的属性值
  120. <jsp:getPropertyname="stu"property="stuName"/>
  121. 4.forward:内部跳转,相当于request.getRequestDispatcher().forward(request,response);
  122. <jsp:forwardpage="index.jsp"/>
  123. 5.include:包含
  124. <jsp:includepage="header.jsp"flush="true"/>
  125. 表达式语言:
  126. EL:ExpressionLanguage
  127. 语法格式:${表达式}
  128. 表示式=运算符+操作数
  129. 运算符:跟Java比较,多了一个empty,少了一个赋值运算符
  130. ${empty""}:true
  131. ${emptynull}:true
  132. 操作数:
  133. -->常量:布尔型(true/false),整型,浮点型,字符串(可以用'',还可以用""),Null
  134. -->变量:
  135. 1.指的是放在四个标准范围里的属性(page,request,session,application)
  136. 2.在编准范围内的搜索顺序:page-->request--->session--->application
  137. 3.怎么取得变量值:点运算符.,还以用[]
  138. <%
  139. request.setAttribute("name","lisi");
  140. %>
  141. ${requestScope.name}
  142. 或者
  143. ${requestScope["name"]}
  144. -->隐式对象
  145. 1.pageContext:通过它可以访问request,session,servletContext
  146. 2.跟范围由关的:pageScope,requestScope,sessionScope,applicationScope
  147. 3.跟输入有关的:param,paramValues
  148. 4.其他的:header,cookie,headervalues,
  149. EL表达式适用的场合:
  150. 1.可以在静态文本中使用
  151. 2.与自定义标签结合使用
  152. 3.和JavaBean结合使用
  153. <jsp:userBeanid="stu"class="com.westaccp.test.Student"scope="session"/>
  154. <jsp:setPropertyname="stu"property="stuName"value="hello"/>
  155. ${stu.stuName}
  156. 自定义标签:
  157. 1.标签处理程序实现
  158. --->实现:继承自BodyTagSupport或者TagSupport
  159. 一般会重写doStartTag(),doEndTag(),doAfterBody()
  160. --->描述:在标签库描述符文件中描述(.tld)
  161. <taglib>
  162. <tlib-version>1.0</tlib-version>
  163. <jsp-version>2.0</jsp-version>
  164. <short-name>simpletag</short-name>
  165. <tag>
  166. <name>showbody</name>
  167. <tag-class>com.westaccp.test.ShowBodyTag</tag-class>
  168. <body-content>empty/jsp</body-content>
  169. <attribute>
  170. <name>color</name>
  171. </attribute>
  172. </tag>
  173. </taglib>
  174. --->使用:<%@tagliburi="WEB-INF/mytag.tld"prefix="my"%>
  175. <my:showbody/>
  176. 2.标签文件
  177. --->实现和描述
  178. 在.tag文件中实现
  179. 设置主体内容:<%@body-content="empty/scriptless"%>
  180. 设置属性:<%@attributename="name"required="true"rtexprvalue="true"%>
  181. 有主体内容:<jsp:doBodyscope="session"var="theBody"/>
  182. <%
  183. Stringbody=(String)session.getAttribute("theBody");
  184. %>
  185. --->使用
  186. WEB-INF/tags/sayhello.tag
  187. <%@taglibtagdir="/WEB-INF/tags/"prefix="you"%>
  188. <you:sayhello/>
  189. 标准标签库:
  190. 1.核心标签库
  191. -->通用:
  192. set:<c:setvar=""value=""scope=""/>
  193. out:<c:outvalue=""/>
  194. remove:<c:removevar=""scope=""/>
  195. -->条件:
  196. if:<c:iftest="">.....</c:if>
  197. choose:<c:choose>
  198. <c:whentest="">...</c:when>
  199. <c:whentest="">...</c:when>
  200. <c:whentest="">...</c:when>
  201. .....
  202. <c:otherwise>...</otherwise>
  203. </c:choose>
  204. -->迭代:
  205. forEach:<forEachvar=""items=""varStatus=""begin=""end="">
  206. foTokens:<foTodensvar=""items=""delim=",;|"></foTodens>
  207. Java,C#;SQL|C
  208. 2.I18N与格式化标签库
  209. -->setLocale:设置本地区域
  210. -->bundle:设置资源包
  211. -->setBundle:设置资源包
  212. -->message:输出消息
  213. 3.SQL标签库
  214. -->setDataSource:设置数据源,用于获得与数据库的连接
  215. -->query:执行查询
  216. -->update:执行增,删,改
  217. -->transaction:事务
  218. -->param:参数
  219. 4.XML标签库
  220. 过滤器:
  221. 生命周期:
  222. 1.实例华:
  223. 2.初始化:init()
  224. 3.过滤:doFilter()
  225. 4.销毁:destroy()
  226. 5.不可用
  227. 配置:
  228. <filter>
  229. <filter-name></filter-name>
  230. <filter-class></filter-class>
  231. </filter>
  232. <filter-mapping>
  233. <filter-name></filter-name>
  234. <url-pattern></url-pattern>
  235. </filter-mapping>
  236. 几个重要的接口:
  237. 1.Filter:init(),doFilter(),destroy()
  238. 2.FilterChain:doFilter(request,response)
  239. 3.FilterConfig:getFilterName(),getInitParameter(),
  240. 过滤器链:--->1--->2--->3--->Servlet请求
  241. <----1<---2<---3<---响应
  242. MvC设计模式
  243. 1.ModelI:jsp+JavaBean
  244. 2.ModelII:jsp+Servlet+JavaBean
  245. jsp---view
  246. servlet---control
  247. javabean---model
  248. MVC:
  249. M--Model:模型:访问后台数据库
  250. V--view:视图:展示
  251. C--control:控制器:控制程序流程
  252. ModelII和MVC的关系:
  253. MVC是一种设计模式,ModelII它是MVC的一种具体的实现

你可能感兴趣的:(jsp)