日期:2014-05-16 浏览次数:20357 次
一.Jsp与servlet的区别: 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类) 2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制. 3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到. Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。 ? 老师发的答案1: JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet 来生成动态网页;JSP由HTML代码和JSP标签构成,可以方便地编写动态网页 因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层. 答案2: JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 ? 二.Jsp的九大对象,七大动作,三大指令 ? jsp九大内置对象: 1>out 向客户端输出数据,字节流.如out.print(" dgaweyr"); ? 2>request 接收客户端的http请求. String getParameter(String name):得到表单参数名name的值. String[] getParameterValues(String name):(得到String[]复选框时常用). setAttribute(String name,Object obj):设置属性名为name,属性值为obj. getAttribute(String name);得到属性值. ? 3>response:封装jsp产生的回应,然后发送到客户端以响应客户的请求.重定向跳转任意界面.(服务器跳转) addCookie(Cookie cookie): sendRedirect("/wel.jsp"):跳转到指定页面 ? 4>session:用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据. session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止.它是HttpSession类的实例.? setAttribute(String name,Object obj):设置属性名为name,属性值为obj. getAttribute(String name):得到属性值. ? 5>application对象:实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问.服务器的启动和关闭决定了application对象的生命.它是ServletContext类的实例.? ? session,application,request的区别: 一个项目中session尽量少用几个,因为过多的session会影响程序的执行效率.它主要用于保存登录信息(用户信息,权限,资源)即频繁使用的信息. application: 用于多个浏览器之间共享数据,多个用户共享该对象,可以做计数器.它的用法与session完全一样. 数据范围: application(服务器关闭时失效)>ression(浏览器关闭时失效)>request(只能用于两个跳转页面之间) ? 6>page对象代表jsp这个实体本身,即当前页面有效.相当于java中的this. 数据范围:page<session<application ? 7>.exception:代表运行时的异常. 在会发生异常的页面加入指令:<%@ page errorPage="处理错误的页面.jsp"%> 在处理异常的页面写入:<%@ page isErrorPage="true"%> ? 8>.pageContext对象 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext. ? 9>.config jsp对应的servlet的配置,可以得到web.xml中的初使化参数. ? jsp七大动作: 一:include 动态包含(分别编译): 用jsp:include动作实现<jsp: include page="included.jsp" flush="true" /> 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。flush属性: 用true ,表示页面可刷新。默认为false; ? 二:useBean动作(jsp页面使用javaBean的第二种方式): <jsp:useBean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)"/> 作用域默认为page(本页面有效). 三:getProperty动作(name为useBean动作中的id). 从对象中取出属性值:<jsp:getProperty name="javaBean对象" property="javaBean对象属性名" /> 四:setProperty动作(name为useBean动作中的id): 为对象设置属性值:<jsp:setProperty name="javaBean对象" property="javaBean对象属性名" value="值"/> 为对象设置属性值:<jsp:setProperty property="javaBean对象属性名" name="javaBean对象" param="username"/> (param="username" 相当于 value=<%=request.getParameter("username")%>) ? 五:param动作(传递参数)): 到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值 <jsp:include page="转向页面的url" >? ?? ? ? ? ? <jsp:param ? name="参数名1" value="参数值1">? ?? ? ? ? ? <jsp:param ? name="参数名2" value="参数值2">? ?? ? ? ? ? ...........? ?</jsp:include>? 或: <jsp:forward page="转向页面的url" >? ?? ? ? ? ? <jsp:param ? name="参数名1" value="参数值1">? ?? ? ? ? ? <js