锘??xml version="1.0" encoding="utf-8" standalone="yes"?>jizzjizz亚洲日本少妇,亚洲情a成黄在线观看动漫尤物,亚洲日本va在线视频观看http://m.tkk7.com/baputista/Baputistazh-cnSun, 11 May 2025 15:56:15 GMTSun, 11 May 2025 15:56:15 GMT60閫氳繃璇誨彇xml鏂囦歡鍔ㄦ佸緩琛?http://m.tkk7.com/baputista/archive/2006/09/16/70083.html瑾頒即鎴戦棖钑?/dc:creator>瑾頒即鎴戦棖钑?/author>Sat, 16 Sep 2006 13:23:00 GMThttp://m.tkk7.com/baputista/archive/2006/09/16/70083.htmlhttp://m.tkk7.com/baputista/comments/70083.htmlhttp://m.tkk7.com/baputista/archive/2006/09/16/70083.html#Feedback1http://m.tkk7.com/baputista/comments/commentRss/70083.htmlhttp://m.tkk7.com/baputista/services/trackbacks/70083.html<?xml version="1.0" encoding="utf-8"?>
<Stoke>
聽<Name ID="1" Type="VarChar" Length="10" Index="True">Ada</Name>
聽<Sex ID="2" Type="VarChar" Length="2">female</Sex>
聽<Age ID="3" Type="Integer">21</Age>
聽<Comm>
聽聽<Mobile ID="4" Type="VarChar" Length="15">13300008888</Mobile>
聽聽<Email ID="5" Type="VarChar" Length="30">Ada@gmail.com</Email>
聽</Comm>
</Stoke>

灝嗕笂闈㈢殑xml鎻忚堪鍦ㄦ暟鎹簱涓垱寤轟竴寮犺〃

