zoukankan      html  css  js  c++  java
  • JSP笔记与案例一览(JSP后半部分)

    (一)JavaBean

    小注:汉字的代码范围:[u4e00-u9fa5]

    一、Javabeande 特点:

    1.这个Java类必须具有一个无参的构造函数

    2.属性必须私有化

    3.私有化的属性必须通过public类型的方法暴露给其他程序,并且方法的命名

    也必须要遵守一定的命名规范。

    作用:通常用于封装数据,对于遵循以上写法的JavaBean组建,其他程序可以通过

    反射技术实例化JavaBean对象,并通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其他属性保存数据。

    二、JavaBean的属性:

    1.JavaBean的属性可以是任意类型的,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、getter方法,setter方法成为属性修改器,getter方法成为属性访问器。

     

    2.属性修改器必须是以小写的set前缀开始的,后跟属性名,且属性名的第一个字母要改为大写,

    例如:name属性的修改器名称为getName,password属性的修改器名称为getPassword。

    3.属性访问器通常是以小写get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,

    例如:name属性的访问器名称为getName,password属性的访问器名称为getPassword。

     

    添加小知识点:修改器与访问器:

    修改器:修改器意义 能够修改某一个程序或文件的程序。 修改器的英文翻译叫做: "Trainer" 或 "Hack" 一般而言,trainer常被用于指"作弊器",比如"xx游戏xx项属性修改器",其具有针对性,只能针对某个游戏或者这个游戏的某个版本。修改器是一个工具,他的主要作用在于通过技术手段找到需要的内存地址,然后修改。

    修改器的目的就是要找到地址,然后修改。

    一般过程是:首次搜索某个数值,在游戏中修改这个数值,然后搜索这个新数值,如此反复,直到找到地址,改成你要的值。

    如果不知道具体数,需要"模糊搜索":首先搜索所要的地址,然后在游戏中修改这个数,然后搜索所要变大或变小或不变的数,然后再到游戏中改变数值,如此反复,找到地址。

    如果某个数值小,比如10以下整数,将会搜到很多,可以用组合数搜索,比如hp是100,mp是150,就搜索100,150。但是数值类型要选对,不知道就所以类型搜一次(选"??")

    找到数值后,附近往往还有相关数据,可以顺便修改。比如道具数量前面的地址往往是道具类型,可以凭空改出极品道具来,经验附近往往是hp、mp、str、agi、int、luk等等。

    判断修改器优劣的原则:1、能找到地址 2、速度快 3、功能丰富

    访问器:声明类时,通常将成员变量声明为private,以防止直接访问成员变量而引起的恶意操作。但是,这并不是不允许访问,而是可以通过公共接口间接访问。所谓的公共接口,就是程序设计人员在类中定义与各个私有成员变量相关的公共方法,以提高安全级别。习惯上,称具有private访问权限的成员变量为属性,把与之对应的公共方法称为访问器。访问器根据功能区分为读访问器(getter)和写访问器(setter)。

    4.一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称为只写、只读属性。

    三:在JSP中使用JavaBean

    三大关于JavaBean的标签即JSP标签:

    1.<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组建。

    可以很快获得一个Bean

    小补充:<%=   %>输出功能;

    2.<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。

    为创建出来的javab标签设置属性。

    3.<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

    来获取属性。代替输出函数来获取值(属性)

    JavaBean的代码如下:

    <%@page import="day09_day010.Preson"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
     
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>JSP标签setproperty</title>
     
    
    </head>
    
    <body>
    
    <jsp:useBean id="person" class="day09_day010.Preson"> </jsp:useBean>
    <jsp:setProperty property="name" name="person" value="xxxxx"/>
    <%=person.getName() %><br/>
    <!-- 用请求参数给Bean复制 -->
    <jsp:setProperty property="name" name="person" param="name"/>
    <%=person.getName() %><br/>
    <jsp:setProperty property="age" name="person" param="age" />
    <!-- 用请求参数支持八中基本数据类型的转换 (把客户机提交的数据)-->
    <%=person.getAge() %><br/>
    
     
    
    <jsp:setProperty property="date" name="person" value="<%=new Date() %>"/>
    <%=person.getDate() %>
    <br/>----------------------------------------------<br/>
    <!-- 用所有的请求参数为Bean赋值 -->
    <jsp:setProperty property="*" name="person"/>
    
     
    
    <%=person.getAge() %><br/>
    <%=person.getName() %>
    -------------------------------<br/>
    <jsp:getProperty property="name" name="person"/>
    <jsp:getProperty property="age" name="person"/>
    <jsp:getProperty property="date" name="person"/>
    
     
    
    
    </body>
    </html>
    
    

     Javaweb开发模式:

    1.JSP开发模式:

    JSP+JavaBean模式:适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于

    封装业务数据,JSP负责处理用户请求,又显示数据。

     2.MVC开发模式:

    解释:IE发送请求,请求交给servlet处理,用JavaBean进行数据封装,由于servlet不适合做输出,转交给JSP,会将JavaBean存在request域中,通过forwoed技术转交给JSP,JSP从request域中取出数据并显示。

    3.三层架构程序。:

    Servlet+JSP+JavaBean模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户的请求,JSP负责数据的显示,JavaBean负责封装数据。

    Servlet+JSP+JavaBean模式程序各个模块之间层次清晰web开发推荐使用此种模式。

    用户通过IE来请求servlet,想要获得数据,servlet并不处理而是通过service组件来处理请求产生数据,service负责处理请求产生数据,service通过调用dao来获取数据,dao专门负责与数据库进行交互,获取数据,由于面共向对象的思想,调用后要将数据进行封装,这时就将数据封装到JavaBean中,service通过调dao的方法,通过方法的返回值从JavaBean中来获取数据,并返回给service,从而service就可以对JavaBean中的数据进行处理,处理过后有可以将数据重新封装给JavaBean,servlet可以通过方法来调用service,从而拿到JavaBean中封装好的数据,这样就获得了用户想要得到的数据,这时将数据存在域中,但是servlet不适合做输出,因此可以通过转发给JSP来显示数据,这样用户就可以从JSP中获得想要的数据。

    EL表达式与JSTL

    EL表达式用于获取数据,符号${标识符}从四个域中获取对象。

    代码如下:

    <%@page import="day09_day010.Preson"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        <title>EL表达式</title>
    
      </head>
      
      <body>
      <%
      String data="abcd";
      request.setAttribute("data", data);
       %>
       
       ${data}
        <br/>---------------------------------------<br/>
       <%
       Preson p=new Preson();
       p.setName("aaa");
       request.setAttribute("preson", p);
           %>
           
           ${preson.name}<!-- 从四个域中找寻preson.name -->
            <br/>---------------------------------------<br/>
           
           <%
           Preson p1=new Preson();
    p1.setAge(10);
    request.setAttribute("preson", p1);
            %>
            ${preson.age}
     <br/>---------------------------------------<br/>
            <%
            List list =new ArrayList();
            list.add(new Preson("AAAAA"));
            list.add(new Preson("BBAAA"));
            list.add(new Preson("CCAAA"));
            request.setAttribute("list", list);
            
             %>
            ${list[1].name}<!-- 要与jstl一起用 -->
             <br/>---------------------------------------<br/>
            <%
            Map map=new HashMap();
            map.put("aa", new Preson("aaaa"));
            map.put("bb", new Preson("bbaa"));
            map.put("cc", new Preson("ccaa"));
            map.put("dd", new Preson("ddaa"));
            request.setAttribute("map", map);
             %>
            ${map.aa.name}
      </body>
    </html>

    ${关键字(对象的名称).要取的名称(对象的属性) }关键字最好不要用数字开头。

    用EL取数据时,通常用.号,.号搞不出来时,用[]

    ${pageContext.request.contextPath}得到当前web应用的名称。

    JSTL标签库:

  • 相关阅读:
    反正我是猜错,关于javascript包装对象的一个坑
    《编写可维护的javascript》推荐的编码规范之——编程实践
    《编写可维护的javascript》推荐的编码规范之——编程风格
    35行的山寨版jQuery
    Css进度条
    nginx的location和proxy_pass是否带斜杠的区别
    mongodb笔记
    在安装完 docker for windows 之后,hype-v打开,之后再关闭,vmware无法使用,虚拟机报错:传输(vmdb)错误-32:pipe:read failed
    awk笔记备忘
    sed命令笔记备忘
  • 原文地址:https://www.cnblogs.com/shuai9999/p/8954589.html
Copyright © 2011-2022 走看看