私の個人的なウェブサイトの嘆きへようこそ
JSP&JSTL&MVCは、イデオロギー的な強化します
JavaBeanの
JavaBeanのは、javaの再利用可能なコンポーネントです
これは、クラスの特別な(特定の仕様を満たしている)であります
仕様:
そこパッケージ化する必要があります
公共(パブリック)引数なしのコンストラクタ(コンフィギュレーションが与えられた場合、コンパイラは自動的に引数なしのコンストラクタを追加しません)がなければなりません
フィールドがある場合は、GTE(EL式)とsetメソッドを持っている必要があります
民営化の提案場
toString(テスト容易にします)
属性と属性Beanの例
属性の例 - フィールド
=ビーンJavaBeanのプロパティ属性= GETまたは上記の方法プロパティのセット方法
一般的には:Beanインスタンスの属性と属性が同じです
JavaBeanのイントロスペクションのメカニズム
クラス属性とメソッドのためにJava Beanがデフォルト処理機構
JavaBeanのイントロスペクションのメカニズムとは何ですか?
イントロスペクションは、また、イントロスペクションとして知られています。;イントロスペクション(イントロスペクタ)豆は、デフォルトのイベント(デフォルト)アプローチを(GUIは、ここで学ぶことではない)は、Java言語のクラス属性である
私たちは、JavaBeansを持って、あなたはそれがプロパティを読み取りおよび書き込みと読み書きをするために得ることができます方法は、その後、完全に読み取りおよび書き込み操作によって反射、
イントロスペクションJavaBeanの仕様がカプセル化された反射に基づいている、たjavaBeanできるプロパティ、メソッドおよびイベント容易にアクセス。
々BeanUtilsは、(主にバックアップ属性をコピー)を使用します
はじめに:誰かがソリューションの実装のセット全体を行うのJavaBean、時には財産のコピーを使用する必要があり、その多くは、プロパティの機能性コピーとインフレームです。あなたは、対応するjarファイルのパッケージをインポートする必要があります
package com.ifueen.classtest.test;
import static org.junit.Assert.*;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
import com.ifueen.classtest.domian.Person;
public class TestPerson {
/**
*获取对象属性
*/
@Test
public void test() throws Exception {
//获取Info对象
BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);
PropertyDescriptor[] prp = info.getPropertyDescriptors(); //获取属性的描述器
for (PropertyDescriptor prop : prp) {
System.out.println(prop); //遍历输出对象属性
Method get = prop.getReadMethod(); //获取get方法
System.out.println(get);
}
}
/**
*将一个对象复制到另一个对象
*/
@Test
public void test1() throws Exception {
//定义两个Person对象
Person person = new Person("小花","她十八岁的影子",21,"曾经沧海难为水");
System.out.println(person.getAge());
Person person1 = new Person();
//注意:第一个参数是需要拷贝到什么地方去的对象,第二个参数是将要进行拷贝的对象
BeanUtils.copyProperties(person1, person);
System.out.println(person1);
}
/**
*将Map中的信息传递给一个对象
*/
@Test
public void test2() throws Exception {
//定义Map
Map<String, Object> map = new Hashtable<String, Object>();
map.put("id", "她十八岁的模样");
map.put("name", "白月光");
map.put("age", 18);
map.put("address", "鹿港的小镇");
Person person = new Person();
BeanUtils.copyProperties(person, map);
System.out.println(person);
}
}
EL式
EL式は、式の言語である、あなたが共有データへの4つのスコープを得ることができます
$ {内容}
代わりに、JSP、Javaコードを組み合わせて使用するためのJSTL、
1 4つのスコープバインド値を取得することができる(小から大へのデフォルトの取得)が
ビーンプロパティ値取得2.
3.注:EL式は、アクションを取得しますgetterメソッドを持って読める必要がある、または得ることができない性質に依存するJavaBeanのプロパティフィールド
スリーノート
1
特別な言葉遣い:にsession.setAttribute(「KEY.IN.SESSION」、「あなたはセッションです」)
エラー書かれた:$ {} sessionScope.KEY.IN.SESSION
正しく書き込ま:$ {sessionScopeと[ "KEY.IN.SESSION"]}
2
$ {} PageContext.request.contextPath:ページ上で、コンテキストパスを取得するのhref、SRC属性は、絶対パスを開発するために、この方法で使用することができます。
${pageContext.request.contextPath }
3
EL式はTomcat7後のメソッドを呼び出すことができます
次xdsfsdf()メソッドを呼び出します。
JSTL
JSP標準タグライブラリ - JSP標準タグライブラリ
アクション:JSPにJavaコードを交換するためには、
3つのラベル
使用手順
1.インポートJSTL 2つのJARパッケージの
jarファイルが指定した場所に配置する必要がありますWebプロジェクトは、(WEB-INF / libフォルダ)
2.コアは、JSTLタグライブラリを導入し、
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
デモ
<C:if>
使用します。
<%@page import="com.ifueen.classtest.domian.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
Person p = new Person("今夜我在布宜诺斯艾利斯农场","一个叫木头",30,"一个叫马尾");
request.setAttribute("p", p);
%>
<hr style="border: 3px #000 solid; margin-left: 30px;margin-right: 30px;">
<c:if test="${p.age>=20 }" var="s">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;">
我站在这里
</p>
</c:if>
<c:if test="!s">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;">
我不想
</p>
</c:if>
<hr style="border: 3px #f2658d solid; margin-left: 30px;margin-right: 30px;">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
${pageContext.request.contextPath }
</p>
</body>
</html>
<c:foreach>
使用します。
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.ifueen.classtest.domian.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
td{
width: 100px;
border: 3px #f2658d solid;
text-align: center;
font-family: "华文中宋";
font-weight: bold;
}
table {
margin-top:20px;
margin: auto;
border-collapse: collapse;
}
</style>
<title>Insert title here</title>
</head>
<body>
<%
List<Person> list = new ArrayList<Person>();
list.add(new Person("会沉寂吗","一个叫木头",31,"一个叫马尾"));
list.add(new Person("会沉寂吗","一个叫木头",32,"一个叫马尾"));
list.add(new Person("会沉寂吗","一个叫木头",33,"一个叫马尾"));
list.add(new Person("会沉寂吗","一个叫木头",34,"一个叫马尾"));
list.add(new Person("会沉寂吗","一个叫木头",35,"一个叫马尾"));
request.setAttribute("list", list);
%>
<table>
<c:forEach items="${list }" var="p">
<tr>
<td>${p.id }</td>
<td>${p.name }</td>
<td>${p.address }</td>
<td>${p.age }</td>
</tr>
</c:forEach>
</table>
<hr style="border: 3px #000 solid; margin-left: 30px;margin-right: 30px;margin-top: 20px;">
<hr style="border: 3px #f2658d solid; margin-left: 30px;margin-right: 30px;margin-top: 20px;">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
${pageContext.request.contextPath }
</p>
</body>
</html>
<c:choose>
使用します。
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.ifueen.classtest.domian.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
td{
width: 100px;
border: 3px #f2658d solid;
text-align: center;
font-family: "华文中宋";
font-weight: bold;
}
table {
margin-top:20px;
margin: auto;
border-collapse: collapse;
}
</style>
<title>Insert title here</title>
</head>
<body>
<%
Person p = new Person("会沉寂吗","一个叫木头",35,"一个叫马尾");
request.setAttribute("p", p);
%>
<hr style="border: 3px #000 solid; margin-left: 30px;margin-right: 30px;margin-top: 20px;">
<c:choose>
<c:when test="${p.age<18 }">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
一只趋光的蚂蚁
</p>
</c:when>
<c:when test="${p.age>=18 && p.age<=60 }">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
查拉图斯特拉如是说
</p>
</c:when>
<c:otherwise>
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
乌斯怀亚的灯塔
</p>
</c:otherwise>
</c:choose>
<hr style="border: 3px #f2658d solid; margin-left: 30px;margin-right: 30px;margin-top: 20px;">
<p style="text-align: center; font-family: '华文中宋'; font-weight: bold; font-size: 24px;color: #f2658d;">
</p>
</body>
</html>
MVCパターン
モデルビューコントローラ
モデルビューコントローラ
ソフトウェアデザインのアイデア:
ビュー:ページ(HTML、JSP)
コントローラ:ページに接続されたコントローラ、及びバックグラウンド(サーブレット)
モデル:背景のJavaコード(すべてのバックグラウンドのJavaコード)
背景デザイン3層アーキテクチャ
プレゼンテーション層:ページコントローラ
ビジネス層:サービスコード
データ・アクセス(DAO)層:特別な相互作用(CRUD)データベース
インタビューの質問
MVCについて教えてください
これは、ソフトウェアの設計です
Mは、背景コードの全て(サービスコード+ドメイン+ DAO)、モデル - モデルであります
Vは、[表示] - ビューで、ページ(HTML、JSP)
C是Controller–控制器,连接页面和模型的桥梁