`
jinvasshole
  • 浏览: 772926 次
文章分类
社区版块
存档分类
最新评论

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>



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics