JSP SERVLET考试提纲
- 格式:doc
- 大小:64.00 KB
- 文档页数:9
jsp基础速成精华讲解Tomcat是一种J2ee服务器的实现bin -- 存放所有相关的可执行文件及工具(startup shutdown)conf -- 存放所有xml和properties配置文件lib -- 相关类库(servlet-api.jar)webapps -- 存放开发的j2ee项目,包括servlet和jspworks -- 虚拟机将jsp文件自动翻译成servlet及class,保存在works目录下对于conf目录tomcat-users.xmlserver.xmlweb.xmlServlet三个要素:1.必须继承自HttpServlet ?来自哪一个包,父类?2.必须实现doGet()或者doPost() --> 生命周期三阶段init --》service --》destory3.必须在web.xml中配置Servlet<servlet><servlet-name> </servlet-name><servlet-class> </servlet-class></servlet><servlet-mapping><servlet-name> </servlet-name><url-pattern> </url-pattern></servelt-mapping>HttpServeltRequest:请求对象getParameter():获得表单元素的值getParameterV alues():获得表单多元素的数组值getAttribute():获得request范围中的属性值setAttribute():设置reqeust范围中的属性值removeAttribute(): 删除reqeust范围中的属性值setCharacterEncoding():设置字符编码* getSession(boolean create):获得当前session,create为true,当当前没有session时,会创建新的sessioncreate为false,当当前没有session时,会返回nullHttpSerletResponse:响应对象sendRedirect():外部跳转getWriter():获得输出流对象setContentType("text/html; charset=utf-8"):设置相应内容格式和编码setCharacterEncoding():设置字符编码内部跳转:LoginServletrequest.getRequestDispatcher("index.jsp").forward(request, resposne);外部跳转(重定向):response.sendRedirect("index.jsp");内部跳转是一次请求和一次响应外部跳转是两次请求和两次响应ServletContext:Servlet上下文对象(application)--》在servlet中使用getServletContext(),取得application对象它是一个公共区域,可以被所有的客户端共享setAttribute():向公共区域里放入数据getAttribute():从公共区域里取数据三:四个标准范围:page request, session, ServletContext共同点:都有setAttribute(), getAttribute()区别:范围不同,page < request < session < servletContext四:四种会话跟踪方式四种会话跟踪方式:1.SessionHttpSession session = request.getSession();session.setAttribute("name", "zhangsan");session.setAttribute("pwd", "aaa");String name = (String) session.getAttribute("name");2.cookie://创建CookieCookie cookie = new Cookie("name", "zhangsan");//设置Cookie的超时时间cookie.setMaxAge(24 * 60 * 60 *60);//把Cookie发送到客户端response.addCookie(cookie);//得到客户端发送的CookieCookie [] cookies = request.getCookies();for(int i=0; i <cookies.length; i++) {Cookie temp = cookies[i];String key = temp.getName();String value = temp.getV alue();}3.隐藏表单域<input type="hidden" name="name" value="zhangsan" /> request.getParameter("name");4.Url重写问号传参LoginServlet?username=zhangsan&pwd=123String name = request.getParameter("username");String pwd =request.getPareameter("pwd");五:服务器上的五大对象request, response, session, servletContext,servletConfigJsp:Java Server Page页面构成:7种元素1.静态内容:html2.编译指令:page, include, taglib:<%@ 指令名属性1="属性值1" 属性2="属性值2" %> 3.表达式: <%=表达式%>表达式没有;结尾!!!4.Scriptlet <% Java代码%>合法的java都可以使用5.声明: <%! %>:成员变量和方法包括变量声明和方法声明6.动作: <jsp:动作名属性="属性值"> </jsp:动作名>本质上,是xml标签,<jsp:include> --> 与编译指令include区别<jsp:forward> --> 属于内部跳转<jsp:useBean> --> id\class\scope<jsp:setProperty> --> 三种设置属性值的方式<jsp:getProperty> --> 取值操作,可以被${}取代7.注释:客户端看不到的: <%-- --%> JSP注释客户端可以看到的: <!-- --> HTML注释Jsp的执行过程:1.转换:Jsp--->Servlet2.编译:Servlet---->.class3.执行:.class第一次访问jsp的时候响应速度较慢,后面请求时响应速度快脚本:表达式: <%= %>Scriptlet: <% %>声明: <%! %>指令:page:language, import, errorPage, isErrorpage(session isELIgnored isThreadSafe)include:filetaglib:uri:指定标签库描述符的路径prefix:指定标签的前缀隐式(九个内置)对象:分类:1.输入和输出对象:request(HttpServletRequest),response(HttpServletResponse),out(JspWriter), servlet中的out是PrintWriter2.作用域通信对象:pageContext, request,session(HttpSession),application(ServletContext)3.Servlet对象:page(this), config(ServletConfig)4.错误对象:exceptionweb.xml文件参数的三种读取方式1、Servlet初始化参数<servlet><servlet-name>EmpServlet</servlet-name><servlet-class>com.cissst.servlet.EmpServlet</servlet-class><init-param><param-name>username</param-name><param-value>tomcat</param-value></init-param></servlet>调用servlet的getInitParameter("username");2、context上下文参数<context-param><param-name>password</param-name><param-value>12345</param-value></context-param>调用servlet的getServletContext().getInitParameter("password");3、资源注入前提:在tomcat6以上使用<env-entry><env-entry-name>message</env-entry-name><env-entry-type>ng.Integer</env-entry-type><env-entry-value>9527</env-entry-value></env-entry>private @Resource(name="message") int mess;或@Resource(name="message")private int mess;JavaBean:一个标准的JavaBean有三个条件1.具有不带参数的公共的构造方法2.具有setter和getter方法3.公有的类、私有属性Jsp中的标准动作:eBean:创建JavaBean的一个实例或定为一个已经存在的javabean<jsp:useBean id="stu" class="com.westaccp.test.Student" scope="page/session/application/request" />2.setProperty:给JavaBean的属性赋值<jsp:setProperty name="stu" property="stuName" value="zhangsan" /><jsp:setProperty name="stu" property="stuName" param="txtName" />value和param不能同时使用偷懒的方法: <jsp:setProperty name="stu" property="*" />这个时候需要注意的是,表单元素的名字必须和JavaBean的属性值一模一样3.getProperty:获得JvaBean的属性值<jsp:getProperty name="stu" property="stuName" />4.forward:内部跳转,相当于request.getRequestDispatcher().forward(request, response);<jsp:forward page="index.jsp" />5.include:包含<jsp:include page="header.jsp" flush="true" />表达式语言:EL: Expression Language语法格式: ${表达式}表示式= 运算符+ 操作数运算符:跟Java比较,多了一个empty, 少了一个赋值运算符${empty ""} : true${empty null} :trueempty 对于空的数组和集合,返回值也为truepageScope requestScope sessionScope applicationScope param paramV alue都是EL内置对象例:${ername} --》表示从request的attribute中找到user的Javabean,取出user中的username属性例:${param.password} --> 表示从提交参数中获取password的值操作数:-->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用""), Null-->变量:1.指的是放在四个标准范围里的属性(page, request, session, application)2.在编准范围内的搜索顺序:page-->request--->session--->application3.怎么取得变量值:点运算符., 还以用[]<%request.setAttribute("name", "lisi");%>${}或者${requestScope["name"]}-->隐式对象1.pageContext:通过它可以访问request, session, servletContext2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope3.跟输入有关的:param, paramV alues4.其他的:header, cookie, headervalues,EL表达式适用的场合:1.可以在静态文本中使用2.与自定义标签结合使用3.和JavaBean结合使用<jsp:userBean id="stu" class="com.westaccp.test.Student" scope="session" /><jsp:setProperty name="stu" property="stuName" value="hello" />${stu.stuName}自定义标签:1.标签处理程序实现--->实现:继承自BodyTagSupport或者TagSupport一般会重写doStartTag(), doEndTag(), doAfterBody()--->描述:在标签库描述符文件中描述(.tld)<taglib><tlib-version>1.0 </tlib-version><jsp-version>2.0 </jsp-version><short-name>simpletag </short-name><tag><name>showbody </name><tag-class>com.westaccp.test.ShowBodyTag </tag-class><body-content>empty/jsp </body-content><attribute><name>color </name></attribute></tag></taglib>--->使用: <%@ taglib uri="WEB-INF/mytag.tld" prefix="my" %><my:showbody />2.标签文件--->实现和描述在.tag文件中实现设置主体内容: <%@ body-content="empty/scriptless" %>设置属性: <%@ attribute name="name" required="true" rtexprvalue="true" %> 有主体内容: <jsp:doBody scope="session" var="theBody" /><%String body = (String) session.getAttribute("theBody");%>--->使用WEB-INF/tags/sayhello.tag<%@ taglib tagdir="/WEB-INF/tags/" prefix="you" %><you:sayhello />标准标签库:1.核心标签库-->通用:set: <c:set var="" value="" scope="" />out: <c:out value="" />remove: <c:remove var="" scope="" />catch: <c:catch></c:catch>-->条件:if: <c:if test="">..... </c:if>choose: <c:choose><c:when test="">... </c:when><c:when test="">... </c:when><c:when test="">... </c:when>.....<c:otherwise>... </otherwise></c:choose>-->迭代:forEach: <c:forEach var="" items="" varStatus="" begin="" end=""> --》可以循环指定的步数或者遍历一个数组或集合(items="${}")forTokens: <c:forTokens var="" items="" delim=",;|"> </foTodens>例:Java,C#;SQL|C2.I18N与格式化标签库-->setLocale:设置本地区域-->bundle:设置资源包-->setBundle:设置资源包-->message:输出消息3.SQL标签库-->setDataSource:设置数据源,用于获得与数据库的连接-->query:执行查询-->update:执行增,删,改-->transaction:事务-->param:参数4.XML标签库过滤器filter:生命周期:1.实例华:2.初始化:init()3.过滤:doFilter()4.销毁:destroy()5.不可用配置:<filter><filter-name> </filter-name><filter-class> </filter-class></filter><filter-mapping><filter-name> </filter-name><url-pattern> </url-pattern></filter-mapping>几个重要的接口:1.Filter:init(), doFilter(), destroy()2.FilterChain: doFilter(request, response)3.FilterConfig:getFilterName(), getInitParameter(),过滤器链:--->1--->2--->3--->Servlet 请求<----1 <---2 <---3 <--- 响应监听器Listener分为两种:三个范围创建、销毁监听以及三个范围中的属性创建、移除监听1、三个范围创建、销毁监听HttpSessionListener\ServletContextListener\ServletRequestListener2、三个范围中的属性创建、移除监听HttpSessionAttributeListener\ServletContextAttributeListener\ServletRequestAttributeListener监听器的web.xml配置位置在filter之下,servlet之上<listener><listener-class>xxx.ListenerTest</listener-class></listener>web.xml中的JSP配置对JSP本身可以和servlet一样等同配置,但servlet-class应该改为jsp-file,如<servlet><servlet-name>EmpServlet</servlet-name><jsp-file>/emp.jsp</jsp-file></servlet>servlet-mapping中可以使用多映射路径<servlet-mapping><servlet-name>EmpServlet</servlet-name><url-pattern>/emp</url-pattern><url-pattern>/emp.html</url-pattern><url-pattern>/emp.php</url-pattern></servlet-mapping>MvC设计模式1.ModelI:jsp+JavaBean,jsp负责页面数据的获取和显示,javabean负责数据的业务逻辑处理2.ModelII:jsp+Servlet+JavaBean+DAO jsp负责页面数据的获取和显示,serlvet负责业务逻辑的调用和页面显示数据的封转、跳转javabean+DAO负责数据的业务逻辑处理jsp---viewservlet---controljavabean+DAO---modelMVC:M--Model:模型:访问后台数据库V--view:视图:展示C--control:控制器:控制程序流程ModelII和MVC的关系:MVC是一种设计模式,ModelII它是MVC的一种具体的实现。