import java.io.*;
import java.sql.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class XmlToSql
{
聽public static void getNode(NodeList nl,StringBuffer sql)
聽{
聽聽for(int i=0;i<nl.getLength();i++)
聽聽{
聽聽聽Node node = nl.item(i);
聽聽聽if(node.getNodeType() == Node.ELEMENT_NODE)
聽聽聽{
聽聽聽聽if(node.hasAttributes())
聽聽聽聽{
聽聽聽聽聽sql.append(node.getNodeName()+" ");
聽聽聽聽聽NamedNodeMap attr = node.getAttributes();
聽聽聽聽聽sql.append(attr.getNamedItem("Type").getNodeValue());
聽聽聽聽聽if(attr.getNamedItem("Length")!=null)
聽聽聽聽聽{
聽聽聽聽聽聽sql.append("("+attr.getNamedItem("Length").getNodeValue()+")");
聽聽聽聽聽}聽聽聽聽
聽聽聽聽聽sql.append(",");
聽聽聽聽聽if(attr.getNamedItem("Index")!=null && attr.getNamedItem("Index").getNodeValue().equals("True"))
聽聽聽聽聽{
聽聽聽聽聽聽sql.append("index index_"+node.getNodeName()+"("+node.getNodeName()+"),");
聽聽聽聽聽}
聽聽聽聽}
聽聽聽聽else
聽聽聽聽{
聽聽聽聽聽getNode(node.getChildNodes(),sql);
聽聽聽聽}聽聽聽聽聽聽聽
聽聽聽}
聽聽}
聽}

聽public static void main(String[] args)
聽{
聽聽try
聽聽{
聽聽聽DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
聽聽聽DocumentBuilder builder = fac.newDocumentBuilder();
聽聽聽Document document = builder.parse(new File("Data.xml"));
聽聽聽
聽聽聽Node node = document.getFirstChild();
聽聽聽
聽聽聽StringBuffer sql = new StringBuffer("create table temp(id int(11) NOT NULL auto_increment,");
聽聽聽getNode(node.getChildNodes(),sql);
聽聽聽sql.append("PRIMARY KEY聽 (id))");
聽聽聽
聽聽聽Class.forName("com.mysql.jdbc.Driver");
聽聽聽String url ="jdbc:mysql://localhost/test";
聽聽聽Connection conn= DriverManager.getConnection(url,"root","root");
聽聽聽Statement stmt = conn.createStatement();
聽聽聽stmt.execute(sql.toString());
聽聽}
聽聽catch(Exception e){
聽聽聽e.printStackTrace();
聽聽}
聽}聽
}



]]>
Hibernate閰嶇疆鏂囦歡鐨勫嚑涓緥瀛?/title><link>http://m.tkk7.com/baputista/archive/2006/09/09/68694.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Sat, 09 Sep 2006 04:02:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/09/09/68694.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/68694.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/09/09/68694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/68694.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/68694.html</trackback:ping><description><![CDATA[ <p>鍦ㄨ繖閲屼富瑕佽涓や釜鎴戜翰韜綋楠屽埌鐨勪緥瀛愪笌澶у鍒嗕韓錛?br /><br />1.澶氬涓<br />2.緇ф壙<br /><br />榪欎袱涓槸鍦ㄥ簲鐢ㄤ腑鏈甯歌鐨勫湴鏂癸細<br /><br /><strong>1.澶氬涓</strong><br /><br />浣曡皳澶氬涓錛屼互鎴戠殑渚嬪瓙涓轟緥錛屽湪澶у閲岋紝涓涓闄㈤噷鏈夊緢澶氫笓涓氾紝涓涓笓涓氫笅鏈夊緢澶氱彮綰?br /><br />涓撲笟鐨勫瓧孌甸噷浼氭湁瀛﹂櫌鐨勭被鍨嬫潵鏍囪瘑瀹冩墍鍦ㄧ殑瀛﹂櫌錛岃屽闄㈤噷寰堝皯闇瑕佹湁涓撲笟鐨勫瓧孌碉紝鑻ユ兂鏌ュ埌瀛﹂櫌閲岀殑涓撲笟錛岃繑鍥炰笓涓氱殑List姣旀妸瀹冩斁鍒板闄㈤噷鐨凷et鍙橀噺鏇村垝綆楋紒鎵浠ュ湪鏄劇ず鐨勫簲鐢ㄤ腑寰堝皯榪欐牱鍋氾紝鍐嶆湁鍦ㄥ闄㈢殑琛ㄩ噷涔熶笉瀛樺湪涓撲笟鐩稿叧鐨勬弿榪幫紝鎵浠ユ湁鐢昏泧娣昏凍涔嬪珜銆?br /><br />鎵浠ュ憿錛屼笓涓氬浜庡闄紝灝辨槸澶氬涓浜嗭紝鎵璋撶殑澶氬涓涔熸槸浠庝笓涓氱殑瑙掑害鏉ョ湅鐨勶紒浣嗘槸褰撴垜浠垵濮嬪寲榪欎釜瀵硅薄錛屾垨鑰呮寔涔呭寲榪欎釜瀵硅薄鐨勬椂鍊欙紝鑳藉惁甯︿笂瀹冪殑瀛﹂櫌灞炴у憿錛熻繖涓緢鍏抽敭錛屼篃寰堝繀瑕侊紝榪欏氨闇瑕侀檮鍔犵殑涓涓睘鎬ф潵瀹屾垚浜嗭細<br /><br />涓嬮潰鎴戜滑浠ュ闄笓涓氫負渚嬪瓙錛屾潵鐪嬬湅璇ユ庝箞鍐欒繖涓厤緗枃浠訛細<br /><br /><font color="#ff1493">public class Institute<font color="#000000">//瀛﹂櫌<br /></font>{<br />聽private Integer id;<br />聽private String institute;</font></p> <p> <font color="#ff1493">//get & set<br />}<br /><br />public class Department <font color="#000000">//涓撲笟</font><br />{<br />聽private Integer id;<br />聽private Institute institute;<font color="#000000">//瀛﹂櫌灞炴?/font><br />聽private String department;<br /><br />聽聽聽//get & set<br />}<br /></font> <br />涓嬮潰灝辨槸閰嶇疆鏂囦歡浜嗭細<br /><br /><font color="#006400"><hibernate-mapping></font></p> <p> <font color="#006400">聽<class name="subject.model.Institute"><br />聽聽聽聽聽聽<id name="id"><br />聽聽聽聽聽聽聽聽聽<generator class="increment"/><br />聽聽聽聽聽聽聽</id><br /><br />聽聽聽聽聽聽<property name="institute"/><br />聽</class><br /><br /><class name="subject.model.Department"><br />聽聽聽聽聽聽<id name="id"><br />聽聽聽聽聽聽聽聽聽<generator class="increment" /><br />聽聽聽聽聽聽</id><br /><br />聽聽聽聽聽聽<property name="department" /><br />聽聽聽聽聽聽<br />聽聽聽聽聽聽<many-to-one name="institute" class="subject.model.Institute"聽<br />聽聽聽聽聽聽聽聽聽聽column="instituteId" lazy="false"/><font color="#000000">//澶氬涓錛宭azy="false"鏉ュ皢渚濊禆寤惰繜璁劇疆涓篺alse</font><br />聽聽聽</class><br />聽<br /></hibernate-mapping><br /></font> <br />鎵璋撲緷璧栧歡榪熷氨鏄錛屽鏋滄垜浠妸浠栬緗負true錛岄偅涔堟垜浠緱鍒扮殑department涓殑璇ュ睘鎬у垵濮嬪寲涓虹┖錛屽惁鍒欏氨鏈夎灞炴т簡錛?br /><br /><strong>2.緇ф壙<br /></strong><br />鍦ㄦ垜鐨勭郴緇熶腑錛屽瓨鍦ㄤ笁縐嶇敤鎴鳳紝綆$悊鍛樸佸鐢熴佹暀甯堬紝浠栦滑閮芥湁緇煎悎鐨勫睘鎬э紝涔熸湁涓х殑鍦版柟錛屽叿浣撶殑綾諱粙緇嶅涓嬶細<br /><br /><font color="#0000ff">public abstract class User <font color="#000000">//鐖剁被鐢ㄦ埛<br /></font>{<br />聽private Integer id;<br />聽private String user;<br />聽private String password;<br />聽private String name;<br />聽private String telphone;<br />聽//get & set<br />}<br /><br />public class Student extends User<font color="#000000">//瀛︾敓</font><br />{<br />聽private SchoolClass schoolClass;<br />聽private String sn;<br />}<br /><br />public class Teacher extends User<font color="#000000">//鏁欏笀</font><br />{<br />聽private String level;<br />聽private Boolean confirm;<br />}<br /><br />public class Admin extends User<font color="#000000">//綆$悊鍛?/font><br />{<br />聽private String grade;<br />}<br /><br /></font><font color="#000000">鍦ㄦ暟鎹簱涓垜鎶婁笁縐嶈鑹茬殑瀵硅薄瀛樻斁鍦ㄤ竴涓〃涓紝鐢ㄤ竴涓瓧孌墊潵鍖哄垎涓夌瑙掕壊錛屽湪hibernate鏄犲皠緇ф壙鏃跺睘浜庝竴縐嶆儏鍐碉紝鍙互鍙傜収涔︿腑鐨勪粙緇嶏細<br /><br /></font><font color="#000080"><hibernate-mapping></font></p> <p> <font color="#000080">聽<class name="subject.model.User" discriminator-value="not null"></font> <font color="#000000">//榪欓噷鐨刵ot null寰堝叧閿紝娌¤繖涓氨浼氬嚭鐜伴棶棰?/font> </p> <p> <font color="#000080">聽聽<id name="id"><br />聽聽聽<generator class="increment" /><br />聽聽</id><br />聽聽<br />聽聽<discriminator column="type" type="character" /><br />聽聽<br />聽聽<property name="user" /><br />聽聽<property name="password" /><br />聽聽<property name="name" /><br />聽聽<property name="telphone" /></font> </p> <p> <font color="#000080">聽聽<subclass name="subject.model.Admin" discriminator-value="a"><font color="#000000">//瀛樺偍瀵硅薄綾誨瀷鐨勬爣璇嗙</font><br />聽聽聽<property name="grade" column="sn" /><font color="#000000">//瀵逛簬姣忕瀵硅薄鐨勫瓧孌甸兘鏀懼埌鏁版嵁搴撶殑涓鍒楅噷浜?/font><br />聽聽</subclass><br />聽聽<br />聽聽<subclass name="subject.model.Teacher" discriminator-value="t"><br />聽聽聽<property name="level" column="sn" /><br />聽聽聽<property name="confirm" column="about" /><br />聽聽</subclass><br />聽聽<br />聽聽<subclass name="subject.model.Student" discriminator-value="s"><br />聽聽聽<br />聽聽聽<property name="sn" /><br />聽聽聽<br />聽聽聽<many-to-one name="schoolClass" class="subject.model.SchoolClass" <br />聽聽聽聽column="about" lazy="false"/><br />聽聽聽聽<br />聽聽</subclass></font> </p> <p> <font color="#000080">聽</class></font> </p> <p> <font color="#000080"></hibernate-mapping><br /></font> </p> <img src ="http://m.tkk7.com/baputista/aggbug/68694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-09-09 12:02 <a href="http://m.tkk7.com/baputista/archive/2006/09/09/68694.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浠庡垎欏墊潵浣撻獙Struts鐨勮療鐥?/title><link>http://m.tkk7.com/baputista/archive/2006/09/09/68687.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Sat, 09 Sep 2006 03:24:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/09/09/68687.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/68687.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/09/09/68687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/68687.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/68687.html</trackback:ping><description><![CDATA[ <p>鎴戞浘緇忎粙緇嶈繃鑷繁鏋勫緩鐨勫垎欏電▼搴忥紝鍦ㄩ偅涓▼搴忎腑錛屾垜浠妸鍒嗛〉鏄劇ず鐨勬暟鎹斁鍒頒簡Action鐨勬垚鍛樹腑錛岃屾病鏈夋斁鍦╡xecute鍑芥暟涓紝濡傛灉鎶婁粬鏀懼埌execute鍑芥暟涓細浜х敓浠涔堟晥鏋滃憿錛熺敱浜庢垜浠病鏈夐噰鐢ㄩ〉鐮佹潵紜畾鏁版嵁錛岃屾槸鍗曠函鐨勮皟鐢ㄤ笅涓欏墊潵瀹屾垚鐨勶紝鎵浠ュ綋鍙橀噺鏀懼埌execute涓椂鎴戜滑姣忔璁塊棶鍒扮殑閮藉彧浼氭槸絎竴欏碉紝榪欏氨鏄疭truts鐨勮療鐥咃紝鍗曠敤鎴鋒瘡嬈¤闂兘浼氫負鐢ㄦ埛鍒涘緩涓涓柊鐨勭嚎紼嬶紝鑰岄潪Servlet涓烘瘡鐢ㄦ埛鍗曠嫭寮杈熶竴涓嚎紼嬶紝鎵浠ユ墠浼氫駭鐢熶互涓婄殑闂錛?br /><br />閭i棶棰樿濡備綍瑙e喅鍛紵<br /><br />1.鐢ㄩ〉鐮佹潵鍖哄垎闇瑕佹樉紺虹殑鏁版嵁鏇存湁鏁?br />2.Spring鍙互瑙e喅榪欎釜璇熺梾<br /><br />鍚堜簩涓轟竴鏉ヤ粙緇嶄竴涓嬪惂錛?br /><br /><font color="#ff0000">/**<br />聽* Page.java<br />聽* @author baputista<br />聽* Email: </font><a href="mailto:baputista@hotmail.com"><font color="#ff0000">baputista@hotmail.com</font></a><br /><font color="#ff0000">聽* 2006-8-26 0:05:36<br />聽*/</font></p> <p> <font color="#ff0000">package subject.bean;</font> </p> <p> <font color="#ff0000">import java.util.ArrayList;<br />import java.util.List;</font> </p> <p> <font color="#ff0000">public class Page<br />{<br />聽private int current = 1;聽<font color="#000000">//褰撳墠欏電爜</font><br />聽private int nextPage = 0;聽<font color="#000000">//涓嬩竴欏電爜</font><br />聽private int previousPage = 0;<font color="#000000">//涓婁竴欏電爜</font><br />聽private int total = 0;<font color="#000000">//鎬葷殑鏁版嵁</font><br />聽private int pages = 0;<font color="#000000">//鎬婚〉鏁?/font><br />聽private int each = 5;<font color="#000000">//姣忛〉鏁版嵁</font><br />聽private int start = 0;<font color="#000000">//褰撳墠欏電殑璧峰鏁版嵁</font><br />聽private int end = 0;<font color="#000000">//褰撳墠欏電殑緇撴潫鏁版嵁</font><br />聽private boolean next = false;<font color="#000000">//鏄惁瀛樺湪涓嬩竴欏?/font><br />聽private boolean previous = false;<font color="#000000">//鏄惁瀛樺湪涓婁竴欏?/font><br />聽private List list = null;</font> <font color="#000000">//闇瑕佹樉紺虹殑鏁版嵁</font> </p> <p> <font color="#ff0000">聽public Page( List list, int each )<font color="#000000">//浠ラ渶瑕佹樉紺虹殑鏁版嵁鍜屾瘡欏佃鏄劇ず鐨勬暟鎹負鍙傛暟榪涜鍒濆鍖?/font><br />聽{<br />聽聽this.list = list;<br />聽聽this.each = each;<br />聽聽total = list.size();<font color="#000000">//鎬葷殑鏁版嵁絳変簬List鐨勫ぇ灝?/font><br />聽聽if ( total % each == 0 )<font color="#000000">//鎬婚〉鏁板拰娌¢〉鏄劇ず鐨勬暟鎹彲浠ユ暣闄わ紝鍒欎負鎬婚〉鏁?/font><br />聽聽聽pages = total / each;<br />聽聽else<br />聽聽聽pages = total / each + 1;<font color="#000000">//鍚﹀垯灝遍渶瑕佸姞涓婁竴欏典簡</font><br />聽聽if ( current >= pages )<br />聽聽{<br />聽聽聽next = false;<font color="#000000">//鍒ゆ柇鏄惁鏈変笅涓欏?/font><br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽next = true;<br />聽聽聽nextPage = current + 1;<font color="#000000">//鏈夛紝榪樺緱綆楀嚭鏉ヤ笅涓欏墊槸澶氬皯鍛紒</font><br />聽聽}<br />聽聽if ( total < each )<br />聽聽{<br />聽聽聽start = 0;<font color="#000000">//榪欓〉鏄劇ず澶氬皯鏁版嵁鍟婏紵濡傛灉鏄渶鍚庝竴欏碉紝鍙樉紺烘暣闄ゅ悗鐨勪綑鏁頒簡</font><br />聽聽聽end = total;<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽start = 0;<font color="#000000">//鍚﹀垯瑕佹樉紺烘瘡欏甸渶瑕佹樉紺虹殑鏁版嵁鏁?/font><br />聽聽聽end = each;<br />聽聽}<br />聽}</font> </p> <p> <font color="#ff0000">聽public int getCurrent()<br />聽{<br />聽聽return current;<br />聽}</font> </p> <p> <font color="#ff0000">聽public boolean isNext()<br />聽{<br />聽聽return next;<br />聽}</font> </p> <p> <font color="#ff0000">聽public boolean isPrevious()<br />聽{<br />聽聽return previous;<br />聽}</font> </p> <p> <font color="#ff0000">聽public int getPages()<br />聽{<br />聽聽return pages;<br />聽}</font> </p> <p> <font color="#ff0000">聽public int getTotal()<br />聽{<br />聽聽return total;<br />聽}</font> </p> <p> <font color="#ff0000">聽public int getNextPage()<br />聽{<br />聽聽return nextPage;<br />聽}</font> </p> <p> <font color="#ff0000">聽public int getPreviousPage()<br />聽{<br />聽聽return previousPage;<br />聽}</font> </p> <p> <font color="#ff0000">聽@SuppressWarnings ( "unchecked" )<br />聽public List get( int page )<font color="#000000">//鑾峰彇鎸囧畾欏電爜鐨凩ist</font><br />聽{<br />聽聽if ( page > 0 && page <= pages )<br />聽聽{<br />聽聽聽current = page;<font color="#000000">//page鍦ㄦ湁鏁堣寖鍥村唴鍒欎負褰撳墠欏?/font><br />聽聽}<br />聽聽if ( ( current - 1 ) > 0 )<font color="#000000">//璁$畻涓婁竴欏墊槸鍚﹀瓨鍦ㄤ互鍙婂?/font><br />聽聽{<br />聽聽聽previous = true;<br />聽聽聽previousPage = current - 1;<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽previous = false;<br />聽聽}<br />聽聽if ( current >= pages )<font color="#000000">//璁$畻涓嬩竴欏墊槸鍚﹀瓨鍦ㄤ互鍙婂?/font><br />聽聽{<br />聽聽聽next = false;<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽next = true;<br />聽聽聽nextPage = current + 1;<br />聽聽}<br />聽聽if ( page * each < total )<font color="#000000">//璁$畻鏄劇ず鐨勮褰曞湪List涓殑浣嶇疆</font><br />聽聽{<br />聽聽聽end = current * each;<br />聽聽聽start = end - each;<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽end = total;<br />聽聽聽start = each * ( pages - 1 );<br />聽聽}<br />聽聽List gets = new ArrayList();<font color="#000000">//鎶婃樉紺虹殑鏁版嵁鏀懼埌涓涓柊鐨凩ist閲?/font><br />聽聽for ( int i = start; i < end; i++ )<br />聽聽{<br />聽聽聽gets.add( list.get( i ) );<br />聽聽}<br />聽聽return gets;<br />聽}<br />}<br /><br /></font> <font color="#000000">涓婇潰鐨凱age Bean姣旈偅涓氨綆鐣ョ殑寰堝錛屾垜浠啀鏉ョ湅鐪婣ction鎬庝箞鏉ュ仛錛?br /><br /></font> <font color="#a52a2a">public class AdminAction extends BaseAction<br />{<br />聽private AdminManager mgr;</font> </p> <p> <font color="#000000"> <font color="#a52a2a">聽public void setAdminManager( AdminManager mgr )<br />聽{<br />聽聽this.mgr = mgr;<br />聽}<br /><br />public ActionForward execute( ActionMapping mapping, ActionForm form,<br />聽聽聽HttpServletRequest request, HttpServletResponse response )<br />聽聽聽throws Exception<br />聽{<br />聽聽Integer pageId = getInt( request, "page" );<br />聽聽Page page = null;<br />聽聽List rs =mgr.getStudents();<br />聽聽聽if ( rs != null && rs.size() != 0 )<br />聽聽聽{<br />聽聽聽聽page = new Page( rs, 10 );<br />聽聽聽聽request.setAttribute( "students", page.get( pageId ) );<br />聽聽聽}<br />聽聽聽request.setAttribute( "search", Select.studentSearch() );<br />聽聽}聽聽<br />聽聽request.setAttribute( "page", page );<br />聽聽return mapping.findForward("student");<br />聽}<br /><br />}<br /></font> <br />榪欐牱鎴戜滑灝卞彲浠ユ妸鍒嗛〉瀵硅薄鍜孡ist鏀懼埌Execute涓簡錛屽湪榪欓噷鎴戜滑鎶婁笟鍔¢昏緫瀵硅薄AdminManager鐨勫疄渚媘gr澹版槑鎴愪簡bean鐨勫艦寮忥紝榪欐牱鍙互鍦⊿pring涓埄鐢╥oc鏉ユ敞鍏ワ細<br /><br />Struts鐨勫0鏄庯細<br /><br /><font color="#000080"><action path="/admin" type="org.springframework.web.struts.DelegatingActionProxy" /><br /></font><br />Spring涓殑澹版槑錛?br /><br /></font> <font color="#0000ff"><!-- 涓氬姟閫昏緫 --><br />聽<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><br />聽聽<property name="transactionManager" ref="transactionManager" /><br />聽聽<property name="transactionAttributes"><br />聽聽聽<props><br />聽聽聽聽<prop key="save*">PROPAGATION_REQUIRED</prop><br />聽聽聽聽<prop key="remove*">PROPAGATION_REQUIRED</prop><br />聽聽聽聽<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><br />聽聽聽</props><br />聽聽</property><br />聽</bean></font> </p> <p> <font color="#0000ff">聽<bean id="adminManager" parent="txProxyTemplate"><br />聽聽<property name="target"><br />聽聽聽<bean class="subject.service.impl.AdminManagerImpl"><br />聽聽聽聽<property name="dao" ref="dao" /><br />聽聽聽</bean><br />聽聽</property><br />聽</bean><br /><br /><bean name="/admin/admin" class="subject.web.action.AdminAction" singleton="false"><br />聽聽<property name="adminManager"><br />聽聽聽<ref bean="adminManager" /><br />聽聽</property><br />聽</bean><br /><br /></font> <font color="#000000">浠庤屽疄鐜頒簡Struts鍜孲pring鐨勫畬緹庢殗鎺ワ紝singleton="false"浠庤屽彲浠ヨВ鍐沖崟渚嬬殑璇熺梾錛?/font> </p> <img src ="http://m.tkk7.com/baputista/aggbug/68687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-09-09 11:24 <a href="http://m.tkk7.com/baputista/archive/2006/09/09/68687.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Spring+Hibernate+Acegi 鐨勫垵嬈′綋楠?/title><link>http://m.tkk7.com/baputista/archive/2006/08/24/65465.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Thu, 24 Aug 2006 02:56:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/08/24/65465.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/65465.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/08/24/65465.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/65465.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/65465.html</trackback:ping><description><![CDATA[ <p>鍒扮幇鍦ㄦ垜涔熸病鏈夊紕鏄庣櫧Acegi閲岄潰寰堝鐨勫姛鑳?鍒氬垰寮濮嬪鐨勬椂鍊欐垜灝卞凡緇忚瀹冮偅綣佺悙鐨勯厤緗渿鎱戜綇浜嗭紝涓嶈繃褰撴垜鍔ㄨ搗鎵嬫潵涓姝ユ瀹炵幇鐨勬椂鍊?鎵嶅彂鐜板叾瀹炲畠榪滄病鏈夐偅涔堥毦,褰撶劧闅忕潃瀛︿範(fàn)鐨勬繁鍏?浼氭笎娓愬啀鍙戠幇榪欎竴鐐瑰惂,鐜板湪灝辮鎴戜滑鍒濆鑰呬竴鍒囦綋楠孉cegi鐨勫姛鑳藉惂!<br /><br />榪樹互鎴戜紶緇熺殑渚嬪瓙涓轟緥:<br />姣曚笟璁捐閫夐緋葷粺,涓夌瑙掕壊:鏁欏笀,瀛︾敓,綆$悊鍛?鎴戞兂璁╀粬浠殑鐧婚檰閮藉湪涓涓晫闈笅鑷姩璇嗗埆,鑰屾棤闇榪涜韜喚閫夋嫨,鐧婚檰鍚?浠栦滑灝嗗垎鍒埌鍚勮嚜鐨刟dmin.jsp,stu.jsp,teacher.jsp<br />鍦ㄦ暟鎹簱涓殑琛ㄧ粨鏋勫涓?寰堝灞炴х暐):<br />id--- user---password--type---about<br /><br />type鏄敤鏉ュ瓨鍌ㄧ敤鎴風(fēng)殑綾誨埆,鍒嗗埆鏈塧,t,s鍒嗗埆瀵瑰簲涓夌瑙掕壊<br />about瀵瑰簲鐨勬槸acegi閲屾墍闇瑕佺殑enable,鐢ㄦ埛鏄惁鍙敤</p> <p>鍦╩odel閲?鎴戜滑閲囩敤浜嗙戶鎵垮叧緋?<br /><br />鐖剁被user:<br />package subject.model;</p> <p>public abstract class User extends BaseObject<br />{<br />聽private Integer id;<br />聽private String user;<br />聽private String password;<br />聽private String name;<br />聽private String telphone;</p> <p>//set and get method聽<br />聽<br />聽public abstract String getType(); //榪欎釜鏄敤鏉ュ弽鏄犵敤鎴瘋鑹茬殑鍏抽敭鍑芥暟,鍦ㄥ瓙綾誨疄鐜?浠庤屽疄鐜板鎬?br />}<br /><br />瀛愮被鐨勫疄鐜?<br />======================<br />package subject.model;</p> <p>import subject.Constants;</p> <p>public class Teacher extends User<br />{<br />聽private String level;聽聽聽聽聽聽聽聽 //鏁欏笀鐨勮亴縐?br /><br />//set and get method</p> <p>聽public String getType()<br />聽{<br />聽聽return Constants.TEACHER;<br />聽}<br />}<br />================<br />package subject.model;</p> <p>import subject.Constants;</p> <p>public class Student extends User<br />{<br />聽private static final long serialVersionUID = 1L;</p> <p>聽private SchoolClass schoolClass;聽聽聽聽聽聽聽聽 //瀛︾敓鐨勭彮綰?br />聽private String sn;聽聽聽聽聽聽聽聽聽聽聽聽 //瀛︾敓鐨勫鍙?/p> <p>//set and get method<br />聽<br />聽public String getType()<br />聽{<br />聽聽return Constants.STUDENT;<br />聽}<br />}<br />=================<br />package subject.model;</p> <p>import subject.Constants;</p> <p>public class Admin extends User<br />{<br />聽private String grade;聽聽聽聽聽聽聽聽聽聽 //綆$悊鍛樼殑綰у埆<br />//set and get method</p> <p>聽public String getType()<br />聽{<br />聽聽return Constants.ADMIN;<br />聽}<br />}<br /><br />瀵逛簬涓夎呮墍鍏辨湁鐨勫睘鎬у湪鏁版嵁搴撻噷,閮藉瓨鍦ㄤ竴涓瓧孌?鑰屼緷鎹笉鍚岀殑瑙掕壊鎷ユ湁涓嶅悓鐨勫惈涔?瀛︾敓鐨勭彮綰у垯瀛樻斁鍦ㄤ簡about閲?鍙瀛︾敓鏈夌彮綰?浠栧氨able,鍚﹀垯灝眅nable浜?鑰岀鐞嗗憳鍜屾暀甯堝垯榛樿涓?!<br /><br />榪欑鏄睘浜庝竴涓戶鎵挎爲(wèi)瀛樻斁鍦ㄤ竴涓〃鐨勬儏鍐?Hibernate鐨勯厤緗涓?<br /><hibernate-mapping></p> <p>聽<class name="subject.model.User" discriminator-value="not null"></p> <p>聽聽<id name="id"><br />聽聽聽<generator class="increment" /><br />聽聽</id><br />聽聽<br />聽聽<discriminator column="type" type="character" /><br />聽聽<br />聽聽<property name="user" /><br />聽聽<property name="password" /><br />聽聽<property name="name" /><br />聽聽<property name="telphone" /></p> <p>聽聽<subclass name="subject.model.Admin" discriminator-value="a"><br />聽聽聽<property name="grade" column="sn" /><br />聽聽</subclass><br />聽聽<br />聽聽<subclass name="subject.model.Teacher" discriminator-value="t"><br />聽聽聽<property name="level" column="sn" /><br />聽聽</subclass><br />聽聽<br />聽聽<subclass name="subject.model.Student" discriminator-value="s"><br />聽聽聽<br />聽聽聽<property name="sn" /><br />聽聽聽<br />聽聽聽<many-to-one name="schoolClass" class="subject.model.SchoolClass" <br />聽聽聽聽column="about" update="false" insert="false" /><br />聽聽聽聽<br />聽聽</subclass></p> <p>聽</class></p> <p></hibernate-mapping><br /><br />=============================================<br />涓婇潰鐨勮繖浜涢兘鏄ā鍨嬬殑鍩虹,涓嬮潰鍐嶈鎬庝箞鏍烽厤鍚圫pring鍜孉cegi瀹炵幇緋葷粺鐨勫畨鍏ㄤ笌鐧婚檰<br />鍦⊿pring涓璈ibernate鐨勯厤緗彧浠嬬粛涓嶈鏄?<br /><!-- 瀹氫箟DBCP鏁版嵁婧?--><br />聽<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><br />聽聽<property name="driverClassName" value="com.mysql.jdbc.Driver" /><br />聽聽<property name="url" value="jdbc:mysql://localhost/subject?useUnicode=true&amp;characterEncoding=gbk" /><br />聽聽<property name="username" value="root" /><br />聽聽<property name="password" value="" /><br />聽聽<property name="maxActive" value="100" /><br />聽聽<property name="maxIdle" value="30" /><br />聽聽<property name="maxWait" value="1000" /><br />聽聽<property name="defaultAutoCommit" value="true" /><br />聽聽<property name="removeAbandoned" value="true" /><br />聽聽<property name="removeAbandonedTimeout" value="60" /><br />聽</bean></p> <p>聽<!-- Hibernate --><br />聽<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><br />聽聽<property name="dataSource" ref="dataSource" /><br />聽聽<property name="mappingResources"><br />聽聽聽<list><br />聽聽聽聽<value>subject/model/User.hbm.xml</value><br />聽聽聽</list><br />聽聽</property><br />聽聽<property name="hibernateProperties"><br />聽聽聽<props><br />聽聽聽聽<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop><br />聽聽聽</props><br />聽聽</property><br />聽</bean></p> <p>聽<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><br />聽聽<property name="sessionFactory" ref="sessionFactory" /><br />聽</bean><br /><br /><!-- Dao瀵硅薄 --><br /><bean id="userDao" class="subject.dao.hibernate.UserDaoImpl"><br />聽聽<property name="sessionFactory" ref="sessionFactory" /><br />聽</bean><br /><br /><!-- 涓氬姟閫昏緫 --><br />聽<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><br />聽聽<property name="transactionManager" ref="transactionManager" /><br />聽聽<property name="transactionAttributes"><br />聽聽聽<props><br />聽聽聽聽<prop key="save*">PROPAGATION_REQUIRED</prop><br />聽聽聽聽<prop key="remove*">PROPAGATION_REQUIRED</prop><br />聽聽聽聽<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><br />聽聽聽</props><br />聽聽</property><br />聽</bean><br /><br /><bean id="userManager" parent="txProxyTemplate"><br />聽聽<property name="target"><br />聽聽聽<bean class="subject.service.impl.UserManagerImpl"><br />聽聽聽聽<property name="userDao" ref="userDao" /><br />聽聽聽</bean><br />聽聽</property><br />聽</bean><br /><br /><!-- Struts --><br />聽<bean name="/user" class="subject.web.action.UserAction" singleton="false"><br />聽聽<property name="userManager"><br />聽聽聽<ref bean="userManager" /><br />聽聽</property><br />聽</bean><br />==================<br />涓婇潰鍏蜂綋鐨勪笉鐢ㄤ簡瑙?鏃犻潪灝辨槸璋冪敤鍜屾暟鎹簱鐨勬搷浣?<br />涓嬮潰灝辮瀵笰cegi榪涜澹版槑浜?<br />鎴戜笉鐢–trl+c鍜孋trl+V鐨勬柟寮忓Acegi榪涜浠嬬粛,娌℃湁鎰忎箟,闅忎究google灝變竴澶у爢<br />鎴戜滑鎯充富瑕佸湪榪欐牱鐨勭郴緇熶腑闇瑕佺殑瀹夊叏絳栫暐閮芥湁鍝簺?<br />1.鐢ㄦ埛鐨勭櫥闄?br />2.闃叉澶氫釜鐢ㄦ埛鐧婚檰涓涓笎鍙?br />3.鐢ㄦ埛鐨勬敞閿<br />4.闃叉闈炴硶鐢ㄦ埛鐨勮闂?br /><br />鎴戣繖涓▼搴忔墍娑夊強鍒扮殑鍙湁榪欎簺,涓嬮潰灝辮繘琛岃鏄?<br /><br />鍦╳eb.xml鐨勫0鏄?<br /><!-- Acegi瀹夊叏鎺у埗 Filter 閰嶇疆 --><br />聽聽聽 <filter><br />聽聽聽聽聽聽聽 <filter-name>securityFilter</filter-name><br />聽聽聽聽聽聽聽 <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class><br />聽聽聽聽聽聽聽 <init-param><br />聽聽聽聽聽聽聽聽聽聽聽 <param-name>targetClass</param-name><br />聽聽聽聽聽聽聽聽聽聽聽 <param-value>org.acegisecurity.util.FilterChainProxy</param-value><br />聽聽聽聽聽聽聽 </init-param><br />聽聽聽 </filter><br />聽聽聽 <br />聽聽聽 <filter-mapping><br />聽聽聽聽聽聽聽 <filter-name>securityFilter</filter-name><br />聽聽聽聽聽聽聽 <url-pattern>/*</url-pattern><br />聽聽聽 </filter-mapping><br /><br />Acegi閫氳繃瀹炵幇浜咶ilter鎺ュ彛鐨凢ilterToBeanProxy鎻愪緵涓縐嶇壒孌婄殑浣跨敤Servlet Filter鐨勬柟寮忥紝瀹冨鎵楽pring涓殑Bean -- FilterChainProxy鏉ュ畬鎴愯繃婊ゅ姛鑳斤紝榪欐牱灝辯畝鍖栦簡web.xml鐨勯厤緗紝騫朵笖鍒╃敤Spring IOC鐨勪紭鍔褲侳ilterChainProxy鍖呭惈浜嗗鐞嗚璇佽繃紼嬬殑filter鍒楄〃錛屾瘡涓猣ilter閮芥湁鍚勮嚜鐨勫姛鑳姐?br /><br /><!-- ======================== FILTER CHAIN ======================= --><br />聽<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"><br />聽聽<property name="filterInvocationDefinitionSource"><br />聽聽聽<value><br />聽聽聽聽CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON <br />聽聽聽聽PATTERN_TYPE_APACHE_ANT<br />聽聽聽聽<br />聽聽聽聽/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,<br />聽聽聽聽聽聽聽聽聽securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor<br />聽聽聽</value><br />聽聽</property><br />聽</bean><br /><br />澶т綋涓婂厛浠嬬粛涓涓?<br />httpSessionContextIntegrationFilter:姣忔request鍓?HttpSessionContextIntegrationFilter浠嶴ession涓幏鍙朅uthentication瀵硅薄錛屽湪request瀹屽悗, 鍙堟妸Authentication瀵硅薄淇濆瓨鍒癝ession涓緵涓嬫request浣跨敤,姝ilter蹇呴』鍏朵粬Acegi filter鍓嶄嬌鐢紝浣夸箣鑳借法瓚婂涓姹傘?br />logoutFilter:鐢ㄦ埛鐨勬敞閿<br />authenticationProcessingFilter:澶勭悊鐧婚檰璇鋒眰<br />exceptionTranslationFilter:寮傚父杞崲榪囨護鍣?br />filterInvocationInterceptor:鍦ㄨ闂墠榪涜鏉冮檺媯鏌?br /><br />榪欎簺灝辯姽濡傚湪web.xml澹版槑涓緋誨垪鐨勮繃婊ゅ櫒,涓嶈繃褰撴妸浠栦滑閮藉0鏄庡湪spring涓氨鍙互浜彈Spring緇欐垜浠甫鏉ョ殑鏂逛究浜嗐?br /><br />涓嬮潰灝辨槸瀵硅繖浜涜繃婊ゅ櫒鐨勫叿浣撳0鏄庯細<br />鍙鏈夌敤鐨勫湴鏂硅繘琛屽0鏄庯紝鍒殑鍦版柟鍑犱箮閮芥槸榛樿鐨?br /><!-- ======================== FILTER ======================= --><br />聽<bean id="httpSessionContextIntegrationFilter" <br />聽聽class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" /></p> <p>聽<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"><br />聽聽<constructor-arg value="/index.htm" />聽聽聽聽聽聽聽聽聽聽聽聽 紱誨紑鍚庢墍杞悜鐨勪綅緗?br />聽聽<constructor-arg><br />聽聽聽聽聽聽聽聽聽聽聽 <list><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/><br />聽聽聽聽聽聽聽聽聽聽聽 </list><br />聽聽聽聽聽聽聽 </constructor-arg><br />聽聽<property name="filterProcessesUrl" value="/logout.htm" />聽聽聽聽聽聽聽 瀹氫箟鐢ㄦ埛娉ㄩ攢鐨勫湴鍧錛?br />聽</bean><br /><br />涓嬮潰鐨勮繖涓繃婊ゅ櫒錛屾垜浠牴鎹嚜宸辯殑闇姹傛湁浜嗚嚜宸辯殑瀹炵幇錛?/p> <p>聽<bean id="authenticationProcessingFilter" class="subject.web.filter.UserAuthenticationProcessingFilter"><br />聽聽<property name="authenticationManager" ref="authenticationManager"/>聽聽涓嬮潰浼氫粙緇嶇殑鐢ㄦ潵璧峰埌璁よ瘉綆$悊鐨勪綔鐢?br />聽聽<property name="authenticationFailureUrl" value="/login.htm?error=wrong"/>聽 鐧婚檰澶辮觸鐨勫湴鍧<br />聽聽<property name="defaultTargetUrl" value="/login.htm"/>聽聽聽聽聽聽 鐧婚檰鎴愬姛鐨勫湴鍧<br />聽聽<property name="filterProcessesUrl" value="/j_security_check"/>聽聽聽聽聽 鐧婚檰璇鋒眰鐨勫湴鍧<br />聽聽<property name="userManager" ref="userManager"/>聽聽聽聽聽聽聽 鑷繁娣誨姞鐨勫睘鎬э紝榪欐牱灝卞彲浠ヨ闂埌鎴戜滑鐨勪笟鍔¢昏緫<br />聽聽<property name="exceptionMappings">聽聽 鍑虹幇寮傚父鎵瀵瑰簲鐨勫湴鍧<br />聽聽聽聽聽聽聽聽聽聽聽 <value><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 org.acegisecurity.AuthenticationException=/login.htm?error=fail聽聽聽聽 鐧婚檰澶辮觸聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 org.acegisecurity.concurrent.ConcurrentLoginException=/login.htm?error=too聽聽聽聽聽聽聽 宸茬櫥闄嗕簡<br />聽聽聽聽聽聽聽聽聽聽聽 </value><br />聽聽聽聽聽聽聽 </property><br />聽</bean><br />聽<br />聽<bean id="securityContextHolderAwareRequestFilter" class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter"/></p> <p>聽<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"><br />聽聽<property name="authenticationEntryPoint"><br />聽聽聽<bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"><br />聽聽聽聽<property name="loginFormUrl" value="/login.htm?error=please"/>//濡傛灉鐢ㄦ埛娌$櫥闄嗗氨鎯寵闂紝鍏堝埌榪欓噷鐧婚檰鍚?br />聽聽聽聽<property name="forceHttps" value="false"/><br />聽聽聽</bean><br />聽聽</property><br />聽</bean><br />聽<br />聽<bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"><br />聽聽<property name="authenticationManager" ref="authenticationManager"/>聽聽聽聽聽聽聽璁よ瘉鏈嶅姟<br />聽聽<property name="accessDecisionManager"><br />聽聽聽<bean class="org.acegisecurity.vote.AffirmativeBased"><br />聽聽聽聽<property name="allowIfAllAbstainDecisions" value="false"/><br />聽聽聽聽<property name="decisionVoters"><br />聽聽聽聽聽<list><br />聽聽聽聽聽聽<bean class="org.acegisecurity.vote.RoleVoter"><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <property name="rolePrefix" value=""/>聽聽聽聽聽聽聽聽 //榪欓噷瀹氫箟鏁版嵁搴撲腑瀛樻斁鐨勮鑹插拰鎴戜滑鍦ㄨ繖閲屽0鏄庣殑瑙掕壊闂存槸鍚﹂渶瑕佸姞涓墠緙錛熸垜娌″姞<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 </bean><br />聽聽聽聽聽</list><br />聽聽聽聽</property><br />聽聽聽</bean><br />聽聽</property><br />聽聽<property name="objectDefinitionSource"><br />聽聽聽聽聽聽聽聽聽聽聽 <value><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PATTERN_TYPE_APACHE_ANT<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /admin.htm*=a聽聽聽聽聽聽聽聽 榪欓噷灝辨槸鏁版嵁搴撲腑瀵瑰簲鐨則yep a<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /student*=s聽聽聽聽聽聽聽聽聽聽 鐢變簬娌℃湁鍓嶇紑鍜屾暟鎹簱閲屼竴鏍?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 /teacher*=t<br />聽聽聽聽聽聽聽聽聽聽聽 </value><br />聽聽聽聽聽聽聽 </property><br />聽</bean><br />聽<br />聽<bean id="loggerListener"<br />聽聽聽聽聽聽聽聽聽 class="org.acegisecurity.event.authentication.LoggerListener"/>聽聽聽聽聽聽 璁板綍浜嬩歡<br /><br />涓嬮潰灝辮璇存槑鎴戜滑鐨勮璇佹湇鍔′簡錛屽叾璧峰埌鐨勫叧閿綔鐢ㄥ氨鏄敤鏉ヤ繚璇佺敤鎴風(fēng)櫥闄嗚韓浠界殑楠岃瘉錛?br /><br />瀹冨皢楠岃瘉鐨勫姛鑳藉鎵樼粰澶氫釜Provider錛屽茍閫氳繃閬嶅巻Providers, 浠ヤ繚璇佽幏鍙栦笉鍚屾潵婧愮殑韜喚璁よ瘉錛岃嫢鏌愪釜Provider鑳芥垚鍔熺‘璁ゅ綋鍓嶇敤鎴風(fēng)殑韜喚錛宎uthenticate()鏂規(guī)硶浼氳繑鍥炰竴涓畬鏁寸殑鍖呭惈鐢ㄦ埛鎺堟潈淇℃伅鐨凙uthentication瀵硅薄錛屽惁鍒欎細鎶涘嚭涓涓狝uthenticationException銆?br /><br />鍏堝0鏄庝竴涓鐞嗗櫒鍚э紝鍦ㄤ笂闈㈢殑榪囨護鍣ㄤ腑閮藉凡緇忕敤鍒拌繃浜?br /><!-- ======================== AUTHENTICATION ======================= --><br />聽<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"><br />聽聽<property name="providers"><br />聽聽聽<list><br />聽聽聽聽<ref local="daoAuthenticationProvider" />聽聽聽鎴戜粎浠呯敤鍒?浠庢暟鎹簱涓鍙栫敤鎴蜂俊鎭獙璇佽韓浠?br />聽聽聽</list><br />聽聽</property><br />聽聽<property name="sessionController"><br />聽聽聽<bean id="concurrentSessionController" <br />聽聽聽聽class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl"><br />聽聽聽聽<property name="maximumSessions"><br />聽聽聽聽聽<value>1</value>姣忎釜鐢ㄦ埛鍚屾椂鐧婚檰涓浣?br />聽聽聽聽</property><br />聽聽聽聽<property name="sessionRegistry"><br />聽聽聽聽聽<bean id="sessionRegistry" class="org.acegisecurity.concurrent.SessionRegistryImpl" /><br />聽聽聽聽</property><br />聽聽聽聽<property name="exceptionIfMaximumExceeded" value="true" /><br />聽聽聽</bean><br />聽聽</property><br />聽</bean><br />聽鏉ュ疄鐜板敮涓鐨勪竴涓狿rovider錛屼粠鏁版嵁搴撻獙璇佽韓浠?br />聽<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"><br />聽聽<property name="userDetailsService"><br />聽聽聽<bean id="jdbcDaoImpl"<br />聽聽聽聽聽聽聽聽聽聽聽 class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"><br />聽聽聽聽聽聽聽聽聽 <property name="dataSource" ref="dataSource"/><br />聽聽聽聽聽聽聽聽聽 <property name="usersByUsernameQuery"><br />聽聽聽聽聽聽聽聽聽聽聽聽聽 <value><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 select user,password,about from user where user = ?聽聽聽聽聽聽聽 鏌ユ壘鐢ㄦ埛鐨勬煡璇㈣鍙ワ紝鍙渶瑕佹妸浣犳暟鎹簱涓殑鐢ㄦ埛鍜屽瘑鐮佷互鍙奺nable鐩稿搴斾笂灝辮<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 </value><br />聽聽聽聽聽聽聽聽聽 </property><br />聽聽聽聽聽聽聽聽聽 <property name="authoritiesByUsernameQuery"><br />聽聽聽聽聽聽聽聽聽聽聽聽聽 <value><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 select user,type from user where user = ?聽聽聽聽聽聽聽聽聽聽 榪欓噷灝辨槸鎶婄敤鎴峰拰鏉冮檺瀵瑰簲涓婏紝鍦╝ppfuse涓敤鐨勪袱涓〃錛屾垜閮芥斁涓涓〃閲屼簡錛屾墍浠ュ氨鐢ㄨ繖涓涓氨琛岄棶棰樼殑鍏抽敭鏄璁╁畠鑳芥壘鍒頒袱涓瓧孌碉紝鏋勬垚涓涓璞?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 </value><br />聽聽聽聽聽聽聽聽聽 </property><br />聽聽聽聽聽 </bean><br />聽聽</property><br />聽聽<property name="userCache"> 緙撳瓨閮借繖涔堝啓錛?br />聽聽聽<bean class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache"><br />聽聽聽聽<property name="cache"><br />聽聽聽聽聽<bean class="org.springframework.cache.ehcache.EhCacheFactoryBean"><br />聽聽聽聽聽聽<property name="cacheManager"><br />聽聽聽聽聽聽聽<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/><br />聽聽聽聽聽聽</property><br />聽聽聽聽聽聽<property name="cacheName" value="userCache"/><br />聽聽聽聽聽</bean><br />聽聽聽聽</property><br />聽聽聽</bean><br />聽聽</property><br />聽</bean><br /><br />==============<br />瀵逛簬涓婇潰鐧婚檰璇鋒眰鐨勫鐞嗗櫒鎴戝熼壌浜唖pringSide錛屽疄鐜扮殑鏂規(guī)硶濡備笅錛?br />package subject.web.filter;</p> <p>import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import javax.servlet.http.HttpSession;</p> <p>import org.acegisecurity.Authentication;<br />import org.acegisecurity.context.SecurityContext;<br />import org.acegisecurity.context.SecurityContextHolder;<br />import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter;<br />import org.acegisecurity.userdetails.UserDetails;</p> <p>import subject.Constants;<br />import subject.model.User;<br />import subject.service.UserManager;</p> <p>public class UserAuthenticationProcessingFilter extends<br />聽聽AuthenticationProcessingFilter<br />{<br />聽private UserManager userManager;</p> <p>聽public void setUserManager( UserManager userManager )<br />聽{<br />聽聽this.userManager = userManager;<br />聽}</p> <p>聽protected boolean requiresAuthentication( HttpServletRequest request ,<br />聽聽聽HttpServletResponse response )<br />聽{<br />聽聽boolean requiresAuth = super.requiresAuthentication( request, response );<br />聽聽HttpSession httpSession = null;<br />聽聽try<br />聽聽{<br />聽聽聽httpSession = request.getSession( false );<br />聽聽}<br />聽聽catch ( IllegalStateException ignored )<br />聽聽{<br />聽聽}<br />聽聽if ( httpSession != null )<br />聽聽{<br />聽聽聽if ( httpSession.getAttribute( Constants.USER ) == null )<br />聽聽聽{<br />聽聽聽聽if ( !requiresAuth )<br />聽聽聽聽{<br />聽聽聽聽聽SecurityContext sc = SecurityContextHolder.getContext();<br />聽聽聽聽聽Authentication auth = sc.getAuthentication();<br />聽聽聽聽聽if ( auth != null<br />聽聽聽聽聽聽聽&& auth.getPrincipal() instanceof UserDetails )<br />聽聽聽聽聽{<br />聽聽聽聽聽聽UserDetails ud = (UserDetails) auth.getPrincipal();//涓婇潰澹版槑鐨剆ql鏃犻潪灝辨槸瑕佸寘瑁呮垚榪欎釜瀵硅薄<br />聽聽聽聽聽聽User user = userManager.getUser( ud.getUsername() );浠庝笟鍔¢昏緫閲屾壘鍒扮敤鎴鳳紝鏀懼埌session閲?br />聽聽聽聽聽聽httpSession.setAttribute( Constants.USER, user );<br />聽聽聽聽聽}<br />聽聽聽聽}<br />聽聽聽}<br />聽聽}<br />聽聽return requiresAuth;<br />聽}<br />}<br /><br />鍦ㄧ湅鐪嬫垜鐨刲ogin.htm鍦ㄧ櫥闄嗘垚鍔熸椂鏄庝箞宸ヤ綔鐨勫惂錛?br />public class UserAction extends BaseAction<br />{<br />聽private UserManager mgr;</p> <p>聽public void setUserManager( UserManager mgr )<br />聽{<br />聽聽this.mgr = mgr;<br />聽}</p> <p>聽public ActionForward login( ActionMapping mapping , ActionForm form ,<br />聽聽聽HttpServletRequest request , HttpServletResponse response )<br />聽聽聽throws Exception<br />聽{<br />聽聽User user = (User) getSessionObject( request, Constants.USER );<br />聽聽ActionMessages msg = new ActionMessages();<br />聽聽if ( user != null )<br />聽聽{<br />聽聽聽return new ActionForward(聽 user.getType() + ".htm", true );鎴愬姛灝卞幓type.htm<br />聽聽}<br />聽聽else<br />聽聽{<br />聽聽聽String error = getParameter( request, Constants.ERROR );<br />聽聽聽if ( error != null )瀵逛簬涓嶅悓鐨勯敊璇紝閮藉姞浠ユ彁紺?br />聽聽聽{<br />聽聽聽聽if ( error.equalsIgnoreCase( "wrong" ) )<br />聽聽聽聽聽msg.add( "msg", new ActionMessage( "fail.login.wrong" ) );<br />聽聽聽聽else if ( error.equalsIgnoreCase( "too" ) )<br />聽聽聽聽聽msg.add( "msg", new ActionMessage( "fail.login.too" ) );<br />聽聽聽聽else if ( error.equalsIgnoreCase( "fail" ) )<br />聽聽聽聽聽msg.add( "msg", new ActionMessage( "fail.login.fail" ) );<br />聽聽聽聽else<br />聽聽聽聽聽msg.add( "msg", new ActionMessage( "fail.login.please" ) );<br />聽聽聽}<br />聽聽聽else<br />聽聽聽聽msg.add( "msg", new ActionMessage( "fail.login.please" ) );<br />聽聽}<br />聽聽saveErrors( request, msg );<br />聽聽return mapping.findForward( "fail" );<br />聽}</p> <p>}<br /><br />褰撶劧錛孉cegi闇瑕佷粙緇嶇殑涓滆タ澶浜嗭紝鎴戝彧鎶婃垜榪欐璁や負鏈夊繀瑕佽В閲婄殑涓滆タ鍐欏湪浜嗕笂闈㈣澶у鏉ュ弬鑰冿紝浣滀負鑳絞oogle鍒扮殑涓滆タ錛屾瘮濡傚浜庤璇佺殑鏂瑰紡榪樻湁寰堝錛屾垜灝辨病鏈夎緇嗙殑浠嬬粛錛屽湪瀛︿範(fàn)Acegi榪囩▼涓紝鎶婂畠鑷甫鐨勪緥瀛愬紕娓呮寰堝叧閿紝甯屾湜澶у涓璧峰涔?fàn)涓璧峰叡鍕夛紒<br /><br /></p> <img src ="http://m.tkk7.com/baputista/aggbug/65465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-08-24 10:56 <a href="http://m.tkk7.com/baputista/archive/2006/08/24/65465.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢ˋpplet瀹炵幇琛ㄨ揪寮忔眰鍊?/title><link>http://m.tkk7.com/baputista/archive/2006/08/09/62558.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Wed, 09 Aug 2006 06:19:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/08/09/62558.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/62558.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/08/09/62558.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/62558.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/62558.html</trackback:ping><description><![CDATA[ <p>灝戜簡嫻忚鍣ㄧ殑鏀寔錛孉pplet鍦ㄤ簰鑱旂綉涓婃案榪滀笉浼氭湁鑷繁鐨勮垶鍙幫紝鑰屾垜鍗村緢閰風(fēng)埍榪欑鎶婂簲鐢ㄧ▼搴忔斁鍒扮晫闈㈤噷鐨勪笢涓滐紝浠婂ぉ鏃犺亰錛屾妸浠ュ墠鍐欒繃鐨勪竴涓〃杈懼紡姹傚肩殑紼嬪簭錛岄『鎵嬫嬁Applet鏀瑰啓涓涓嬶紝鍐嶈澶у浣撻獙涓涓婱VC璁捐妯″紡鐨勫簲鐢ㄥ惂錛?br /><br /><br />=======================ExpressionModel===================<br /><br />/*<br />聽*榪欎釜灝辨槸琛ㄨ揪寮忕殑妯″瀷緇勪歡浜嗭紝瀹冪殑涓変釜灞炴э紝鍒嗗埆浠h〃浜嗗畠鐨勪腑鍒欒〃杈懼紡鍜屽彸鍒欒〃杈懼紡<br />聽*鑰岄偅涓や釜灞炴у垎鍒槸杈撳叆鐨勫紡瀛愬拰寰楀埌鐨勭粨鏋?br />聽*/<br />package expression;</p> <p>import java.text.*;<br />import java.util.*;</p> <p>public class ExpressionModel extends Observable<br />{<br />聽<br />聽private ArrayList<String> middle;<br />聽private ArrayList<String> right;<br />聽private String input, result;</p> <p>聽public ExpressionModel()<br />聽{<br />聽聽middle = new ArrayList<String>();<br />聽聽right = new ArrayList<String>();<br />聽}<br /><br />聽//鍒ゆ柇涓涓瓧絎︽槸涓嶆槸鎿嶄綔絎?br />聽private boolean isOperator( String op )<br />聽{<br />聽聽if( op.equals("+") || op.equals("-") || op.equals("%")<br />聽聽聽聽 ||op.equals("*")|| op.equals("/") || op.equals("(")<br />聽聽聽聽 ||op.equals(")") )<br />聽聽聽 return true;<br />聽聽聽 <br />聽聽else return false;<br />聽}<br /><br />聽//寰楀埌涓涓搷浣滅鐨勪紭鍏堢駭<br />聽private int priority( String op )<br />聽{<br />聽聽if( op.equals("+") || op.equals("-") || op.equals("(") ) <br />聽聽聽return 1;<br />聽聽else if( op.equals("*") || op.equals("/") || op.equals("%") ) <br />聽聽聽return 2;<br />聽聽else <br />聽聽聽return 0;<br />聽}<br />聽<br /><br />//璁$畻涓や釜鏁板拰涓涓繍綆楃寰楀埌鐨勭粨鏋?br />聽private String calTwoNumber( String op, String a, String b ) throws Exception<br />聽{<br />聽聽double x = Double.parseDouble( b );<br />聽聽double y = Double.parseDouble( a );<br />聽聽double z = 0;<br />聽聽<br />聽聽if( op.equals("+") ) <br />聽聽聽z = x + y;<br />聽聽else if( op.equals("-") ) <br />聽聽聽z = x - y;<br />聽聽else if( op.equals("*") ) <br />聽聽聽z = x * y;<br />聽聽else if( op.equals("/") ) <br />聽聽聽z = x / y;<br />聽聽else if( op.equals("%") ) <br />聽聽聽z = x % y;<br />聽聽else <br />聽聽聽z=0;<br />聽聽<br />聽聽return Double.toString( z );<br />聽}<br />聽<br />//灝嗘垜浠緭鍏ョ殑涓垯琛ㄨ揪寮忚漿鎹㈡垚閫嗘嘗鍏板紡<br />聽private void turnToRight()<br />聽{<br />聽聽MyStack stack = new MyStack();<br />聽聽String op;<br />聽聽int pos = 0;<br />聽聽<br />聽聽StringTokenizer st = new StringTokenizer(input,"+-*/%()",true);<br />聽聽<br />聽聽while( st.hasMoreElements() )<br />聽聽聽middle.add( st.nextToken() );<br />聽聽<br />聽聽while(true)<br />聽聽{<br />聽聽聽if( isOperator( middle.get(pos) ) )<br />聽聽聽{<br />聽聽聽聽if( stack.getTop() == -1 || (middle.get(pos)).equals("(") )<br />聽聽聽聽{<br />聽聽聽聽聽stack.push( middle.get(pos) );<br />聽聽聽聽}<br />聽聽聽聽else<br />聽聽聽聽{<br />聽聽聽聽聽if( (middle.get(pos)).equals(")") )<br />聽聽聽聽聽{<br />聽聽聽聽聽聽if( !(stack.top()).equals("(") )<br />聽聽聽聽聽聽{<br />聽聽聽聽聽聽聽op = stack.pop();<br />聽聽聽聽聽聽聽right.add(op);<br />聽聽聽聽聽聽}<br />聽聽聽聽聽}<br />聽聽聽聽聽else<br />聽聽聽聽聽{<br />聽聽聽聽聽聽if( priority(middle.get(pos)) <= priority(stack.top()) && stack.getTop() != -1 )<br />聽聽聽聽聽聽{<br />聽聽聽聽聽聽聽op = stack.pop();<br />聽聽聽聽聽聽聽if( !op.equals("(") ) <br />聽聽聽聽聽聽聽聽right.add(op);<br />聽聽聽聽聽聽}<br />聽聽聽聽聽聽stack.push( middle.get(pos) );<br />聽聽聽聽聽}<br />聽聽聽聽}<br />聽聽聽}<br />聽聽聽else <br />聽聽聽聽right.add( middle.get(pos) );<br />聽聽聽pos++;<br />聽聽聽if( pos >= middle.size() ) <br />聽聽聽聽break;<br />聽聽}<br />聽聽<br />聽聽while( stack.getTop() != -1 )<br />聽聽{<br />聽聽聽op = stack.pop();<br />聽聽聽right.add(op);<br />聽聽}<br />聽}</p> <p>聽private void calculate( String expression ) throws Exception<br />聽{<br />聽聽input = expression;<br />聽聽<br />聽聽turnToRight();<br />聽聽<br />聽聽MyStack stack = new MyStack();<br />聽聽String op1, op2, is = null;<br />聽聽Iterator<String> it = right.iterator();<br />聽聽<br />聽聽while(it.hasNext())<br />聽聽{<br />聽聽聽is = it.next();<br />聽聽聽if( isOperator(is) )<br />聽聽聽{<br />聽聽聽聽op1 = stack.pop();<br />聽聽聽聽op2 = stack.pop();<br />聽聽聽聽stack.push( calTwoNumber(is,op1,op2) );<br />聽聽聽}<br />聽聽聽else stack.push(is);<br />聽聽}<br />聽聽<br />聽聽NumberFormat form = NumberFormat.getInstance();<br />聽聽form.setMaximumFractionDigits(5);<br />聽聽<br />聽聽result = input + "=" + form.format( Double.parseDouble( stack.pop() ) );<br />聽聽<br />聽聽setChanged();<br />聽聽notifyObservers();<br />聽}<br />聽<br />聽public void input(String expression) throws Exception<br />聽{<br />聽聽calculate(expression);<br />聽聽middle.clear();<br />聽聽right.clear();<br />聽}<br />聽<br />聽public String getResult(){<br />聽聽return result;<br />聽}<br />聽<br />}<br /><br /><br /><br />===============MyStack==============<br /><br /><br />//鎴戜滑鐢ㄥ埌鐨勮嚜宸辯殑鍫嗘爤<br />package expression;</p> <p>import java.util.*;</p> <p>public class MyStack<br />{<br />聽<br />聽private LinkedList<String> list;<br />聽private int top;<br />聽<br />聽public MyStack() <br />聽{<br />聽聽list = new LinkedList<String>();<br />聽聽top = -1;<br />聽}<br />聽聽<br />聽public void push(String value)<br />聽{<br />聽聽top++;<br />聽聽list.addFirst(value);<br />聽}<br />聽<br />聽public String pop()<br />聽{<br />聽聽String temp = list.getFirst();<br />聽聽top--;<br />聽聽list.removeFirst();<br />聽聽return temp;<br />聽}<br />聽<br />聽public String top()<br />聽{<br />聽聽return list.getFirst();<br />聽}<br />聽<br />聽public int getTop()<br />聽{<br />聽聽return top;<br />聽}<br />聽<br />}<br /><br />===============ExpressionController========------<br /><br />//鎺у埗鍣ㄧ粍浠訛紝鍖呮嫭涓涓緭鍏ュ煙鍜屼袱涓寜綰?br /><br />package expression;</p> <p>import java.awt.*;<br />import java.awt.event.*;<br />import javax.swing.*;</p> <p>public class ExpressionController extends JPanel <br />{<br />聽<br />聽private ExpressionModel expressionModel;聽聽 <br />聽private JTextField calTextField;<br />聽<br />聽public ExpressionController( ExpressionModel controllerModel ) {<br />聽聽<br />聽聽super();<br />聽聽<br />聽聽expressionModel = controllerModel;<br />聽聽<br />聽聽calTextField = new JTextField( 15 );<br />聽聽JButton calButton = new JButton( "璁$畻" );<br />聽聽JButton delButton = new JButton( "鍙栨秷" );<br />聽聽<br />聽聽calButton.addActionListener(<br />聽聽聽new ActionListener() <br />聽聽聽{<br />聽聽聽聽public void actionPerformed( ActionEvent event ) <br />聽聽聽聽{<br />聽聽聽聽聽try <br />聽聽聽聽聽{<br />聽聽聽聽聽聽expressionModel.input( calTextField.getText() );<br />聽聽聽聽聽聽calTextField.setText("");<br />聽聽聽聽聽}<br />聽聽聽聽聽catch ( Exception exception ) <br />聽聽聽聽聽{<br />聽聽聽聽聽聽JOptionPane.showMessageDialog ( <br />聽聽聽聽聽聽聽ExpressionController.this, <br />聽聽聽聽聽聽聽"璇瘋緭鍏ユ湁鏁堣〃杈懼紡錛?, "閿欒", <br />聽聽聽聽聽聽聽JOptionPane.ERROR_MESSAGE );<br />聽聽聽聽聽聽calTextField.setText("");<br />聽聽聽聽聽}<br />聽聽聽聽}<br />聽聽聽}<br />聽聽);<br />聽聽<br />聽聽delButton.addActionListener(<br />聽聽聽new ActionListener() <br />聽聽聽{<br />聽聽聽聽public void actionPerformed( ActionEvent event ) <br />聽聽聽聽{<br />聽聽聽聽聽try <br />聽聽聽聽聽{<br />聽聽聽聽聽聽calTextField.setText("");<br />聽聽聽聽聽}<br />聽聽聽聽聽catch ( Exception exception ) <br />聽聽聽聽聽{<br />聽聽聽聽聽聽calTextField.setText("");<br />聽聽聽聽聽}<br />聽聽聽聽}<br />聽聽聽}<br />聽聽);<br />聽聽<br />聽聽setLayout( new FlowLayout() );<br />聽聽<br />聽聽add( calTextField );<br />聽聽add( calButton );<br />聽聽add( delButton );<br />聽<br />聽}<br />聽<br />聽public Dimension getPreferredSize() <br />聽{<br />聽聽return new Dimension( 320, 40 );<br />聽}<br />聽<br />聽public Dimension getMinimumSize() <br />聽{<br />聽聽return getPreferredSize();<br />聽}<br />聽<br />聽public Dimension getMaximumSize() <br />聽{<br />聽聽return getPreferredSize();<br />聽}<br />聽<br />}<br /><br /><br /><br />================ExpressionView ==================<br />//鐢ㄦ潵鏄劇ず緇撴灉鐨勮鍥?br />package expression;</p> <p>import java.awt.*;<br />import java.text.*;<br />import java.util.*;</p> <p>import javax.swing.*;<br />import javax.swing.border.*;</p> <p>public class ExpressionView extends JPanel implements Observer <br />{<br />聽<br />聽private ExpressionModel expressionModel;<br />聽private JLabel display = new JLabel();<br />聽<br />聽public ExpressionView( ExpressionModel model ) {<br />聽聽<br />聽聽if( model == null ) <br />聽聽聽throw new NullPointerException();<br />聽聽<br />聽聽expressionModel = model;<br />聽聽expressionModel.addObserver( this );<br />聽聽<br />聽聽add( display );<br />聽聽<br />聽聽setBackground( Color.white );<br />聽聽setBorder( new MatteBorder( 1, 1, 1, 1, Color.black ) );<br />聽聽<br />聽}<br />聽<br />聽public void update( Observable observable, Object object ) <br />聽{<br />聽聽display.setText( expressionModel.getResult() );<br />聽}<br />聽<br />聽public Dimension getPreferredSize() <br />聽{<br />聽聽return new Dimension( 320, 60 );<br />聽}<br />聽<br />聽public Dimension getMinimumSize() <br />聽{<br />聽聽return getPreferredSize();<br />聽}<br />聽<br />聽public Dimension getMaximumSize() <br />聽{<br />聽聽return getPreferredSize();<br />聽}<br />聽<br />聽<br />}<br /><br /><br /><br />===================Expression=====================<br /><br />//鏈鍚庢妸榪欎簺緇勮鍒拌繖閲屽惂<br /><br />package expression;</p> <p>import java.awt.*;<br />import java.awt.event.*;</p> <p>import javax.swing.*;<br />import javax.swing.border.*;</p> <p>public class Expression extends JApplet <br />{<br />聽聽 <br />聽public void init() <br />聽{<br />聽聽ExpressionModel model = new ExpressionModel();<br />聽聽ExpressionView view = new ExpressionView( model );<br />聽聽ExpressionController controller = new ExpressionController( model );<br />聽聽<br />聽聽Container contentPane = getContentPane();<br />聽聽contentPane.add( view, BorderLayout.CENTER );<br />聽聽contentPane.add( controller, BorderLayout.SOUTH );<br />聽聽<br />聽聽setSize( 320, 100 );<br />聽聽<br />聽}<br />聽聽 <br />}<br /><br />鎶婅繖鍑犱釜綾繪墦鍖呭埌涓涓猨ar鏂囦歡鍚庯紝鍐嶅垱寤轟釜htm鏂囦歡鏉ヨ闂畠<br /><br /><object<br />聽聽聽 classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"<br />聽聽聽 codebase = "<a <br />聽聽聽 WIDTH = 320 HEIGHT = 100 ><br />聽聽聽 <PARAM NAME = CODE VALUE = "expression.Expression" ><br />聽聽聽 <PARAM NAME = ARCHIVE VALUE = "expression.jar" ><br />聽聽聽 <param name = "type" value = "application/x-java-applet;version=1.5"><br />聽聽聽 <param name = "scriptable" value = "false"><br /></object><br /><br />榪欐牱灝辮浜嗭紝涓嶈繃浣犵殑鏈哄櫒闇瑕佸畨瑁卝re 5<br /><br /></p> <img src ="http://m.tkk7.com/baputista/aggbug/62558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-08-09 14:19 <a href="http://m.tkk7.com/baputista/archive/2006/08/09/62558.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>urlRewriteFilter鏉ュ疄鐜皍rl鐨勭編鍖?/title><link>http://m.tkk7.com/baputista/archive/2006/08/04/61850.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Fri, 04 Aug 2006 12:36:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/08/04/61850.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/61850.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/08/04/61850.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/61850.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/61850.html</trackback:ping><description><![CDATA[ <p>鍦╝ppfuse鐨剋eb.xml澹版槑鏂囦歡涓湁涓嬮潰鐨勭被浼煎0鏄庯細<br /><br /><filter><br />聽聽聽聽聽聽聽 <filter-name>rewriteFilter</filter-name><br />聽聽聽聽聽聽聽 <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class><br />聽聽聽聽聽聽聽 <init-param><br />聽聽聽聽聽聽聽聽聽聽聽 <param-name>logLevel</param-name><br />聽聽聽聽聽聽聽聽聽聽聽 <param-value>commons</param-value><br />聽聽聽聽聽聽聽 </init-param><br />聽聽聽 </filter></p> <p>聽<filter-mapping><br />聽聽聽聽聽聽聽 <filter-name>rewriteFilter</filter-name><br />聽聽聽聽聽聽聽 <url-pattern>/*</url-pattern><br />聽聽聽 </filter-mapping><br /><br /><br />瀹冩墍搴旂敤鍒扮殑鍖呭瓨鏀懼湪lib涓嬬殑urlrewrite-3.0-beta.jar<br /><br />瀹冨拰浠ヤ笂鐨勪袱閮ㄥ垎錛屼互鍙?web-inf/urlrewrite.xml鏋勬垚浜嗗url鍦板潃鐨勭編鍖?br /><br />鎵撳紑榪欎釜鏂囦歡錛屾垜浠彲浠ョ湅鍒頒互涓嬬殑澹版槑錛?br /><br /><?xml version="1.0" encoding="utf-8"?><br /><!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"<br />聽聽聽 "<a ></p> <p><!-- <a >https://urlrewrite.dev.java.net/manual/3.0</a> --><br /><urlrewrite><br />聽聽聽 <rule><br />聽聽聽聽聽聽聽 <from>^/user/(.*).html$</from><br />聽聽聽聽聽聽聽 <to type="forward">/editUser.html\?username=$1</to><br />聽聽聽 </rule><br /></urlrewrite><br /><br />榪欐牱緋葷粺灝卞畬鎴愪簡url鍦板潃鐨別ditUser.html?username=****鐨勭編鍖?br /><br />濡傚皢 <br />http://localhost/aaa/bbb.<a target="_blank"><font color="#000000">jsp</font></a>?id=99&name=abc <br />琛ㄧ幇涓猴細 <br />http://localhost/aaa/bbb/99_abc.html <br />閰嶇疆濡備笅錛?<br /><rule> <br /><from>/aaa/bbb/([0-9]+)_([a-z]+).html</from> <br /><to>/../aaa/bbb.<a target="_blank"><font color="#000000">jsp</font></a>?id=$1&name=$2</to> <br /></rule> <br /></p> <img src ="http://m.tkk7.com/baputista/aggbug/61850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-08-04 20:36 <a href="http://m.tkk7.com/baputista/archive/2006/08/04/61850.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍦⊿pring涓厤緗甽og4jhttp://m.tkk7.com/baputista/archive/2006/08/04/61614.html瑾頒即鎴戦棖钑?/dc:creator>瑾頒即鎴戦棖钑?/author>Thu, 03 Aug 2006 16:31:00 GMThttp://m.tkk7.com/baputista/archive/2006/08/04/61614.htmlhttp://m.tkk7.com/baputista/comments/61614.htmlhttp://m.tkk7.com/baputista/archive/2006/08/04/61614.html#Feedback0http://m.tkk7.com/baputista/comments/commentRss/61614.htmlhttp://m.tkk7.com/baputista/services/trackbacks/61614.html
<!--濡傛灉涓嶅畾涔墂ebAppRootKey鍙傛暟錛岄偅涔坵ebAppRootKey灝辨槸緙虹渷鐨?webapp.root"-->
聽<context-param>
聽聽<param-name>webAppRootKey</param-name>
聽聽<param-value>ssh.root</param-value>
聽</context-param>

