jsp面试基础速成精华讲解

18 篇文章 0 订阅

jsp基础速成精华讲解

 

一.       Tomcat

   Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。默认端口号是80可以不用写端口号。

1.tomcat目录结构

Ø      /bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件

Ø      /conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是tomcat-users.xml、server.xml和 web.xml

Ø      /doc:存放Tomcat文档

Ø      /server:包含三个子目录:classes、lib和webapps

Ø      /server/lib:存放Tomcat服务器所需的各种JAR文件

Ø      /server/webapps:存放Tomcat自带的两个WEB应用admin应用和manager应用

Ø      /common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件

Ø      /shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)

Ø      /logs:存放Tomcat执行时的日志文件

Ø      /src:存放Tomcat的源代码

Ø      /webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

Ø      /work:存放JSP编译后产生的class文件

2.Tomcat6.0配置虚拟目录:

Ø      设虚拟目录"site",通过 http://localhost:8080/site 访问物理路径 D:\site 文件夹里面的内容。设置过程如下:

Ø      打开Tomcat6.0\conf\server.xml 文件,在<Host> 和 </Host> 之间加入:
<Context path= " /site " docBase= " d:\site "></Context>
path= " /site " 是虚拟目录的名称
docBase= " d:\site " 为物理路径

Ø      如果虚拟目录和真实目录webapps下面都有site这个文件,首先访问虚拟目录。

3.Tomcat6.0配置目录浏览功能

Ø      Tomcat默认是关闭了目录浏览功能的,这个主要是处于安全性的考虑。要是虚拟目录下没有默认首页,那这个目录下的文件列表就有可能泄露给别人了。 这个是个配置选项,你可以手动打开,开发时有用,但是生产环境就最好关闭。配置选项在conf/web.xml中找到。

<servlet>

<servlet-name>default</servlet-name>。。。</servlet>

将其中的

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

设置改为true即可解决此问题

4.Tomcat6.0配置基于端口号的虚拟主机

Tomcat6.0\conf\server.xml 文件对于架构设计模型的实现如下:

<Service>

<Connectorport=…>

<Engine>

        <Host>

               <Context/>

        </Host>

</Engine>

</Service>

     操作: 当配置基于端口号的虚拟主机时,需要增加一个新的Service服务,既copy整个<Service>标签组,并修改Connector中的port所指端口,即可实现多主机配置。

5.Tomcat6.0配置基于主机名的虚拟主机

Tomcat6.0\conf\server.xml 文件对于架构设计模型的实现如下:

<Service>

<Connectorport=…>

<Engine>

        <Hostname=   appbase=>

               <Context/>

        </Host>

</Engine>

</Service>

     操作: 当配置基于主机名的虚拟主机时,需要增加多个新的Host主机设置,既copy整个<Host>标签组,并修改其中的name所指主机名,appbase所指虚拟目录(基准路径),即可实现多主机配置。

    注意:需要有DNS或hosts支持,如修订C:\WINDOWS\system32\drivers\etc目录下的hosts文件,增加更多主机名。

二.       Servlet

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机

1.Servlet三个要素:

Ø      必须继承自HttpServlet? 

Ø      必须实现doGet()或者doPost() --> 生命周期三阶段 init --》service  --》destory

Ø      必须在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>

Servlet必须实现javax.servlet.Servlet 接口

通过扩展这两个类实现:

javax.servlet.GenericServlet   //跨协议的Servlet

javax.servlet.HttpServlet         //HTTP Servlet

2.Servlet.http包结构:

3.HttpServeltRequest(请求对象):

Ø      getParameter():获得表单元素的值

Ø      getParameterValues():获得表单多元素的数组值

Ø      getAttribute():获得request范围中的属性值

Ø      setAttribute():设置reqeust范围中的属性值

Ø      removeAttribute():删除reqeust范围中的属性值

Ø      setCharacterEncoding():设置字符编码

Ø      *getSession(boolean create):获得当前session,create为true,当当前没有session时,会创建新的session

Ø        create为false,当当前没有session时,会返回null

4.HttpSerletResponse(响应对象):

Ø      sendRedirect():外部跳转

Ø      getWriter():获得输出流对象

Ø      setContentType("text/html;charset=utf-8"):设置相应内容格式和编码

Ø      setCharacterEncoding():设置字符编码

Ø      setHeader("refresh","2;url=index.jsp"):重新定义请求头

 

Ø      内部跳转:

LoginServlet

request.getRequestDispatcher("index.jsp").forward(request,resposne);

Ø      外部跳转(重定向):

response.sendRedirect("index.jsp");

