jsp指令

1,什么是jsp指令

jsp指令的格式:<%@指令名  attr1=""  attr2=""%>,一般都会把jsp指令放到jsp文件最上方,但这不是必须的

jsp三大指令:page,include,taglib,最为常用也最为复杂的就是page指令了

tomcat编译系统会根据jsp的指令信息来编译jsp,生成java文件

在生成的java文件中不存在指令信息

2page指令的pageEncoding和contextType

<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>

3,page属性中的import

<%@page import="java.util.*,com.rl.modol.*"%>

4,page指令的errorPage和isErrorPage,以及javaweb异常处理

<%@ page errorPage="/error.jsp"%>
<%!--若jsp页面出错将跳转到error.jsp,由于是服务器之间的跳转,所以是绝对路径,不需要加项目名--%>

在错误页面加

<%@page isErrorPage="true"%>
<body>
    <%=exception.getMessage()%>
</body>

web.xml中也可以进行配置

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>

5,page属性isELIgnored

<%@page isELIgnored="false"%>
<%--isELIgnored属性值默认为false--%>
<body>
    <%
        request.setAttribute("name","钟灵");
    %>
    <h1>${name}</h1>
    <%--${name}是在域中取name的值,若isELgnored="true",则${name}不能获取name的值,会显示为NULL--%>
</body>

6,include指令

1.jsp:

<%@ include file="/2.jsp"%>
<body>
    <h1><%=name %></h1>
</body>

2.jsp:

<%
    String name="钟灵";
    String mypath=request.getContextPath();
%>

可以在2.jsp中引入一些静态资源,比如<script type="text/javascript" src="XX/XX.XX"></script>,然后在1.jsp中直接include 2.jsp,就可以了

7,jsp指令taglib

引入第三方标签的语法

<%@taglib url="http://java.sun.com/jsp/jst1/core" prefix="c"%>
<body>
    <c:out value="钟灵"></c:out>
</body>

8,jsp标签include(动态包含)

1.jsp

<%
    String name=request.getParameter("name");
%>
<h1><%=name %></h1>

2.jsp

<body>
    <jsp:include page="/1.jsp?name=zhongling"></jsp:include>
<%--向1.jsp中传递参数--%>
</body>

9,forward动态标签

login.jsp

<form action="/login.jsp" method="post">
    <input type="hidden" name="isSubmit" value="1">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登陆"><br>
</form>
<%
    String isSubmit=request.getParameter("isSubmit");
    if("1".equals(isSubmit)){
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    if("zhonglong".equals(username)&&"123"equals(password)){
    request.setAttribute("userInfo",username+"你好,欢迎登陆");
%>
    <jsp:forward page="/success.jsp"></jsp:forward>
    <!--服务器之间的的跳转不需要指定项目名-->
<%

    }else{
%>
    <jsp:forward page="/fall.jsp"></jsp:forward>
<%}}%>

success.jsp

登陆成功
<%
    String userInfo=(String)request.getAttribute("userInfo");
%>
<h1><%=userInfo%></h1>

fall.jsp

登陆失败

10,jsp动态标签useBean,setProperty,getProperty

useBean

<%@page import="com.rl.model.Person"%>
<body>
<%--<jsp:useBean id="p" class="com.rl.model.Person"></jsp:useBean>--%>
<jsp:useBean id="p" class="com.rl.model.Person" scope="request"></jsp:useBean>
<jsp:setProperty property="name" name="p" value="zhongling"/>
<%
    Person person=(Person)pageContext.getAttribute("p");
    Person person1=(Person)request.getAttribute("p");
%>
<%--
<h1>pageContext域</h1>
<%=person%>
<%=person.getName()%>
<%=person.getAge()%>
--%>
<h1>request域</h1>
<%=person1%>
<%=person1.getName()%>
<%=person1.getAge()%>
</body>

Person.java

package com.rl.model;
public class Person{
    private String name;
    private Integer age;
    public void setName(String name){this.name=name;}
    public String getName(){return name;}
    ...
    ...
}

form.jsp

<form action="/bean.jsp" method="post">
    <input type="hidden" name="isSubmit" value="1">
    姓名:<input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="提交"><br>
</form>

bean.jsp

<body>
<jsp:useBean id="p" class="com.rl.model.Person"></jsp:useBean>
<jsp:setProperty property="name" name="p"/>
<jsp:setProperty property="age" name="p"/>
<%--
<jsp:setProperty property="*" name="p"/>
--%>
<%
    Person person =pageContext.getAttribute("p");
%>
<h1><%=person%></h1>
<h1>姓名:<%=person.getName()%></h1>
<h1>年龄:<%=person.getAge()%></h1>

<hr>
<%--
<h1>姓名:<jsp:getProperty property="name" name="p"></h1>
<h1>年龄:<jsp:getProperty property="age" name="p"></h1>

--%>

</body>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值