榪欓噷鐨剆sh鏄痟ttp://localhost:8080/ssh/

鑰宺oot鏄郴緇熷紑鍙戠洰褰曚腑ssh/root

榪欐牱閰嶇疆鏂囦歡浠ュ強鏃ュ織鏂囦歡鍙互鍦╯pring鐨勫府鍔╀笅錛屾斁鍒板紑鍙戠幆澧冧腑鐨勪換鎰忎綅緗?br />
<!--鐢盨prng杞藉叆鐨凩og4j閰嶇疆鏂囦歡浣嶇疆-->
聽<context-param>
聽聽<param-name>log4jConfigLocation</param-name>
聽聽<param-value>/WEB-INF/log4j.properties</param-value>
聽</context-param>

鍦ㄨ繖閲屽畾浣嶉厤緗枃浠訛紝闇瑕佺殑鏄粠root寮濮嬬殑緇濆璺緞

<!--Spring榛樿鍒鋒柊Log4j閰嶇疆鏂囦歡鐨勯棿闅?鍗曚綅涓簃illisecond-->
聽<context-param>
聽聽<param-name>log4jRefreshInterval</param-name>
聽聽<param-value>60000</param-value>
聽</context-param>

<!--Spring log4j Config loader-->
聽<listener>
聽聽<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
聽</listener>