Ø      内部跳转(请求转发)和外部跳转(重定向)的区别?总结归纳要点:
1、内部跳转的时候实际上是通过服务器端将请求转发到另外的页面或者servlet中,这个时候跳转到的目标页面或者servlet可以获取到请求对象,也可以获取到请求中的属性和参数。而外部跳转的时候实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服务器第二次拿到的request对象已经不是第一次请求的request对象了,所以无法获取到第一次请求里的参数和属性。
2、内部跳转的url地址栏不会发生变化,外部跳转url则会发生变化。
3、内部跳转无法跳转到工程以外的jsp或者servlet,外部跳转则可以。内部跳转一次请求和一次响应,request信息不丢失 ,外部跳转是两次请求和两次响应

 

Ø      ServletContext:Servlet上下文对象(application)--》 在servlet中使用getServletContext(),取得application对象

Ø      它是一个公共区域,可以被所有的客户端共享

Ø      setAttribute():向公共区域里放入数据

Ø      getAttribute():从公共区域里取数据

Ø      getInitParameter(name):获取web.xml中的设置的参数

5.四个标准范围:

page request, session, ServletContext

Ø      共同点:都有setAttribute(), getAttribute()

Ø      区别:范围不同,page < request < session <servletContext

6.四种会话跟踪方式:

Ø      Session

HttpSession session =request.getSession();

session.setAttribute("name","zhangsan");

session.setAttribute("pwd","aaa");

String name = (String) session.getAttribute("name");

Ø      cookie:

//创建Cookie

Cookie cookie = newCookie("name", "zhangsan");

//设置Cookie的超时时间

cookie.setMaxAge(24 * 60 * 60 *60);

//把Cookie发送到客户端

response.addCookie(cookie);

//得到客户端发送的Cookie

Cookie [] cookies =request.getCookies();

for(int i=0; i <cookies.length;i++) {

Cookie temp = cookies[i];

String key = temp.getName();

String value = temp.getValue();

}

Ø      隐藏表单域

<input type="hidden"name="name" value="zhangsan" />

request.getParameter("name");

Ø      Url重写

问号传参

LoginServlet?username=zhangsan&pwd=123

String name =request.getParameter("username");

String pwd=request.getPareameter("pwd");

7.服务器上的五大对象

request,response, session, servletContext,pageContext

三.       Jsp:Java Server Page

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

1.   页面构成

Ø      1.静态内容:html

Ø      2.编译指令: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注释

2.   Jsp的执行过程:

1.转换:Jsp--->Servlet

2.编译:Servlet---->.class

3.执行:.class

第一次访问jsp的时候响应速度较慢,后面请求时响应速度快

3.   脚本:

表达式:<%= %>

Scriptlet: <% %>

声明:<%! %>

指令:

page:language, import, errorPage, isErrorpage(session isELIgnored isThreadSafe)

include:file

taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀

 

4.   隐式(九个内置)对象:

分类:

1.输入和输出对象:request(HttpServletRequest),

response(HttpServletResponse),

out(JspWriter), servlet中的out是PrintWriter

2.作用域通信对象:pageContext, request,

session(HttpSession),

application(ServletContext)

3.Servlet对象:page(this),config(ServletConfig)

4.错误对象:exception

 

5.   web.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>java.lang.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;

 

6.   JavaBean:

一个标准的JavaBean有三个条件

1.具有不带参数的公共的构造方法

2.具有setter和getter方法

3.公有的类、私有属性

 

Jsp中的标准动作:

1.useBean:创建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:includepage="header.jsp"/>

 

7.   表达式语言:

EL: Expression Language

语法格式:${表达式 }

表示式= 运算符 + 操作数

运算符:跟Java比较,多了一个empty, 少了一个赋值运算符

${empty ""} : true

${empty null} :true

empty 对于空的数组和集合,返回值也为true

 

操作数:

-->常量:布尔型(true/false), 整型,浮点型, 字符串(可以用""), Null

-->变量:

1.指的是放在四个标准范围里的属性(page, request, session, application)

2.在编准范围内的搜索顺序:page-->request--->session--->application

3.怎么取得变量值:点运算符., 还以用[]

<%

request.setAttribute("name","lisi");

%>

${requestScope.name}

或者

${requestScope["name"]}

 

-->隐式对象

常用:pageScoperequestScope sessionScope applicationScope param paramValue都是EL内置对象

 

例:${requestScope.user.username}--》表示从request的attribute中找到user的Javabean,取出user中的username属性

例:${param.password}--> 表示从提交参数中获取password的值

 

1.pageContext:通过它可以访问request, session, servletContext

2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope

3.跟输入有关的:param, paramValues

