jsp课程作业

1.jsp有哪些指令?作用分别是什么?

jsp有三种常用指令,为:page、include、taglib。其主要用于设定整个jsp页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中。也就是说指令表示对于客户端浏览器是不可见的。jsp指令标识的语法格式如下:

<%@ 指令名 属性1="属性值1" 属性2="属性值2" ... %>

各指令详细作用以及属性如下:

  • page指令

    page用来设定JSP页面的全局属性,该配置作用于整个JSP页面。page指令包含13个属性,如下:

    • language:用来指明所使用的脚本语言类型
    • extends :用来指定该JSP页面生成的Servlet继承于哪个父类
    • import :用来指定要导入的Java包 ,默认导入的包有:java.lang.*;java.servlet.*;java.servlet.jsp.*;java.servlet.http.*;
    • session :用来指定该JSP页面是否可以使用session对象
    • buffer :指定是否使用缓冲区
    • autoFlush:指定缓冲区是否自动进行强制输出
    • isThreadSafe:指定该JSP文件是否支持多线程的使用
    • info:设置该JSP页面的相关信息
    • errorPage:指定当该JSP文件发生异常错误时,网页跳转到的能处理此异常的JSP文件
    • isErrorPage:指定该JSP文件是否为能处理异常的JSP文件
    • contentType:指定该JSP文件的MIME类型及网页编码格式
    • pageEncoding:指定网页的编码格式
    • isELIgnored:指定该JSP文件是否支持EL表达式

    一般创建jsp页面,许多属性都会省略,只会设置好language、contentType、pageEncoding,实例如:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
  • include指令

    include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用include指令进行编码。不过该指令是静态包含,也就是说被包含文件中的所有内容会被原样包含到该jsp页面中。

    ==该指令只有一个属性:file,用于指定要包含文件的路径,该路径可以是相对路径,也可以是绝对路径,但是不可以是通过<%=%>==表达式所代表的文件。

    实例如:

    <%@ include file="MyJsp.jsp" %>
    
  • taglib指令

taglib指令用来声明此jsp文件使用了自定义的标签,同时制定所引用的标签库并设置前缀。其包含两个属性:

  • prefix:用于指定标签的前缀。该前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw。
  • uri属性:用于指定标签库文件的存放位置。

实例如:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

2.jsp中动态include与静态include的区别?

静态include语法格式为:<%@ include file="文件路径" %>,主要是对静态页面的引入,不会检查所包含文件的变化;

而动态include语法格式为:<jsp:include page="文件路径" />,主要是对动态页面的引入,它总是会检查所引入的页面的变化,如果所包含的资源在请求间发生变化则下一次请求包含<jsp:include >动作的jsp时,将包含资源的新内容。

还有一点很重要的区别是解析编译的过程:

动态include在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示:
静态include在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管。

个人理解:
<jsp:include>是先编译一下included.jsp文件,然后再包含 先编译,后包含;
<%@ include>是先把文件包含就来,然后统一编译 先包含,后编译。

3.jsp有哪些内置对象?作用分别是什么?

JSP 共有以下 9 种基本内置对象,其作用如下:

  • request:用户端请求,此请求会包含来自 GET/POST 请求的参数;
  • response:网页传回用户端的回应;
  • pageContext:网页的属性是在这里管理;
  • session:与请求有关的会话期;
  • application:servlet 正在执行的内容;
  • out:用来传送回应的输出;
  • config:servlet 的构架部件;
  • page:JSP 网页本身;
  • exception:针对错误网页,未捕捉的例外。

4.在jsp中进行请求时中文字符在浏览中正确显示。

产生这种问题的主要原因是请求信息所使用的字符集与页面使用的字符集不同,有以下三种方法可以解决:

  • 在接受请求的页面中规定请求字符码编码的代码,添加代码段

<%request.setCharacterEncoding("UTF-8"); %>

  • 第二种方法就是在取得参数值后,通过转码的方式将参数值转化为合适的字符集。

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");

  • 第三种方法就是通过编写一个Servlet过滤器来解决。

5.jsp两种跳转方式分别是什么?有什么区别?

jsp中有两种跳转方式:

  • forward跳转:<jsp:forward page ="跳转页面地址">
  • response跳转:response.sendRedirect("跳转页面地址");

两种跳转的区别如下

对于forward跳转:

  • 服务器端跳转,地址栏不改变。
  • 执行到跳转语句后马上执行跳转,之后的代码不再执行(跳转之前一定要释放全部资源)。
  • request设置的属性在跳转后的页面仍然可以使用。

而对于response跳转:

  • 客户端跳转,地址栏改变。
  • 所有代码执行完毕后跳转。
  • 跳转后页面不能使用上一个页面的request。
  • 使用地址重写传递参数(response.sendRedirect("URL?参数名=参数值"))

6.简述JavaBean的赋值方法有哪些?

JavaBean是一种JAVA语言写成的可重用组件,我们有两种赋值方法,具体如下:

  • 在配置文件中,用属性赋值:
<bean id = "user" class = "bean.User" >
    <!-- 用property 给bean赋值 -- >
    <property name="id" value="10010"/> 
	<property name = "name" value = "zwc" / >
    <property name="sex" value="1"/>
</bean>
  • 通过<jsp:setProperty>动作标识来赋值。
<jsp:useBean id="produce" class="com.wgh.Produce"></jsp:useBean>
<jsp:setProperty property="name" name="produce" value="手机"/>
<jsp:setProperty property="price" name="produce" value="1980.88"/>
<jsp:setProperty property="count" name="produce" value="1"/>
<jsp:setProperty property="factoryAdd" name="produce" value="广东省xxx公司"/>
posted @ 2022-03-26 16:47  unique_pursuit  阅读(74)  评论(0)    收藏  举报