璁劇疆鐩戝惉鍣?br />


/////////////////
涔嬪悗鎴戜滑灝卞彲浠ラ厤緗甽og4j閰嶇疆鏂囦歡浜?br />
#鍏堣緗駭鍒?br />log4j.rootCategory=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#鍦ㄨ繖閲岃緗棩蹇楅渶瑕佸瓨鏀劇殑浣嶇疆錛岃繖閲岀殑鍙橀噺灝辨槸鎴戜滑鍦╳eb.xml閲岃緗殑
log4j.appender.file.File=${ssh.root}/WEB-INF/logs/subject.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=0
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
log4j.appender.file.layout.ConversionPattern=[ssh] %p %t %c - %m%n

鏈変簡涓婇潰鐨勯厤緗紝鎴戜滑灝卞彲浠ユ煡鐪嬫棩蹇椾簡錛?img src ="http://m.tkk7.com/baputista/aggbug/61614.html" width = "1" height = "1" />

]]>
UML鎵洸鏅強錛?/title><link>http://m.tkk7.com/baputista/archive/2006/06/26/55215.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Mon, 26 Jun 2006 12:47:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/06/26/55215.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/55215.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/06/26/55215.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/55215.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/55215.html</trackback:ping><description><![CDATA[ <img height="849" alt="鏈懡鍚?1.jpg" src="http://m.tkk7.com/images/blogjava_net/baputista/鏈懡鍚?1.jpg" width="756" border="0" /> <br /> <br />鐜板湪鎴戝悜澶у榪涜uml鎵洸鎬ф櫘鍙婏紝濡傛灉鎮(zhèn)ㄨ繕涓嶇煡閬搖ml鏄粈涔堬紝閭d箞鏈綆鍗曠殑錛岀被浼間笂闈㈢殑榪欐牱鐨勫浘灝辨槸uml鍥撅紝澶у璁頒綇浜嗭紝鍒窡杈藉畞鐭蟲補鍖栧伐澶у鐨勫紶鍥界帀榪欎釜鑰佸笀浼肩殑錛岃鎴戣鏂囬噷鐨勮繖涓浘鏄數(shù)璺浘錛屽洜姝よ鎴戠殑姣曚笟璁捐涓嶅悎鏍鹼紒<img src ="http://m.tkk7.com/baputista/aggbug/55215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-06-26 20:47 <a href="http://m.tkk7.com/baputista/archive/2006/06/26/55215.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣撻獙Struts(6)---闃繪闈炴硶鐨勭櫥闄嗘柟寮?/title><link>http://m.tkk7.com/baputista/archive/2006/05/26/48248.html</link><dc:creator>瑾頒即鎴戦棖钑?/dc:creator><author>瑾頒即鎴戦棖钑?/author><pubDate>Thu, 25 May 2006 16:48:00 GMT</pubDate><guid>http://m.tkk7.com/baputista/archive/2006/05/26/48248.html</guid><wfw:comment>http://m.tkk7.com/baputista/comments/48248.html</wfw:comment><comments>http://m.tkk7.com/baputista/archive/2006/05/26/48248.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/baputista/comments/commentRss/48248.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/baputista/services/trackbacks/48248.html</trackback:ping><description><![CDATA[ <p>濡傛灉鐢ㄦ埛鐩存帴杈撳叆浜嗗湴鍧錛屼笉涔熷彲浠ョ洿鎺ヨ闂悧錛熺悊璁轟笂鏄紝鎴戜滑鍙互鍔犲叆session榪涜璺熻釜錛屼互鏉滅粷姝ょ被鍨嬩簨浠跺彂鐢燂紝鎴戜滑鏄笉鏄鎶婃瘡嬈″session鐨勫垽鏂緷嬈℃嫹鍒版瘡涓〉閲屽憿錛屼箣鍚庝笅嬈¢渶瑕侀獙璇佺殑SESSION鎹簡錛屾垜浠啀鎹紵澶氮璐逛簡錛屾垜鐨勫仛娉曟槸鍋氫簡涓涓嚜瀹氫箟鏍囩錛屾潵瑙e喅榪欎釜闂銆?br /><br /><font color="#ff0000">import javax.servlet.jsp.JspException;<br />import javax.servlet.jsp.tagext.TagSupport;</font></p> <p> <font color="#ff0000">public class CheckTag extends TagSupport<br />{<br />聽聽聽 private static final long serialVersionUID = 879137944441282895L;<br />聽聽聽 private String check = "";<font color="#000000">//鐢ㄦ潵楠岃瘉鐨勫彉閲?/font><br />聽聽聽 private String url = "index.jsp";<font color="#000000">//鍑虹幇閿欒瑕佸幓鐨勯〉闈?/font><br />聽聽聽 private String msg = "";<font color="#000000">//閿欒鐨勬彁紺?/font><br />聽聽聽 private String scope = "";<font color="#000000">//瑕佷弗鏁村彉閲忕殑鑼冨洿</font><br />聽聽聽 private String to = "go";</font> <font color="#000000">//濡傛灉楠岃瘉澶辮觸錛屾槸灝嗛〉闈㈠悗閫錛岃繕鏄畾浣嶅埌鍝噷錛?/font> </p> <p> <font color="#ff0000">聽聽聽 public String getTo()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return to;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void setTo( String to )<br />聽聽聽 {<br />聽聽聽聽聽聽聽 this.to = to;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public String getMsg()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return msg;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void setMsg( String msg )<br />聽聽聽 {<br />聽聽聽聽聽聽聽 this.msg = msg;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public String getScope()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return scope;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void setScope( String scope )<br />聽聽聽 {<br />聽聽聽聽聽聽聽 this.scope = scope;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public String getCheck()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return check;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void setCheck( String check )<br />聽聽聽 {<br />聽聽聽聽聽聽聽 this.check = check;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public String getUrl()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return url;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void setUrl( String url )<br />聽聽聽 {<br />聽聽聽聽聽聽聽 this.url = url;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public int doStsrtTag() throws JspException<br />聽聽聽 {<br />聽聽聽聽聽聽聽 return SKIP_BODY;<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public int doEndTag() throws JspException<br />聽聽聽 {<br />聽聽聽聽聽聽聽 boolean valid = false;<font color="#000000">//鍏堣涓轟笉鍙敤</font><br />聽聽聽聽聽聽聽 if ( scope.equalsIgnoreCase( "request" ) )<font color="#000000">//濡傛灉瑕佹鏌equest鑼冨洿</font><br />聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 valid = CheckUtil.checkRequestAttribute( pageContext.getRequest(),<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 check );<br />聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽 else if ( scope.equalsIgnoreCase( "session" ) )<br />聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 valid = CheckUtil.checkSession( pageContext.getSession(), check );<br />聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽 else if ( scope.equalsIgnoreCase( "parameter" ) )<br />聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 valid = CheckUtil.checkParameter( pageContext.getRequest(), check );<br />聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽 else if ( scope.equalsIgnoreCase( "application" ) )<br />聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽 valid = CheckUtil.checkApp( pageContext.getServletContext(), check );<br />聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽 if ( valid ) return EVAL_PAGE;<font color="#000000">//濡傛灉鍙敤灝辯戶緇墽琛屾欏電殑鍏朵綑閮ㄥ垎</font><br />聽聽聽聽聽聽聽 else<br />聽聽聽聽聽聽聽 {<font color="#000000">//鍚﹀垯錛屽搱鍝?/font><br />聽聽聽聽聽聽聽聽聽聽聽 try<br />聽聽聽聽聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( to.equalsIgnoreCase( "go" ) ) <font color="#000000">//鐜板湪澶辮觸浜嗭紝灝辯湅鎬庝箞鍥炲埌浣犺鍒扮殑鍦版柟</font><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HtmlUtil.callParentGo(<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 pageContext.getOut(), msg, url );<font color="#000000">//灝嗘祻瑙堝櫒瀹氫綅鍒癠RL聽</font><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HtmlUtil.callBack( pageContext.getOut(), msg );<font color="#000000">//鍚庨涓涓嬮〉闈㈡潵闃繪</font><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return SKIP_PAGE;<font color="#000000">//璺寵繃欏甸潰鐨勫叾浣欓儴鍒嗭紝涓嶆墽琛?/font><br />聽聽聽聽聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽聽聽聽聽 catch ( Exception e )<br />聽聽聽聽聽聽聽聽聽聽聽 {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 throw new JspException( e.toString() );<br />聽聽聽聽聽聽聽聽聽聽聽 }<br />聽聽聽聽聽聽聽 }<br />聽聽聽 }</font> </p> <p> <font color="#ff0000">聽聽聽 public void release()<br />聽聽聽 {<br />聽聽聽聽聽聽聽 super.release();<br />聽聽聽聽聽聽聽 check = "";<br />聽聽聽聽聽聽聽 url = "";<br />聽聽聽聽聽聽聽 msg = "";<br />聽聽聽聽聽聽聽 scope = "";<br />聽聽聽 }<br />}<br /><br /><br />涓嬮潰鏄敤鍒扮殑htmlUtil閮ㄥ垎錛?br /><br />public static void callParentGo( Writer out, String msg, String url )<br />聽聽聽聽聽聽聽聽聽聽聽 throws IOException<br />聽聽聽 {<br />聽聽聽聽聽聽聽 out.write( "<script language=\"javascript\">" );<br />聽聽聽聽聽聽聽 out.write( "alert(\"" + msg + "\");" );<br />聽聽聽聽聽聽聽 out.write( "parent.location.href=\"" + url + "\";" );<br />聽聽聽聽聽聽聽 out.write( "</script>" );<br />聽聽聽 }<br />public static void callBack( Writer out, String msg ) throws IOException<br />聽聽聽 {<br />聽聽聽聽聽聽聽 out.write( "<script language=\"javascript\">" );<br />聽聽聽聽聽聽聽 out.write( "alert(\"" + msg + "\");" );<br />聽聽聽聽聽聽聽 out.write( "parent.history.back();" );<br />聽聽聽聽聽聽聽 out.write( "</script>" );<br />聽聽聽 }<br /><br /><br />鍐欎釜check.tld閮ㄧ講鍚э紝<br /><br /><?xml version = "1.0"?><br /><taglib><br />聽<tlibversion>1.0</tlibversion><br />聽<jspversion>1.1</jspversion><br />聽<tag><br />聽聽<name>check</name><br />聽聽<tag-class>com.boya.subject.util.CheckTag</tag-class><br />聽聽<attribute><br />聽聽聽<name>check</name><br />聽聽聽<required>true</required><br />聽聽</attribute><br />聽聽<attribute><br />聽聽聽<name>url</name><br />聽聽聽<required>false</required><br />聽聽</attribute><br />聽聽<attribute><br />聽聽聽<name>msg</name><br />聽聽聽<required>true</required><br />聽聽</attribute><br />聽聽<attribute><br />聽聽聽<name>scope</name><br />聽聽聽<required>true</required><br />聽聽</attribute><br />聽聽<attribute><br />聽聽聽<name>to</name><br />聽聽聽<required>false</required><br />聽聽</attribute><br />聽</tag><br /></taglib><br /><br /><br />浣?/font> <font color="#000000">鍙鍦ㄦ瘡涓〉闈㈤噷鍐欎笅榪欎釜灝卞彲浠ュ垽瀹氱敤鎴鋒槸鍚︾櫥闄嗕簡<br /><br /><%@ taglib prefix="boya" uri="/WEB-INF/check.tld" %><br /><boya:check check="admin" msg="綆$悊鍛樺皻鏈櫥闄嗭紝璇風(fēng)櫥闄嗭紒" scope ="session"/><br /><br />濡傛灉娌℃湁鐧婚檰閭d箞錛屼細鑷姩鎻愮ず鍒伴欏電櫥闄嗭紝涓嶉敊錛屽緢瀹岀編鍚э紵<br /><br />褰撶劧涓嶆槸錛屾?zhèn)ㄥ彲浠ユ彁鍑烘?zhèn)ㄧ殑瑙佽В銆傘傘傘?/font> </p> <img src ="http://m.tkk7.com/baputista/aggbug/48248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/baputista/" target="_blank">瑾頒即鎴戦棖钑?/a> 2006-05-26 00:48 <a href="http://m.tkk7.com/baputista/archive/2006/05/26/48248.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣撻獙Struts(5)---浠庡垎欏典綋浼歁VChttp://m.tkk7.com/baputista/archive/2006/05/26/48246.html瑾頒即鎴戦棖钑?/dc:creator>瑾頒即鎴戦棖钑?/author>Thu, 25 May 2006 16:29:00 GMThttp://m.tkk7.com/baputista/archive/2006/05/26/48246.htmlhttp://m.tkk7.com/baputista/comments/48246.htmlhttp://m.tkk7.com/baputista/archive/2006/05/26/48246.html#Feedback0http://m.tkk7.com/baputista/comments/commentRss/48246.htmlhttp://m.tkk7.com/baputista/services/trackbacks/48246.html澶у閮界煡閬揝truts鏄竴縐嶅熀浜嶮VC鐨勭粨鏋勶紝鑰岃繖涓狹VC鍙堟庝箞鏍風(fēng)悊瑙e憿錛熶功涓婇槓榪扮殑涓鑸兘寰堣緇嗭紝鑰屾垜鐨勭悊瑙e緢鐩寸櫧錛屾垜浠彲浠ユ妸涓氬姟閫昏緫鏀懼埌姣忎釜JSP欏甸潰涓紝褰撲綘璁塊棶涓涓狫SP欏甸潰鐨勬椂鍊欙紝灝卞彲浠ョ湅鍒頒笟鍔¢昏緫寰楀埌鐨勭粨鏋滐紝鑰屾妸榪欎簺涓氬姟閫昏緫涓嶩TML浠g爜澶規(guī)潅鍒頒簡涓璧鳳紝涓瀹氫細閫犳垚涓浜涗笉蹇呰鐨勯夯鐑︼紝鍙互涓嶅彲浠ヤ笉璁╂垜浠殑涓氬姟閫昏緫鍜岄偅浜汬TML浠g爜澶規(guī)潅鍒頒竴璧峰憿錛熷灝戝緱鎼鏉備竴浜涳紝閭e共鑴嗭紝灝介噺灝戠殑鍚э紝浜庢槸鎴戜滑鍙互灝濊瘯鐫鎶婁笟鍔¢昏緫鐨勮繍綆楄繃紼嬫斁鍒頒竴涓狝ction閲岋紝鎴戜滑璁塊棶榪欎釜Action錛屼箣鍚嶢ction鎵ц涓氬姟閫昏緫錛屾渶鍚庢妸涓氬姟閫昏緫鐨勭粨鏋滄斁鍒皉equest涓紝騫跺皢欏甸潰璇鋒眰杞彂緇欎竴涓敤浜庢樉紺虹粨鏋滅殑jsp欏甸潰錛岃繖鏍鳳紝榪欎釜欏甸潰灝卞彲浠ュ皯鍘誨緢澶氱殑涓氬姟閫昏緫錛岃屽彧鏄崟綰殑鍘繪樉紺轟竴浜涗笟鍔¢昏緫璁$畻緇撴灉鐨勯〉闈㈣屽凡銆傝繖鏃剁殑Action縐頒負鎺у埗鍣紝JSP欏靛彲浠ュ彨鍋氳鍥句簡錛岃屾帶鍒跺櫒鎿嶄綔鐨勪笟鍔″璞★紝鏃犻潪灝卞簲璇ュ彨妯″瀷浜嗭紒

