day_06

来源:互联网 发布:sql中的exists 编辑:程序博客网 时间:2024/06/08 15:23
--------------------------------JSP指令--------------------------------------
1.JSP指令:JSP指令(directive)是为了JSP引擎而设计的。
它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
2.在目前的JSP 2.0中,定义了page、include和taglib这三种指令


3.page指令:


1).page指令用于定义JSP页面的各种属性,无论page指令 出现在JSP页面中的什么地方,
它作用的的欧式整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。


2).page指令常用的属性:
import属性:指定当前JSP页面对应的Servlet需要导入的类。
<%@ import="java.util.Date"%>
session 属性:取值为true或false,指定当前页面的session隐含变量是否可用,
也可以说访问当前页面时是否一定要生成HttpSession对象。
<%@ page session="false"%>
errorPage 和 isErrorPage:
->errorPage 指定若当前页面出现错误的实际响应页面时什么,其中/表示的 时当前WEB应用的根目录。
<%@ page errorPage="/error.jsp"%>
-> isErrorPage 指定当前页面是否为错误处理页面,可以说明当前页面是否可以使用exception 隐含变量。
需要注意的是:若指定isErrorPage="true",并使用exception的方法了,一般不建议能够直接访问该页面。
-> 如何使用户不能直接访问某一个页面 : 对于Tomcat服务器而言,WEB-INF下的文件是不能通过在浏览器
中直接输入访问,但通过请求转发可以的。
->还可以在web.xml文件中配置错误页面:
<error-page>
<!-- 指定出错的代码:404没有指定的资源,500内部错误。-->
<error-code>404</error-code>
<!--指定响应页面的位置-->
<lovation>/WEB-INF/error.jsp</location>
</error-page>


<error-page>
<!--指定异常的类型-->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>
contentType:指定当前JSP页面的响应类型。实际调用的是response.serContentType("text/html;charset=UTF-8");
通常情况下,对于JSP页面而言其取值均为text/html;charset=UTF-8.  charset:指定返回的页面的字符编码是什么。通常取值 为UTF-8
pageEncoding:指定当前JSP;页面的字符编码。通常和charset相同。
isElIgnored:指定当前JSP页面是否可以使用EL表达式。通常取值为true。 
----------------------------------页面的引入------------------------------------
include指令:<%@ include file="b.jsp" %>


1.include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,
这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。


2.file属性的设置值必须使用相对路径
如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。


jsp:include标签:
1.<jsp:include page="b.jsp"></jsp:include>
2.动态引入:并不是想include指令生成一个Servlet源文件,而是生成两个Servlet源文件,
           然后通过一个方法的方式把目标页面包含进来。
include指令与jsp:include标签的区别:
<jsp:include>标签是在当前JSP页面的执行期间插入被引入资源的输出内容,当前JSP页面与被动态引入的资源是两个彼此独立的执行实体,
被动态引入的资源必须是一个能独立被WEB容器调用和执行的资源。
include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件共同合被翻译成一个Servlet的源文件。
jsp:forward:


<jsp:forward page="/include/b.jsp"></jsp:forward>
相当于:
<%
request.getRequestDispatcher("/include/b.jsp").forward(request,response);
%>
但使用jsp:forward 可以使用jsp:param子标签向b.jsp传入一些参数. 同样jsp:include也可以使用jsp:param子标签。
<jsp:forward page="/include/b.jsp">
<jsp:param value="fengge" name="user"/>
</jsp:forward>
在b.jsp页面可以通过request.getParameter("user")获取传入的请求参数


---------------------------关于中文乱码--------------------------------
1.在JSP页面输入中文,请求页面后不出现乱码:保证contentType="text/html;charset=UTF-8",
  pageEncoding="UTF-8" charset和 pageEncoding 的编码一致,且都支持中文。通常建议取值为UTF-8
  还需保证浏览器的现实的字符编码也和请求的JSP页面的编码一致。
2.获取中文参数值:默认参数 在传输过程中使用的编码为ISO-8859-1
对于POST请求:只要在获取请求信息之前,调用request.setCharacterEncoding("UTF-8")
<%
request.setCharacterEncoding("UTF-8");
%>
username:<%= request.getParameter("user") %>
对于GET请求:前面的方式对于GET无效。
<%
String val = request.getParameter("user");
String name = new String(val.getBytes("UTF-8"),"UTF-8");
out.print(name);
%>
可以通过修改Tomcat的servlet.xml文件的方式。为Connect节点添加useBodyEncodingForURI="true"属性即可
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
0 0
原创粉丝点击