欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSP标签

程序员文章站 2022-06-02 11:49:29
...

JSP标签

html是静态页面,满足不了日益增长的需求。jsp技术的出现就是因为满足动态页面的需要,当jsp运行时会变成servlet类时它的最大特点。jsp不单止可以写html代码,还可以书写脚本<% %> <%= %> <%! %>

其实现在jsp技术在互联网的实际工作中是不会去用了

  1. MVC模式, V代表jsp
  2. 因为jsp的编译原因,服务器中一个jsp页面执行的时候需要先变成类在编译成字节码文件,这样的过程很慢,会增加服务器的负担
  3. jsp中可以书写脚本(java代码),容易造成代码混乱,阅读性差。

jsp标签

<jsp:forword>

<jsp:forword>相当于请求转发,要配合<jsp:param>使用

<jsp:forword page='转发页面'>
    <jsp:param name='变量名' value='字符串'></jsp:param>
</jsp:forword>

在同一个项目中创建两个jsp页面:demo1.jsp demo2.jsp

<!--demo1-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>demo1</title>

</head>
<body>
hi!
<jsp:forward page="demo2.jsp">
    <jsp:param name="password" value="123456"/>
    <jsp:param name="userName" value="user1"/>
</jsp:forward>
</body>
</html>
<!--demo2-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo2</title>
</head>
<body>
<%= request.getParameter("userName")%>
<%=request.getParameter("password")%>
</body>
</html>

效果图

JSP标签

注意:<jsp:forword>中间一定要括<jsp:param> ,要不然会报错,中间也不能放注释<!--注释--> 要不然也会保持

<jsp:useBean>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo3</title>
</head>
<body>
    <%
        User user=new User();
        user.setUserName("吴彦祖");
        user.setPassword("123456");
    %>
    <p><%=user.getUserName()%></p>
    <p><%=user.getPassword()%></p>
    <%----%>
    <jsp:useBean id="user2" class="cm.beans.User" scope="request"></jsp:useBean>
    <jsp:setProperty name="user2" property="userName" value="刘亦菲"></jsp:setProperty>
    <jsp:setProperty name="user2" property="password" value="777777"></jsp:setProperty>
    <jsp:getProperty name="user2" property="userName"></jsp:getProperty>
    <jsp:getProperty name="user2" property="password"></jsp:getProperty>
</body>
</html>

<jsp:useBean>可以用来定义实体类:
<jsp:useBean id='类名' class='实体类路径' scope='作用域'>

<jsp:setproperty>用来设置<jsp:useBean>定义的类的属性的值:
<jsp:setproperty name='已经创建出来的类的名字' value='属性值'>

<jsp:getproperty>用来获取<jsp:useBean>定义的类的属性的值:
<jsp:getproperty name='已经创建出来的类的名字' value='属性值'>

scope可以指明放入哪个作用域

<jsp:include>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo4</title>
</head>
<body>
    <jsp:include page="demo3.jsp"></jsp:include>
    <p>这里是demo4.jsp</p>
</body>
</html>

效果图

JSP标签

把另外一个资源输出的内容插入到当前的jsp页面中,称之为动态引入

<jsp:include page="另一个资源地址" flush='ture/false'></jsp:include>

默认是false,代表服务器会等待改文件完全加载之后,输入到客户端,简单页面不用考虑,如果给true,代表缓存累积到一定数据,在输出给客户端,目的是为了缩短客户端的延迟

动态引入的特点:文件先编译,执行,当执行到include语句的时候才会触发被包含文件的编译,执行

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo4</title>
</head>
<body>
    <jsp:include page="demo3.jsp"></jsp:include>
    <p>demo4.jsp</p>
    <%=user.getUsername()%>
</body>
</html>

代码编译报错
JSP标签

原因是因为include是动态引入,demo3编译后才会拼接,整个过程会生成两份代码,所以demo4中的user才会找不到。

然而静态引入的话是两份代码是先拼凑到一起才会再编译,编译过程中碰到重复的变量会报错,删除其中一份才可以正确编译

跳转的方式总结

  1. 使用form表单跳转 <form action="url></form>"
  2. 使用a标签跳转 <a href-"url"></a>
  3. 使用respose.sendRedirect(url)
  4. meta http-equiv="refresh" content='3;URL=www.baidu.com'
  5. request.getRequestDispathcher(url).forward(request,response)
  6. pageContext.forward("url");
  7. <jsp:forward page="url"><jsp:param name="" value=""></jsp:forward>

跳转方式的特点

客户端跳转(重定向)

  1. 浏览器的地址栏会发生改变

  2. 是浏览器的行为

  3. 跳转后request对象已经改变了

  4. 可以在不同项目中跳转

    <!-- 项目1 -->
    <a href="www.baidu.com">跳转到百度</a>
    <!-- 百度网页(另外服务器的项目) -->
    www.baidu.com
    

以上的1、2、3、4是重定向

服务端跳转(请求的转发)

  1. 浏览器的地址栏不会发生改变
  2. 是服务器行为
  3. 只要请求不断,前后是一个request对象
  4. 只能在本项目内部进行跳转,不能跨项目

以上的5、6、7、8是转发
百度网页(另外服务器的项目) -->
www.baidu.com
```

以上的1、2、3、4是重定向

服务端跳转(请求的转发)

  1. 浏览器的地址栏不会发生改变
  2. 是服务器行为
  3. 只要请求不断,前后是一个request对象
  4. 只能在本项目内部进行跳转,不能跨项目

以上的5、6、7、8是转发