浠庝笂闈㈢殑璇濓紝鎴戜滑鏉ュ垎鏋愪竴涓嬪綋鎴戜滑瑕佸仛涓涓垎欏墊椂鎵闇瑕佺殑閮ㄥ垎錛岃屽湪榪欎箣鍓嶏紝鎴戜滑鍏堢湅鐪嬩粬浠殑鎵ц榪囩▼鍚э紝棣栧厛鎴戜滑絎竴嬈¤姹傝闂竴涓〉闈紝瀹冧細鎶婃墍鏈夎褰曠殑鍓峃鏉℃樉紺虹粰鎴戜滑錛屼箣鍚庤綆楁槸鍚︽湁涓嬩竴欏碉紝絳夌被浼肩殑淇℃伅錛屽綋鎴戜滑鐐逛笅涓欏電殑鏃跺欙紝灝辮幏鍙栦笅涓欏電殑淇℃伅錛屾垜浠繕鍙互娣誨姞涓涓悳绱紝姣斿鎴戜滑鐢ㄤ簬鏄劇ず瀛︾敓鐨勶紝鍙互瀹夊鐢熷鍚嶆煡鎵撅紝瀛﹀彿鏌ユ壘錛岀彮綰ф煡鎵俱傝屽浜庢樉紺虹殑瀵硅薄錛屾垜浠竴鑸篃閮戒細灝佽涓簀avabean錛屾墍浠ョ敤浜庢斁緗煡璇㈢粨鏋滅殑瀹瑰櫒鏄笉瀹氱殑錛岃岃繖鏃訛紝鎴戜滑灝遍渶瑕佺敤娉涘瀷鏉ユ彁鍗囨垜浠殑浠g爜鏁堢巼錛?br />
棣栧厛鎴戜滑鍐欎竴涓敤浜庡垎欏墊樉紺虹殑javabean錛?br />
package com.boya.subject.model;