4.其他的: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}

 

8.   自定义标签:

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

<%@ taglibtagdir="/WEB-INF/tags/" prefix="you" %>

<you:sayhello />

 

 

9.   标准标签库:

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|C

2.I18N与格式化标签库

-->setLocale:设置本地区域

-->bundle:设置资源包

-->setBundle:设置资源包

-->message:输出消息

3.SQL标签库

-->setDataSource:设置数据源,用于获得与数据库的连接

-->query:执行查询

-->update:执行增,删,改

-->transaction:事务

-->param:参数

4.XML标签库

 

 

10.过滤器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 <--- 响应

 

11.监听器Listener

分为两种:三个范围创建、销毁监听以及 三个范围中的属性创建、移除监听

1、三个范围创建、销毁监听 HttpSessionListener\ServletContextListener\ServletRequestListener

2、三个范围中的属性创建、移除监听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---view

servlet---control

javabean+DAO---model

MVC:

M--Model:模型:访问后台数据库

V--view:视图:展示

C--control:控制器:控制程序流程

ModelII和MVC的关系:

MVC是一种设计模式,ModelII它是MVC的一种具体的实现

 

一、           XMLExtensible Markup Language扩展标记语言

1.      作用:描述数据,存储数据,交换数据

2.      格式:

<?xmlversion=”1.0” encoding=”GBK”?>  <!—xml声明注释 -->

<root>

       <row>

              <empno>7369</empno>

              <ename>SMITH</ename>

</row>

</root>

3.      数据岛

<xml id=”emp”src=”emp.xml”/>  载入xml文件

4.      DTDData Type Definition

作用限定XML的内容

