javaWeb_JSP 系统管理员 2022-05-25 03:44 213阅读 0赞 JSP本质是一个servlet。编译时会为jsp动态生成相应的.class文件,里面就是此jsp对应的类,且派生自servlet。 JSP定义:Java Server Page:Java服务器端网页。即:在HTML页面中编写Java代码的页面。 1. 隐含对象 Jsp共有9个隐含对象: ![20180507174430191][]![20180507174436243][]![20180507174442463][] 2. 注释: <%-- JSP注释 --%> <!-- HTML注释\--> 区别:JSP注释可以阻止Java代码的执行 如,在jsp中有如下代码: <% System.out.println(“…”);%> 如果使用<%-- --%>包起来,则后台不会输出 如果使用<!-- -->包起来,后台还会输出。 1. 请求转发与重定向 请求的重定向: Response.sendRedirect(“servlet\_or\_url”); 请求的转发: RequestDispatcher requestDispatcher = request.getRequestDispatcher(“/”+ “servlet\_or\_url”); requestDispatcher.forward(request, response); 2. JSP 指令 一共有三种指令:page include taglib Page: <%@ page language=*"java"* contentType=*"text/html; charset=UTF-8"* pageEncoding=*"UTF-8"* import=*"java.util.Date"* session=*"true"* isElIgnored=*"true"* errorPage=*"error.jsp"* isErrorPage=*"false"* %> language:只能是”java” contentType:指定当前JSP的响应类型和页面的编码 pageEncoding:指定编码 **pageEncoding是jsp文件本身的编码** **contentType的charset是指服务器发送给客户端时的内容编码** import:在页面中使用某些java类时需要引入声明,如: <% Date date = **new** Date();%> 注:如果没有引入则类名会报红,将光标放到类最后,按alt+/,会弹出框,选择相应的类即可引入声明。 session:false表示页面中不能使用隐含的session对象,如: <%= session.getId() %> isElIgnored:指定当前JSP页面是否可以使用EL表达式,通常为true errorPage:当页面出错时自动跳转到指定页面,而不是在当前页面报错(给用户不好的体验)如:在页面中添加错误代码: <% **int** i = 10/0;%> isErrorPage:为true表示当前页面为错误页面,就可以直接使用exception对象了: <h3> 错误页面</h3> errorMsg : <%= exception.getMessage() %> ![20180507174709553][] include: 如:在一个页面的body里添加如下代码: <%@ include file=*"homePage.jsp"* %> 最终的结果是,homePage.jsp在工程编译的时候就被翻译到了当前页面的相应位置,这种引入称为**静态引入**。 最好的例证就是,在当前页面定义一个java对象,在homePage.jsp中直接使用此对象,结果访问当前页面可以正常使用此对象,访问homePage.jsp则直接报错,因为此对象在它自己的页面中没有定义。 1. JSP标签: Jsp标签都以小写的jsp作为前缀,如: <jsp:include> <jsp:forword>等 <jsp:include>: <jsp:include page=*"homePage.jsp"*></jsp:include> 把另外一个资源的输出内容插入到当前jsp页面的输出内容中。两个页面在翻译时会生成两个相应的类文件,然后通过一个方法的方式把目标页面包含进来,称为:**动态引入** **注**:静态引入和动态引入的本质区别在于jsp生成的源文件个数,开发过程中并不需要格外注意,两者都可以。 <jsp:forword>: <jsp:forward page=*"homePage.jsp"*></jsp:forward> 在页面中直接进行转发。即页面地址不变,但内容跳转到了homePage.jsp 相当于: <% RequestDispatcher requestDispatcher = request.getRequestDispatcher("/homePage.jsp"); requestDispatcher.forward(request, response); %> 两者的区别在于<jsp:forward>可以使用<jsp:param>子标签给目标页面传参。如: <jsp:forward page=*"homePage.jsp"*> <jsp:param value=*"gary"* name=*"username"*/> </jsp:forward> 在homePage.jsp中输出参数: <h2> 首页</h2> <%= request.getParameter("username") %> ![20180507174905734][] [20180507174430191]: https://img-blog.csdn.net/20180507174430191 [20180507174436243]: https://img-blog.csdn.net/20180507174436243 [20180507174442463]: /images/20220525/caf16e8857df4248bf760a1814295eac.png [20180507174709553]: /images/20220525/14cf568439a647c88f3ce54d121fcdd6.png [20180507174905734]: /images/20220525/391f8c3aa66c49cc8d53d6d303516920.png
还没有评论,来说两句吧...