import java.util.Vector;

public class Page<E>
{
聽聽聽 private int current = 1;聽聽聽聽聽聽聽 //褰撳墠欏?br />聽聽聽 private int total = 0;聽聽聽聽聽聽聽聽 //鎬昏褰曟暟
聽聽聽 private int pages = 0;聽聽聽 //鎬婚〉鏁?/font>
聽聽聽 private int each = 5;聽聽聽聽聽聽聽聽 //姣忛〉鏄劇ず
聽聽聽 private int start = 0;聽聽聽聽聽 //姣忛〉鏄劇ず鐨勫紑濮嬭褰曟暟
聽聽聽 private int end = 0;聽聽聽聽聽聽 //姣忛〉鏄劇ず鐨勭粨鏉熻褰曟暟
聽聽聽 private boolean next = false;聽聽聽聽聽聽聽 //鏄惁鏈変笅涓欏?/font>
聽聽聽 private boolean previous = false;聽 //鏄惁鏈変笂涓欏?/font>
聽聽聽 private Vector<E> v = null;聽聽聽
//瀛樻斁鏌ヨ緇撴灉鐨勫鍣?/font>

聽聽聽 public Page( Vector<E> v ,int per)
聽聽聽 {
聽聽聽聽聽聽聽 this.v = v;
聽聽聽聽聽聽聽 each = per;
聽聽聽聽聽聽聽 total = v.size();聽聽 //瀹瑰櫒鐨勫ぇ灝忓氨鏄葷殑璁板綍鏁?/font>
聽聽聽聽聽聽聽 if ( total % each == 0 )
聽聽聽聽聽聽聽聽聽聽聽 pages = total / each;聽聽聽聽聽聽 //璁$畻鎬婚〉鏁?/font>
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽 pages = total / each + 1;
聽聽聽聽聽聽聽 if ( current >= pages )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = false;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if ( total < each )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 start = 0;
聽聽聽聽聽聽聽聽聽聽聽 end = total;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 start = 0;
聽聽聽聽聽聽聽聽聽聽聽 end = each;
聽聽聽聽聽聽聽 }
聽聽聽 }
聽聽聽
聽聽聽 public int getCurrent()
聽聽聽 {
聽聽聽聽聽聽聽 return current;
聽聽聽 }

