当前位置:编程学习 > JS >>

JSP基本知识

JSP脚本元素
Jsp声明语法:<%! %>
 jsp声明只在当前页面有效,并且jsp声明中不能使用jsp内置对象。在其内声明的变量或方法为实例方法或实例变量

Jsp中Java代码块语法:<% %>
 jsp中嵌入的java代码块称Scriptlet,默认为与jsp对应的Servlet类的service()方法中的代码块。Scriptlet位置由page指令中的method确定method值可以为service(),doGet(),doPost()等。在其内声明的变量为局部变量

Jsp中的表达式语法:<%= %>用于在页面上输出表达式或变量的值


JSP内置对象
 对象          类型
 request      javax.servlet.HttpServletRequest
 response     javax.servlet.HttpServletResponse
 pageContext    javax.servlet.jsp.PageContext
 application     javax.servlet.ServletContext
 out          javax.servlet.jsp.JspWriter
 config          javax.servlet.ServletConfig
 page          java.lang.Object(类似于java中的this关键字)
 session      javax.servlet.HttpSession
 exception     java.lang.Exception
   

JSP的异常处理:
 Jsp和Java一样在运行时也有可能抛出异常,在发生异常的页面中可以添加如下代码
 <%@ page errorPage="errorpage.jsp" %>
 当前页面发生异常跳转至errorpage.jsp进行异常处理

 在errorpage.jsp页面中添加如下语句声明此页面是处理异常的页面
 <%@ page isErrorPage="true" %>

 在处理异常的页面可以直接访问exception内置对象,获取异常信息
 <% exception.printStackTrace(new PrintWriter(out)); %>


JSP请求转发:
 request.getRequestDispatcher("success.jsp").forward(request,response);
 特点:地址栏不改变,我们称为请求转发,发起的是同一次请求,数据未丢失

 response.sendRedirect("success.jsp");
 特点:地址栏改变,我们称为重定向,发起的是两次请求,数据丢失


 
中文乱码解决方式:
post提交方式:通过request.setCharacterEncoding("utf-8");
get提交(url传参)方式:String str= new String(request.getParameter("uName").getBytes("iso-8859-1"),"utf-8");


关于JSP预编译:通过特殊的请求参数jsp_precomplie,它的值可以true或false;请求为ture那么Servlet容器仅仅对客户端请求的JSP文件进行预编译,即将JSP文件转化为Servlet类,但不运行Servlet;

1.http://localhost:8080/helloapp/hello.jsp?jsp_precomplie=true
2.找到Tomcat目录下work目录对应项目helloapp下的hello_jsp.class文件
将其复制到WEB-INF/classes对应的子目录中
3.在web.xml文件中配制hello_jsp类
 <servlet>
  <servlet-name>hi</servlet-name>
  <servlet-class>org.apache.jsp.hello_jsp</servlet-name>
 </servlet>

 <servlet-mapping>
  <servlet-name>hi</servlet-name>
  <url-pattern>/hello</url-pattern>
 </servlet-mapping> 


摘自 gdn_wolf的专栏 
补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,