zoukankan      html  css  js  c++  java
  • jsp动作元素

     

    复习:

    1、jsp的指令

    1)page 指定当前页面能做什么,必须出现在页面的第一行

    2)Include 包含,这主要指的是静态包含,为了实现页面重用(或者代码重用):针对页面:让一个页面成为很多页面公用的一个banner。针对代码部分 jsp使用的javabean导入包 的类。

    3)taglib 回头再说吧,现在一时半会儿找不到

    2、jsp内置对象

    1)什么是内置对象?

    服务器加载的一堆类的对象,是service方法中得参数或者变量

    2)内置对象:输入输出,作用域对象 servlet对象 异常

    3)四个作用域:page request session application

    3model two mvc

    Jsp+servlet +model

     

     

    今天主要讲的是jsp的动作元素(jsp的标签儿)

    jsp:useBean

    Jsp:forward

    jsp:param

    jsp:include

     

    忽然想到安全退出 还没有做。

    昨天重做了一下用户信息的东西,利用mvc框架,然后做了一下关于分页,然后连select和 option也没有做。

    昨天嗑代码过程了,还有做了一下在线用户和分页展示。

     

    昨天主要讲了,jsp动作元素。昨天老师光展示了例子,我也没有使用。。。

     

    先把昨天的动作元素现弄进来吧:

     

    Jsp动作元素:

    useBean setProperty getProperty param forward include

    useBean 是用来创建类的对象的。或者换句话说:是:现在默认的当前pageContext中寻找名称为id对象的类的对象,如果有,就得到该对象,如果没有就创建新的对象。这些语句得复制进来,要不很坑!

     

    <jsp:useBean id="ub" class="com.salmon.bean.UserBean"></jsp:useBean>

    或者 <jsp:useBean id="ub" class="com.salmon.bean.UserBean"/>

    加上作用域范围:

    <jsp:useBean id="user" class="com.letben.bean.User" scope="session"/>

    作用域默认空间是:page,可选项有:requestsessionapplication

     

    并且要求javabean必须有一个无参的构造函数。

    setProperty property(对象属性名) name(id 对象名) value

    例子:

    <jsp:setProperty property="userName" 

     

    com.salmon.bean.UserBean 中的属性们:

     

    package com.salmon.bean;
    public class UserBean {
    
        private  int  userId;
        private  String userName;
        private  String userPs;
        /*getters 
        and 
        Setters*/
        public UserBean() {
            super();
            // TODO Auto-generated constructor stub
        }
    }

     

    getProperty 输出单个属性,举例:

    <jsp:getProperty property="userName" name="ub2"/>
    
            <jsp:getProperty property="userId" name="ub2"/>
    
            <jsp:getProperty property="userPs" name="ub2"/>

     

    Set一个一个 设置属性,或者aoe方式设置属性,

    在登录里面有一个成熟的方式:

    两个页面缺一不可显示。

     

    界面一:

    <form action="home.jsp">
    
    <input type="hidden" name="id" value="5" />
    
     用户名:<input type="text" name="name" /> <br/>
    
     地址:<input type="text" name="address" /> <br/>
    
     <input type="submit" value="用jsp * 接收" />
    
    </form>

     

    界面二:

    <jsp:useBean id="u" class="com.letben.bean.User"/>
    
        <jsp:setProperty property="*" name="u"/>
    
        <jsp:getProperty property="id" name="u"/> 
    
        <jsp:getProperty property="name" name="u"/> 
    
    <jsp:getProperty property="address" name="u"/> 

    这两组就可以完成数据的接收和展示,所以说,这个<jsp:setProperty 可以得到单个属性。

    接收可以aoe接收,但是显示的时候需要一个一个来。

    Aoe接收需要满足表单中的值和javabean对象的属性值的名称一致。

     

    Param用来得到一个参数。

     

    forward 请求转发,一旦转发,不再回来,转发时,可以用jsp:param带参数。

    Include 请求转发(动态包含),把另外一个页面的执行结果包含进来,同样可以携带参数。

     

    2、新增:第一种情况 在数据库中,主键自动增长

    第二种情况, 查询表中逐渐的最大值,+1(调用主键获取方法,在业务层调用,设置到对应对象上。)

    3、分页查询:

      

         1) 页面上超链接   

              // 判断    如果你是第一页 ,那么首页  上一页  就不能点击

              //  如果你是最后一页,尾页  下一页  就不能点击

             <a href="UserServlet.do?page=1">

             <a href="UserServlet.do?page=<%=nowPage-1%>">

         

         2)  servlet 中分页参数的设置

             nowPage  pageSize  count  totalPage

             // 接收传递你要显示的页数

             

             // 查询一个总记录数

             

             // 计算总页数

             

             //  保存reques中

             

             //  数据dao         imit (nowPage-1)*pageSize,pageSize

             

         3)  分页查询sql 语句 ,一个公式:limit (nowPage-1)*pageSize,pageSize  

     

     

    Jsp动作元素:

    ppt里面之所以把jspjavabean放在一起,是因为,jsp动作元素中的<jsp:useBean id="id名称" class="com.letben.bean.User"/>这个标签要调用javabean中的方法,并且getset也要一致,并且通过反射访问对应元素。所以在ppt里面这样安排也是合理的,当然我更喜欢老师组合讲例子的方式。

    1、具体要求:jsp中可以使用jsp标准动作调用javabean组件并访问属性

    2、在jsp中调用的javabean必须是公共类(public)

    3javaBean中必须提供一个无参构造方法

    4、提供getter/setter方法访问javabean属性。

    举例:

    import java.io.*;
    public class MyBean{
        private String name;
        public MyBean(){}
        public String getName(){return name;}
        public void setName(String name){
        this.name=name;
        }
    }

    Jsp动作:

    标准动作用于:

    javaBean嵌入jsp页面

    设置和获取javaBean的属性

    将用户请求转发给其他页面

    将其他页面的内容嵌入当前页面

    标准动作可以为空标签及容器标签

    标准动作中的属性区分大小写

    Jsp中的标准动作使用<jsp>作为前缀

     

     

    Jsp标准动作

    Jsp标准动作

    1、调用javabean相关

    a) <jsp:useBean>

    b) <jsp:getProperty>

    c) <jsp:setProperty>

    2、jsp页面通信

    a) <jsp:include>

    b) <jsp:forward>

    c) 等等

    第一个属性:useBean

    <jsp:useBean>动作用于实例化javabean,或者定位一个已经存在的javabean实例,并把实例的引用赋值给一个变量。

    <jsp:useBean id="beanId" class="com.letben.bean.MyBean" scope="page"/>

     

    Javabean的作用范围:

    范围指定:javaBean在及商品页面中的可用性。各种范围选项如下:

    范围

    pagebean只能在使用页面时使用,当家在新页面是,就会将其销毁

    requestbean在用户对服务器发出请求时 存在

    sessionbean一直存在于绘画中,直至其终止或者被删除为止。

    application: bean在整个应用程序中均可使用

     

    setProperty

    <jsp:setProperty><jsp:useBean>一起使用,用来设置javabean的简单属性和索引属性,该动作使用bean中的setXxx()方法,在bean中设置一个或者多个属性

    <jsp:useBean id="BeanId" class="MyBean" scope="session"/>

    <jsp:setProperty name="BeanId" property="name" value="示例"/>

     

    <jsp:setProperty>可以通过value属性为javabean的属性提供一个常量,也可以使用param属性接受一个请求参数的值设置为javaBean的属性值

    <jsp:setProperty name="BeanId" property="name" param="paramName"/>

    或者:当javaBean的属性名与请求参数名相同的情况下,可以使用property="*" 的方式为多个javaBean的属性同时赋值。

     

    <jsp:setProperty name="BeanId" property="*"/>

    getProperty动作

    <jsp:getProperty>用来访问bean的属性,并且把获取到的属性作为out.println()语句的参数进行输出,如果访问到的是一个对象,那么就调用这个对象的toString()方法

    举例:<jsp:useBean id="BeanId" class="com.letben.bean.MyBean" scope="page"/>

    <jsp:setProperty name="BeanId" property="name" value="示例"/>

     

    <jsp:getProperty name="BeanId" property="name"/>

     

    组合案例:

    package com.letben.bean;
    public class User{
        private String name;
        Private int age;
        public User(){}
        public void setName(String name){this.name=name;}
        public void setAge(int age){this.age=age;}
        public String getName(){return name;}
        public int getAge(){return age;}
    }
    <html>
        <head>
        <jsp:useBean id="user" class="com.letben.bean.User" scope="page"/>
        <jsp:setProperty name="user" property="name" value="lifei"/>
        <jsp:setProperty name="user" property="age" value="34"/>
        </head>
        <body>
        <jsp:getProperty name="user" property="name"/>
        <jsp:getProperty name="user" property="age"/>
        </body>
    </html>

     

    Forward动作

    <jsp:forward>用来从jsp页面转向其他页面,并且向其他页面传递request对象和response对象。并且该标签后面的其他代码将不会在被执行

    示例:<jsp:forward page="requestedPage.jsp"/>

    注意的是:虽然是请求转发但是地址栏没有发生变化。

     

    Include动作

    <jsp:include>动作用来在当前jsp包含动态和静态的输出结果。

    如果被包含的文件是静态的html文件,那么这种包含是把html中文件的内容添加到jsp文件中去。

    如果这个文件是jsp文件,那么服务器也会将这个jsp文件进行解析,并且将结果输出到当前页面。

     

    这里有一个需要记住的点:

    <jsp:include page="included2.jsp">的这种包含从上面的文字很明显能看出来,他是一种动态包含过程。

    <%@ include file="included1.jsp" %>这是一种静态包含。

    动态包含会产生两个jsp文件,而静态包含只产生一个jsp文件。

     

    Include动作举例:

    <jsp:include page="includedPage.jsp/>

     

    从上面可以看出来,如果是动态包含的话,就只是带个结果所以他的东西一定要全,所以他自己要生成一个jsp。如果是静态包含的话,被包含文件和起始文件都以起始文件作为命名,合并生成一个jsp。或者换一个方法记忆:写在上面的就是静态包含,就只生成一个,写在下面就是动态包含执行到这里,它只要结果,所以他需要一个完整的jsp编译。而写在上面的话,只能是:<%@ include file="included1.jsp"%>

    写在下面的话就是:<jsp:include page="included2.jsp">

     

    param动作

    可以在include动作和include动作中添加param动作,为转向或嵌入的jsp页面中添加参数

    举例:

    <jsp:param name="age" value="23"/>//放在include forward或者 参数里面

    <jsp:param name="name" value="lifei"/>//放在include forward 或者 参数里面。

    然后利用<jsp:useBean id="user" class="com.letben.bean.User"/>

    <jsp:setProperty property="name" name="name"/>//这里name的值应该是user

    <jsp:setProperty property="age" name="age"/>//这里的值应该是user

     

    The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements] with root cause

    org.apache.jasper.JasperException: /sendParam.jsp (line: 27, column: 9) The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements

     

    参数不能写在传输的外面。

     

    成功范例:

    发送 

     <jsp:forward page="getParam.jsp">

        <jsp:param name="name" value="lifei"/>

        <jsp:param name="age" value="23"/>

        </jsp:forward>

    接收

    <jsp:useBean id="user" class="com.letben.bean.User"/>

        <jsp:setProperty property="*" name="user"/>

        <jsp:getProperty property="name" name="user"/>

        <jsp:getProperty property="age" name="user"/>

     

  • 相关阅读:
    【每日一题】41. 德玛西亚万岁 (状态压缩DP)
    The 18th Zhejiang Provincial Collegiate Programming Contest 补题记录(ACFGJLM)
    【每日一题】40. 旅游 (树形DP解决树的最大独立集)
    【每日一题】39. Contest(树状数组 / 容斥分治)
    AtCoder Regular Contest 121 (AB题解)
    Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录)
    2019年第十届蓝桥杯国赛C++C组
    AtCoder Beginner Contest 203 (A~D,玄学二分场)
    Codeforces Round #723 (Div. 2) (A~C题题解)
    Latex公式排版问题总结
  • 原文地址:https://www.cnblogs.com/letben/p/5185245.html
Copyright © 2011-2022 走看看