聽聽聽 public void setCurrent( int current )
聽聽聽 {
聽聽聽聽聽聽聽 this.current = current;
聽聽聽 }

聽聽聽 public int getEach()
聽聽聽 {
聽聽聽聽聽聽聽 return each;
聽聽聽 }

聽聽聽 public void setEach( int each )
聽聽聽 {
聽聽聽聽聽聽聽 this.each = each;
聽聽聽 }

聽聽聽 public boolean isNext()
聽聽聽 {
聽聽聽聽聽聽聽 return next;
聽聽聽 }

聽聽聽 public void setNext( boolean next )
聽聽聽 {
聽聽聽聽聽聽聽 this.next = next;
聽聽聽 }

聽聽聽 public boolean isPrevious()
聽聽聽 {
聽聽聽聽聽聽聽 return previous;
聽聽聽 }

聽聽聽 public void setPrevious( boolean previous )
聽聽聽 {
聽聽聽聽聽聽聽 this.previous = previous;
聽聽聽 }

聽聽聽 public int getEnd()
聽聽聽 {
聽聽聽聽聽聽聽 return end;
聽聽聽 }

聽聽聽 public int getPages()
聽聽聽 {
聽聽聽聽聽聽聽 return pages;
聽聽聽 }

聽聽聽 public int getStart()
聽聽聽 {
聽聽聽聽聽聽聽 return start;
聽聽聽 }

聽聽聽 public int getTotal()
聽聽聽 {
聽聽聽聽聽聽聽 return total;
聽聽聽 }

聽//鑾峰彇涓嬩竴欏電殑瀵硅薄浠?/font>聽聽

public Vector<E> getNextPage()
聽聽聽 {
聽聽聽聽聽聽聽 current = current + 1;
聽聽聽聽聽聽聽 if ( (current - 1) > 0 )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 previous = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 previous = false;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if ( current >= pages )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = false;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 Vector<E> os = gets();
聽聽聽聽聽聽聽 return os;
聽聽聽 }

聽//鑾峰彇涓婁竴欏?/font>

聽聽聽 public Vector<E> getPreviouspage()
聽聽聽 {
聽聽聽聽聽聽聽 current = current - 1;
聽聽聽聽聽聽聽 if ( current == 0 )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 current = 1;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if ( current >= pages )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = false;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 next = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if ( (current - 1) > 0 )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 previous = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 previous = false;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 Vector<E> os = gets();
聽聽聽聽聽聽聽 return os;
聽聽聽 }

聽//涓寮濮嬭幏鍙栫殑

聽聽聽 public Vector<E> gets()
聽聽聽 {
聽聽聽聽聽聽聽 if ( current * each < total )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 end = current * each;
聽聽聽聽聽聽聽聽聽聽聽 start = end - each;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 end = total;
聽聽聽聽聽聽聽聽聽聽聽 start = each * (pages - 1);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 Vector<E> gets = new Vector<E>();
聽聽聽聽聽聽聽 for ( int i = start; i < end; i++ )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 E o = v.get( i );
聽聽聽聽聽聽聽聽聽聽聽 gets.add( o );
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 return gets;
聽聽聽 }
}



