JSP——1

1.JSP:java servlet page


(1)简化servlet。网页中的动态部分用java编写

(2)在<% %>中编写Java代码

(3)存放在web应用程序中除了WEB-INF的任何文件中,WEB-INF里面存放的是隐私文件

(4)运行原理,本质上是一个servlet。会被web程序翻译成servlet才能继续执行。说明servlet里面的方法都可以被应用与

(5)html里面写java代码


2.JSP里面的9个隐含对象,在<%  %>中可以使用


隐含对象是没有声明就可以使用的对象

—> out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上

—> request:实际上是HttpServletRequest对象

—> (不常用)response:实际上是HttpServletResponse对象,JSP页面中几乎不会调用的

—> session:是HttpSession的一个对象,在浏览器和服务器的一次会话时候产生

—> application:代表当前web应用,是ServletContext对象

—>(不常用) page:指向当前JSP对应的Servlet对象的引用,是Object类型,只能调用Object类的方法

—> pagContext:页面的上下文,是PagContext的一个对象,可以从该对象中获取其他8个隐含对象,也可以从中获取到当前页面的其他信息。学习自定义标签的时候使用

 

—>(不常用) exception:在声明了page指令的idErrorPage="true"的时候使用


—> (不常用)config:ServletConfig对象,开发的时候几乎不使用,如果需要访问当前的JSP的初始化参数,需要通过映射的地址才可以。映射方式如下:

  <!-- 访问JSP的初始化参数 -->
  <servlet>
  	<servlet-name>indexjsp</servlet-name>
  	<jsp-file>/index.jsp</jsp-file>
  	<init-param>
  		<param-name>test</param-name>
  		<param-value>testValue</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>indexjsp</servlet-name>
  	<url-pattern>/indexjsp</url-pattern>
  </servlet-mapping>


3.JSP的基本语法


(1)jsp模板元素

(2)jsp表达式


<% %>

<%= %>提供把java变量或者表达式的计算结果直接输出到客户端的简洁方式,前提是需啊哟声明

    <%
    	Date date=new Date();
    	out.println(date);//Tue Nov 15 14:41:23 CST 2016
    	out.println("<br><br>");
     %>
     <%=date //Tue Nov 15 14:41:23 CST 2016
     %>

(3) 脚本片段多个脚本片段可以相互进行访问

(4)声明<%!  %>几乎不使用

(5)注释:

<%--JSP注释 --%>

        <!-- -->


4.和属性相关的重要方法


(1)方法

void setAttribute(String name,Object o) 设置属性

Object getAttribute(String name) 获取指定的属性

removeAttribute(String name) 移除指定的属性

Enumeration getAttributeNames() 获取所有属性名字组成的Enumeration 对象


(2)哪些对象有这些方法


要注意下面的作用范围,以下范围从大到小

application,属性的作用范围最大,限于当前的web应用,只要在一次设置属性,在其他都能获取到

session,属性的作业范围限于一次会话。浏览器打开直到关闭称为一次会话(前提是在此期间会话不会失效)

request属性的作用范围仅限于同一个请求。按键一次算是一个请求,超链接到其他页面是一个新的的请求。(在有转发的情况下可以跨页面获取属性值

pageContext,  属性的作用范围仅限于当前的jsp页面


5.请求的重定向和转发


(1)本质区别:请求的转发只发出一个请求,重定向发出了两次请求


具体:


-> 请求的转发:地址栏是初次发出请求的地址

   重定向:地址栏不再是初次发出的请求地址,是最后响应的那个地址

-> 请求转发:在最终的servlet中,request对象和中转的那个request是同一个对象

   重定向:在最终的servlet中,request对象和中转的那个request不是同一个对象

-> 请求转发:只能转发给当前web应用的资源

   重定向:可以重定向到任何资源

-> 请求转发:“/”代表当前web应用的根目录

   重定向:“/”代表当前web站点的根目录,可以不用


<html>
  <head>
    <title>My JSP 'b.jsp' starting page</title>

  </head>
  
  <body>
  <h2>BBB</h2>
    <%
    //请求的转发.最后跳转到b页面
    	//request.getRequestDispatcher("/c.jsp").forward(request, response);
    //请求的重定向。最后跳转到c页面
        response.sendRedirect("c.jsp");
     %>
  </body>
</html>

6.JSP指令

告诉引擎如何处理jsp页面的其余部分


(1)page:作用于当前整个jsp页面,放在页面的起始位置即可


常用属性:


import:指定当前需要导入的类,会自动导入,偶尔才需要导入

session:指定当前页面的session隐藏变量是否可用,即,是否生成HttpSession对象,取值为true或false

errorPage和isErrorPage

     -> <%@ page errorPage="/errorPage"%>

     -> 一般不直接访问这个页面<%@ isErrorPage="true" %>       Error Message:<%= exception.getMessage() %>,怎样使客         户不直接访问这个页面呢,存放到WEB-INF里面,用请求转发的方式来访问


contentType:指定响应类型。通常情况下,取值为“text/html:charset=UTF-8”,指定返回页面是一个html文档,并且标记了返回页面的编码方式

pageEncoding:指定当前页面的字节编码方式,和contentType里面的编码一致


isELIgnored:能否使用EL表达式


web.xml中配置错误页面

<error-page>
  <!-- 指定错误代码:404没有指定资源,500内部错误 -->
  	<error-code>404</error-code>
  	<!-- 指定响应页面的位置 -->
  	<location>/WEB-INF/error.jsp</location>
  </error-page>
  <error-page>
  <!-- 指定异常类型 -->
  	<exception-type>java.lang.ArithmeticException</exception-type>
  	<location>/WEB-INF/error.jsp</location>
  </error-page>


(2)include指令:<%include file="b.jsp"%>

属于静态引入

这里file里面写入相对路径

本质:生成1个servlet源文件


(3)jsp:include :<jsp:include file="b.jsp" ></jsp:include>

动态引入

这里file里面写入绝对路径

通过一个方法的方式把目标页面包含进来

本质:生成2个servlet源文件.


(4)jsp:forward  以下两种效果等同:

使用jsp:forward 或者jsp:include的param来设置元素,在另一个页面中通过request.getParameter("")调用:

 <%--
    <jsp:forward page="/b.jsp">
    	<jsp:param value="abc" name="username"/>
    </jsp:forward>
    
  --%>
  <jsp:include page="/b.jsp">
    	<jsp:param value="abc" name="username"/>
    </jsp:include>

<%=request.getParameter("username")  %>

(3)tablig



7.中文乱码问题


(1)在JSP输入中文,请求页面后没有乱码问题。要求以下三点:

pageEncoding="UTF-8

contentType="text/html:charset=UTF-8"

还要保证浏览器显示字符的编码是"UTF-8"


(2)获取中文参数,默认传输过程中使用的是ISO-8859-1


对于post请求:被调用的页面读取请求参数之前,添加以下,

 <form action="b.jsp" method="post">
 	<input type="text" name="username"/>
 	<input type="submit"/>
 </form>


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

对于get请求,先解码再编码

    <%
    	String value=request.getParameter("username");
    	String username=new String(value.getBytes("iso-8859-1"),"UTF-8");
    	out.println(username);
     %>
对于post请求和get请求要同时适用的话,修改servlet.xml文档

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   
			   useBodyEncodingForURL="true"/>












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值