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>

 

 


 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值