聽鑰屽浜庢寜涓嶅悓鎼滅儲錛屾垜浠渶瑕佷竴涓狥ormBean錛屼竴鑸殑鎼滅儲錛岄兘鏄ā緋婃悳绱紝鎼滅儲涓ぇ姒傦紝鑰屼笖杈撳叆鐨勪俊鎭腑鏂囩殑姣旈噸涔熶細寰堝ぇ錛屾墍浠ワ紝鎴戞妸瀵逛腑鏂囧瓧絎︾殑杞崲鏀懼埌浜嗚繖涓狟EAN閲岋紝鍦ㄨ繘琛宻elect * from * where like榪欐牱鐨勬煡璇㈡椂錛屽鏋滄槸like ''榪欐牱灝卞彲浠ュ緱鍒版墍鏈夌殑璁板綍浜嗭紝鎴戜究鐢ㄨ繖涓潵瀵逛粯娌℃湁杈撳叆鏌ヨ鍏抽敭瀛楃殑鎯呭喌錛岃宭ike '%*%'鍙互鍖歸厤鍏抽敭瀛楋紝鑰?%涔熷湪榪欓噷娣誨姞涓婁簡錛?br />
package com.boya.subject.view;

import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class SearchForm extends ActionForm
{
聽聽聽 private static final long serialVersionUID = 1L;
聽聽聽 private String key;
聽聽聽 private String from;

聽聽聽 public String getFrom()
聽聽聽 {
聽聽聽聽聽聽聽 return from;
聽聽聽 }

聽聽聽 public void setFrom( String from )
聽聽聽 {
聽聽聽聽聽聽聽 this.from = from;
聽聽聽 }

聽聽聽 聽 public void reset( ActionMapping mapping, HttpServletRequest req )
聽聽聽 {
聽聽聽聽聽聽聽 this.key = null;
聽聽聽 }

聽聽聽 public String getKey()
聽聽聽 {
聽聽聽聽聽聽聽 return key;
聽聽聽 }

聽聽聽 public void setKey( String key )
聽聽聽 {
聽聽聽聽聽聽聽 try
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 key = new String( key.getBytes( "iso-8859-1" ), "gb2312" );
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch ( UnsupportedEncodingException e )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 e.printStackTrace();
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 this.key = "%" + key + "%";
聽聽聽 }
聽聽聽
聽聽聽 public String getAny(){
聽聽聽聽聽聽聽 return "%%";
聽聽聽 }
}
鍓嶆湡閮藉仛濂戒簡錛屾垜鐜板湪灝辮寮濮嬭闂繖涓狝ction浜嗭紝鍙槸榪欎釜鎺у埗鍣ㄨ繕娌″啓鍛紒榪欓噷鏄唬鐮?/font>

public class AdminUserAction extends AdminAction
{
聽聽聽 private Vector<Student> ss; //鐢ㄦ潵瑁呯粨鏋滅殑瀹瑰櫒
聽聽聽 private Page<Student> ps;
//鍒嗛〉鏄劇ず鐨凱AGE瀵硅薄

聽聽聽 protected ActionForward executeAction( ActionMapping mapping,
聽聽聽聽聽聽聽聽聽聽聽 ActionForm form, HttpServletRequest req, HttpServletResponse res )
聽聽聽聽聽聽聽聽聽聽聽 throws Exception
聽聽聽 {
聽聽聽聽聽聽聽 if ( !isSupper( req ) )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 return notSupper( res );//濡傛灉涓嶆槸瓚呯駭綆$悊鍛樻庝箞鍔烇紵
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 Service service = getService();//鑾峰彇涓氬姟閫昏緫
聽聽聽聽聽聽聽 SearchForm sf = (SearchForm) form;//鑾峰彇鎼滅儲FORM
聽聽聽聽聽聽聽 String op = req.getParameter( "op" );//鑾峰彇鐢ㄦ埛瀵歸〉闈㈢殑鎿嶄綔
聽聽聽聽聽聽聽 String search = req.getParameter( "search" );//鏄惁鎵ц浜嗘悳绱?/font>
聽聽聽聽聽聽聽 Vector<Student> temp = null;聽//鐢ㄤ簬瀛樻斁涓存椂鍙嶉緇欑敤鎴風(fēng)殑緇撴灉瀹瑰櫒
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( op == null )//濡傛灉鐢ㄦ埛娌℃湁鎵ц涓?涓嬩竴欏電殑鎿嶄綔
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( search != null )//鐢ㄦ埛濡傛灉鎵ц浜嗘悳绱?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( sf.getFrom().equalsIgnoreCase( "class" ) )//濡傛灉鏄寜鐝駭鏌ユ壘
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ss = service.getAllStudentBySchoolClassForAdmin( sf
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 .getKey() );//鑾峰彇from鐨勫叧閿瓧
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else if ( sf.getFrom().equalsIgnoreCase( "name" ) )//濡傛灉鏄寜濮撳悕鏌ユ壘
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ss = service.getAllStudentByNameForAdmin( sf
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 .getKey() );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else if ( sf.getFrom().equalsIgnoreCase( "user" ) )//濡傛灉鏄寜鐢ㄦ埛鍚嶆煡鎵?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ss = service.getAllStudentByUserForAdmin( sf
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 .getKey() );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ss = service.getAllStudentBySnForAdmin( sf.getKey() );//鎸夊鍙鋒煡鎵?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 form.reset( mapping, req );//閲嶇疆鎼滅儲琛ㄥ崟
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ss = service.getAllStudentForAdmin( sf.getAny() ); //鐢ㄦ埛鏈墽琛屾煡鎵懼氨鏄劇ず鍏ㄩ儴錛?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( ss != null && ss.size() != 0 )//濡傛灉鏌ユ壘涓嶄負絀猴紝鏈夎褰曪紝閭e氨鍒涘緩涓涓垎欏靛璞?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ps = new Page<Student>( ss, 10 );//灝嗘煡璇㈢粨鏋滃拰姣忛〉鏄劇ず璁板綍鏁頒綔涓哄弬鏁版瀯浠跺璞?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 temp = ps.gets();//騫惰幏鍙栫涓欏?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else//濡傛灉鐢ㄦ埛鎵ц浜嗘搷浣?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( op.equals( "next" ) )//鎿嶄綔鏄笅涓欏?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 temp = ps.getNextPage();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if ( op.equals( "previous" ) )//鎿嶄綔鏄笂涓欏?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 temp = ps.getPreviouspage();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 req.setAttribute( "search", SelectUtil.studentSearch() );//鎶婃悳绱㈢敤鍒扮殑琛ㄥ崟鏀懼埌request涓?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 req.setAttribute( "students", temp );//璇ラ〉鏄劇ず鐨勫鐢?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 req.setAttribute( "page", ps );//鍒嗛〉瀵硅薄
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return mapping.findForward( "student" );//璇鋒眰杞彂
聽聽聽 }
}


鐢ㄥ埌SelectUtil涓殑浠g爜濡備笅錛?br />/**
聽聽聽聽 * 鑾峰彇瀛︾敓鏌ユ壘綾誨埆鐨剆elect
聽聽聽聽 * @return 瀛︾敓鏌ユ壘綾誨埆
聽聽聽聽 * 2006-5-17 9:06:12
聽聽聽聽 */
聽聽聽 public static Vector<LabelValueBean> studentSearch()
聽聽聽 {
聽聽聽聽聽聽聽 Vector<LabelValueBean> s = new Vector<LabelValueBean>();
聽聽聽聽聽聽聽 s.add( new LabelValueBean( "鎸夊鍙鋒煡鎵?, "sn" ) );
聽聽聽聽聽聽聽 s.add( new LabelValueBean( "鎸夌彮綰ф煡鎵?, "class" ) );
聽聽聽聽聽聽聽 s.add( new LabelValueBean( "鎸夊鍚嶆煡鎵?, "name" ) );
聽聽聽聽聽聽聽 s.add( new LabelValueBean( "鎸夌敤鎴鋒煡鎵?, "user" ) );
聽聽聽聽聽聽聽 return s;
聽聽聽 }
鍦ㄧ湅欏甸潰瑙嗗浘鍓嶅厛璁╂垜浠湅鐪婱odel鍚э紝

public class Student extends User
{
聽聽聽 private String sn;
聽聽聽 private SchoolClass schoolClass;
//榪欓噷鐨勭彮綰у仛涓轟簡涓縐嶅璞★紝鎴戜滑鍦ㄨ鍥炬樉紺虹殑鏃跺欏氨鏈変簡涓灞傚祵濂?/font>

聽聽聽 public SchoolClass getSchoolClass()
聽聽聽 {
聽聽聽聽聽聽聽 return schoolClass;
聽聽聽 }

聽聽聽 public void setSchoolClass( SchoolClass schoolClass )
聽聽聽 {
聽聽聽聽聽聽聽 this.schoolClass = schoolClass;
聽聽聽 }

聽聽聽 public String getSn()
聽聽聽 {
聽聽聽聽聽聽聽 return sn;
聽聽聽 }

聽聽聽 public void setSn( String sn )
聽聽聽 {
聽聽聽聽聽聽聽 this.sn = sn;
聽聽聽 }

聽聽聽 public String getType()
聽聽聽 {
聽聽聽聽聽聽聽 return "student";
聽聽聽 }
}
鍦ㄤ簡瑙d簡model鍚庯紝榪樻槸鐪嬬湅瑙嗗浘鍚э紝


鍏堟斁涓煡璇㈣〃鍗曪細

<html:javascript dynamicJavascript="true" staticJavascript="true" formName="SearchForm" />
<html:form action="/adminUser.do?search=true" onsubmit="return validateSearchForm(this)">

<html:select property="from" >
<html:options collection="search" property="value" labelProperty="label" />
</html:select>

<html:text property="key" size="16" maxlength="16"/>

<html:image src="images/search.gif"/>

</html:form>

鐢變簬妯″瀷涓湁宓屽錛岄偅涔堟垜浠氨灝嗙敤鍒癗ested鏍囩錛屽叾瀹炴病鏈夊祵濂椾篃鍙互浣跨敤榪欎釜鏍囩錛屼笅闈㈢殑鏄敤浜庢樉紺轟俊鎭殑錛岀敤榪卡鍣ㄨ繘琛岄亶鍘唕equest鑼冨洿鐨剆tudents錛屼綘涓嶅畨鎺掕寖鍥達紝浠栦細鑷姩鎵懼埌鐨勶紝騫舵妸姣忔閬嶅巻鐨勫璞¤搗鍚嶅彨student錛屽茍浣滀負灞傛鐨勬牴鍏冪礌錛?/font>

<logic:iterate id="student" name="students">

<nested:root name="student">

<nested:nest property="schoolClass"><nested:write property="schoolClass"/></nested:nest>//瀵繪壘浜唖tudent鐨剆choolClass灞炴у璞$殑schoolClass宓屽

<nested:write property="name"/>聽聽聽聽聽 //student鐨勫悕瀛?/font>

<nested:link page="/adminActions.do?method=deleteStudent" paramId="id" paramProperty="id" onclick="return window.confirm('鎮(zhèn)ㄧ湡鐨勮鍒犻櫎鍚楋紵')">鍒犻櫎</nested:link>

</nested:root>

榪欓噷鏄樉紺哄垎欏靛璞$殑錛?/font>

絎?lt;bean:write name="page" property="current" />欏?br />鍏?lt;bean:write name="page" property="pages" />欏?br />聽聽聽聽聽聽聽 //涓婁竴欏墊槸鍚﹀瓨鍦?/font>
聽聽聽聽聽聽聽聽<logic:equal name="page" property="previous" value="true">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<html:link page="/adminUser.do?part=student&op=previous">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<font color="6795b4">涓婁竴欏?lt;/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</html:link>&nbsp;&nbsp;聽
聽聽聽聽聽聽聽 </logic:equal>
聽聽聽聽聽聽聽聽<logic:notEqual name="page" property="previous" value="true">涓婁竴欏?amp;nbsp;&nbsp;聽 </logic:notEqual>
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 //涓嬩竴欏墊槸鍚﹀瓨鍦?/font>
聽聽聽聽聽聽聽聽聽<logic:equal name="page" property="next" value="true">
聽聽聽聽聽聽聽聽聽<html:link page="/adminUser.do?part=student&op=next">
聽聽聽聽聽聽聽聽聽聽<font color="6795b4">涓嬩竴欏?lt;/font>
聽聽聽聽聽聽聽聽聽</html:link>&nbsp;&nbsp;聽 </logic:equal>
聽聽聽聽聽聽聽聽<logic:notEqual name="page" property="next" value="true">涓嬩竴欏?amp;nbsp;&nbsp;聽 </logic:notEqual>
聽聽聽聽聽聽聽聽

鍏辨湁<bean:write name="page" property="total" />鏉℃暟鎹?br />
</logic:iterate>

鍒拌繖閲屼笉鐭ラ亾鎮(zhèn)ㄧ湅鏄庣櫧浜嗗灝戯紝鍦ㄦ垜鐨勮繖涓狫SP欏甸噷鍑犱箮娌℃湁浠諱綍鐨勪笟鍔¢昏緫錛岃繖鏍風(fēng)殑璁捐灝辨瘮鎶奌TML鍜孞AVA鎼鏉傚湪涓璧峰ソ浜嗗緢澶氥?/font>



]]>
主站蜘蛛池模板: 亚洲一区影音先锋色资源| 久久久久亚洲AV无码专区桃色| 亚洲最新视频在线观看| baoyu122.永久免费视频| 亚洲精品成人片在线播放| 狠狠躁狠狠爱免费视频无码 | h在线观看视频免费网站| 亚洲国产一区二区a毛片| 99热在线观看免费| 亚洲国产综合在线| 免费无码精品黄AV电影| 精品国产亚洲第一区二区三区| 日本最新免费不卡二区在线| 日韩在线视频免费| 在线观看亚洲av每日更新| 久久99青青精品免费观看| 亚洲人成在线中文字幕| 国产自产拍精品视频免费看| jizz日本免费| 亚洲最大的成网4438| 免费的涩涩视频在线播放| 人妻仑乱A级毛片免费看| 亚洲视频在线视频| 好吊妞在线成人免费| 一级毛片不卡免费看老司机| 亚洲精品免费在线观看| 成年女人毛片免费播放视频m| 美女免费精品高清毛片在线视| 亚洲精品无码乱码成人| 美女视频黄的全免费视频| 免费大片黄在线观看| 无码乱人伦一区二区亚洲| 免费无码一区二区三区蜜桃大| 一级午夜免费视频| 久久精品国产亚洲AV电影| 国产精品四虎在线观看免费| 热99RE久久精品这里都是精品免费| 久久精品国产亚洲AV蜜臀色欲| 免费jjzz在在线播放国产| 最近免费mv在线电影| 免费视频成人国产精品网站|