分类(内部DTD,外部DTD,公用DTD

子元素:<!DOCTYPE  staff [<!ELEMENT staff  any>

<!ELEMENTempno (#PCDATA)>]>

       重复元素:+ * | ()

5.      XML文件解析(五种方法)

 

SAXReader sr = newSAXReader();

Document doc =sr.read(“emp.xml”);

Element el_root =doc.getRootElement();

1.      Iteratorit = el_root.elementIterator();

2.      Listrowlist = el_root.elements(“row”);

3.      doc.accept(newVistor(){});

4.      Visitorvt = new VisitorSupport(){};

doc.accept();

              5.List list = doc.selectNodes(“ROWDATA/ROW/ENAME”);

6. XML文件的写入、删除、更新

    用到的方法主要有:

              Document.createDocument();    //建立XML文档

              doc.addElement(“”);

              newFileWriter(“url”);

              Output.createPrettyPrint();

              setEncoding(“GBK”);

              newXMLWriter();

 

 

二、           JDBC(java database connectivity) java数据库连接

1. JDBCJava调用相关数据库的API,它独立于数据库

2. java 调用数据库的步骤:(主要有四步)

Class.forName(oracle.jdbc.driver.OracleDriver);  //加载驱动

Connection con =DriverManager.getConnection(url,username,password);  //建立连接

Statement st = con.createStatement();  //建立sql分析器

ResultSet rs = st.executeQuery(“select *from emp”);   //执行sql语句分析

3. JDBC ODBC的比较

       1.连接驱动方式:

JDBC :有三种驱动方式,OCI NET8thin(瘦客户端的连接方式,客户端只需加载几个专用jar)KPR8方式

ODBCODBC桥的方式,必须在windows环境下安装驱动程序,创建数据源

2. 加载驱动的代码:

      JDBCoracle.java.driver.OracleDriver

      ODBCsun.jdbc.ocbc.jdbcodbcDriver

3. 连接数据库的url

      JDBCjdbc:oracle.thin:@127.0.0.1:1521:ORCL

      ODBCjdbc:odbc:数据源名称

4. 几种sql分析器的比较:

       Statement普通分析器

       PreparedStatement:预编译的sql分析器(效率高),可以使用通配符”?”

       CallableStatementJava中专门用来调用过程和函数的分析器

6.      事务处理:

con.setAutoCommit(false);

con.commit();

con.rollback();

注:多个会话同时开启时:只对Update挂起,insertdelete不挂起

7.      Connection的三种连接方式:滚动,并发只读,并发更新

8.      使用结果集ResultSet修改、插入、删除、查询指定记录

插入:rs.absolute(8);

          rs.movetoInsertRow();

              rs.updateInt(1,1234);

              rs.uptadeString(2,”Lee”);

              rs.insertRow();

              rs.movetoCurrentRow();

删除  rs.absolute(3);

              rs.deleteRow();

修改  rs.absolute(5);

              rs.updateInt(8888);

              rs.updateRow();

9.     使用JDBC调用函数、过程、包、游标

 

 

三、           HTML基础

1. 作用:显示信息。

HTML是静态的,IE可以直接解析,而JSP是动态的,需要服务器解析

2. HTML基本结构:

       <HTML>

              <HEAD></HEAD>

              <BODY></BODY>

</HTML>

3. HTML主要元素(控件)

    文本:<input type=”text” name=”username”>

    密码框:<input type=”password” name=”pwd”>

    单选框:<input type=”radio” name=”sex”>

    多选框:<input type=”checkbox” name=”favor”>

    文本输入框:<input type=”file” name=”myfile”>

    隐藏域:<input type=”hidden” name=”user”  value=”username”>

    多行文本框:<textarea rows=”10”cols=”30”></textarea>

    列表框:<select><option><option><select>

 

    提交按钮:<input type=”submit” value=”提交”>

    重置按钮:<input type=”reset” value=”重置”>

    普通按钮:<input type=”button” value=”点击” οnclick=”window.close()”>

       Form表单:<form action=”A.html”method=”post”></form>

    图片标签:<img src=”” height =”” width=””>

       Meta标记:<meta http-equiv=”refresh”content=”2,url=”http://www.126.com””>

       Div标记:<div align=”center”style=””></div>   另起一行显示

       Span标记:<span></span>    直接在上一行后面显示

    跑马灯:<marqueebehavior=”scroll/slide/alternate” direction=”” scrollmout=””>

    预格式:<pre><pre>

    字段集:<fieldset><legend>标题<legend></fieldset>

    框架集:<frameset><framecols=”30%,*”><frameset>

    超链接:<a href=””></a>

    网页内嵌:<iframe>

    视频:<embed src=””>        <img dynsrc=”” start=”moveorver”>

    背景音乐:<bgsound src=””>

 

 

 

四、           Javascript基础(一种脚本语言)

1. 简介:Javascript是一种弱类型的语言,是基于对象,基于事件的

2. Javascript语法:

    它的变量都定义为var类型,它的语法检验很弱,区分大小写,它的内建对象和内建函数都是小写。

    数组:new Array(8);

    循环:while,for,

    判断:if ,swich case

    常用内置对象:

Windowalert,confirm,prompt,open,print,close

Documentprompt, all(“”).style.display

Location href replace(不可回退)

history

    事件:  onclick,ondblclick,

onload,onunload(这两个只在body中使用)

onmouseover,onmouseout,

oncommit(form中使用)

onchange(用在Select)

onselect(用在文本的选中)

    内置HTMLinnerHTML(用于改变元素的源代码)

    网页内嵌:<iframe id=”message” src=”sports.html”>

                            document.all(“message”).src=”sports.html”

 

 

五、          JSP

1.      简介:JSP是动态代码,必须有服务器来解析。需要整合myEclipseTomCat。发布的只是webroot下的内容。JSP第一次执行时在服务器端由引擎转换为Servlet代码,最终编译成class文件。

2.      JSP语法:

声明:<%!   %> 声明变量或函数,是公有的,全局的

输出:<%=   %>

指令:page,include,taglib

<%@ pageimport=”” contentType=”text/html;charset=GBK”%>

3.      JSP应用:

设置错误页

errorPage=”error.jsp”

isErrorPage=”true” out.println(exception.getMessage()) 合用

文件的静态引入

<%@include file=”A.jsp”%>  直接拷贝执行

文件的动态引入

<jsp:includeflush=”true” page=”A.jsp” >  </jsp:include>

              页面转向:

                            <jsp:forward></jsp:forword>

                            <jsp:include></jsp:include>

JSP内置对象:(setAttribute() 临时存储数据,getAttribute()获取数据)

pageContext 仅当前页面有效

request          请求页面有效

response        对整个IE窗口有效

application    

4.      参数传递:

1)         超链接方式:<ahref=”A.jsp?username=Lee&pwd=888”></a>

2)         Form提交:post可传递大数据

3)         Jsp:forward jsp:include方式

4)         Javascript方式:loacation.href location.replace(“A.jsp?.....”)

5.      request的使用:

request.getContextPath();

request.getRealPath();

request.getParameterValues();

request.setCharacterEncoding(“GBK”);

request.getRequestDispatcher(“A.jsp”).forward(request,response);

6.      response的使用:(response 是服务器端得响应)

sendError();

setContentType(“text/html;charset=GBK”);

sendRedirect() 页面重定向,相当于location.replace()

注:sendRedirect重定向后,request不再是原来的request

六、          JavaBean

1.      javaBeanjsp中的Java代码抽取出来,减小代码耦合,提高内聚。

2.      组件:做好的一个软件模块,常用组件有:COMJavaBeanEJBCORBA

3.      JavaBean的四个要求:

A.无参的构造函数

B.在一个包下

C.应该没有public类型的属性

D.对属性的访问,通过setter.getter来访问

4.      应用:

<jsp:useBeanid=”emp” class=”com.sun.demo.Emp” scope=”request”>

       <jsp:setProperty name=”emp”property=”name” value=”tiger”>

</jsp:useBean>

以上是javaBean的生存周期,效果相当于:

       Emp e = new Emp();

       Request.setAttribute(“emp”,e);

<jsp:getPropertyname=”emp” property=”name”>

 

七、          Servlet

1.      简介:servlet是位于服务器上的Java应用程序。继承HttpServlet类,必须在web.xml中注册。Web.xml 是部署描述文件。服务器在启动时,根据web.xml中的配置加载Servlet

2.      作用:作为MVC模式中的控制层,用作控制转发。

3.      Servlet生命周期:

init() 第一次访问时调用,只调一次

service()每次访问都调用,决定调用doGet()还是doPost()

destroy()服务器关闭时调用

4.      web.xml 部署描述文件的配置:

<servlet>

       <servlet-name>

       <servlet-class>

       <init-param>   初始化参数

              <param-name>

       </init-param>

</servlet>

<servlet-maping>

       <servlet-name>

       <url-pattern>

</servlet-maping>

<welcome-file-list>   设置欢迎页面

       <welcome-file>

</welcome-file-list>

<error-page>    设置错误页

       <error-code>(exception-type)

       <location>

</error-page>

<session-config>    设置session的有效生命

       <session-timeout>(以分钟为单位)

</session-config>

5.      Servlet访问:(JSP类似)

6.      过滤器:

作用:权限校验,日志记录,图片转换,数据加密等

实现:实现Filter接口,重写doFilter方法,传递过滤链,放请求过去chain.doFilter(),web.xml中注册过滤器。

              生存周期       init()服务器启动是执行,只调用一次

                                                 doFilter()

                                                 destroy()

              每当访问网页,过滤器自动执行。

7.      监听器:

作用:监听客户请求和服务器操作。可以自动激发一些操作,如监听在线用户数量(即做访问统计)靠事件触发:如setAttribute();

实现:实现Listener接口,在web.xml中注册

常用接口:

              ServletContextAttributeListener

ServletContextListener

              HttpSessionAttributeListener

HttpSessionListener

8.      字符集转换问题:

contentType=”text/html;charset=GBK”

request.setCharacterEncoding(“GBK”);

response.setContentType(”text/html;charset=GBK”);

9.      编写安全的Servlet(避免数据共享)

10. 自动加载Servlet

       web.xml 文件中添加<load-on-startup>配置节点

八、          EL表达式

1    ELJsp中使用的表达式语言(只在Jsp中使用)

2    使用方法:${变量名称}

3    作用:访问存储对象,简化JavaBean操作、集合操作、Map操作

4    注意:EL只能用于提取数据

5    EL访问JavaBean${emp.empno}

6    EL访问集合:${list[3].ename}

7    EL访问Map${map.username}

8    访问特定作用域中的值,如:${applicationScope.username}

9    获取参数:${param.username} ${paramvalues[1].username}

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常考面试题 1.讲下servlet的执行流程。 Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。 2.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全. 3.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆这个用户,使用session共享,你是怎么做的。 把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。 4.写一个自定义标签要继承什么类 SimpleTagSupport,一般调用doTag方法 或者实现SimpleTag接口 5.Jsp如何处理json 在 jsp 中处理 JSON,通常需要配套使用 JQuery 控件,并且导入一些 Common jar 包。 使用 JQuery 控件是因为它能有效的解析并且展示 JSON 数据, 导入Common 则是因为 Java 中的对象并不是纯粹的数据,需要通过这些 Jar 包的处理使之转化成真实数据。 6.如何处理Servlet的线程不安全问题 1.最简单的就是不使用字段变量, 2.使用final修饰变量, 3.线程安全就是多线程操作同一个对象不会有问题,线程同步一般来保护线程安全, 所以可以在Servlet的线程里面加上同步方法或同步块。 (Synchronized)可以保证在同一时间只有一个线程访问,(使用同步块会导致性能变差,最好不去使用实例变量) 7.Jsp的重定向和转发的流程有什么区别 重定向是客户端行为,转发是服务器端行为 重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发 重定向会导致request对象信息丢失。转发则不会 转发的url不会变,request.getRequestDispatch().forward() 重定向的url会改变,response.getRedirect().sendRedirect();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值