亚洲精品白浆高清久久久久久,亚洲欧洲精品成人久久奇米网,亚洲视频在线不卡http://www.tkk7.com/xyzroundo/category/28203.html執著......堅持......zh-cnSat, 01 Mar 2008 19:37:14 GMTSat, 01 Mar 2008 19:37:14 GMT60eclipse及其插件介紹和下載http://www.tkk7.com/xyzroundo/articles/183205.htmlxyzxyzSat, 01 Mar 2008 17:56:00 GMThttp://www.tkk7.com/xyzroundo/articles/183205.htmlhttp://www.tkk7.com/xyzroundo/comments/183205.htmlhttp://www.tkk7.com/xyzroundo/articles/183205.html#Feedback0http://www.tkk7.com/xyzroundo/comments/commentRss/183205.htmlhttp://www.tkk7.com/xyzroundo/services/trackbacks/183205.htmlby xyz  from papa

0.Eclipse下載
EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在這里下載
http://www.eclipse.org/downloads/index.php

A.. properties http://propedit.sourceforge.jp/eclipse/updates/;

A.. jode http://www.technoetic.com/eclipse/update;

A.. Eclipse update site: http://eclipse-tools.sourceforge.net/updates/   查看接口實現類插件

A.. jsEclipse http://www.interaktonline.com/ JS編輯器

0.5.lomboz J2EE插件,開發JSP,EJB
http://forge.objectweb.org/projects/lomboz
1.MyEclipse J2EE開發插件,支持SERVLET/JSP/EJB/數據庫操縱等
http://www.myeclipseide.com
 
2.Properties Editor  編輯java的屬性文件,并可以自動存盤為Unicode格式
http://propedit.sourceforge.jp/index_en.html
 
3.Colorer Take  為上百種類型的文件按語法著色
http://colorer.sourceforge.net/
 
4.XMLBuddy 編輯xml文件
http://www.xmlbuddy.com
 
5.Code Folding  加入多種代碼折疊功能(比eclipse自帶的更多)
http://www.coffee-bytes.com/servlet/PlatformSupport
 
6.Easy Explorer  從eclipse中訪問選定文件、目錄所在的文件夾
http://easystruts.sourceforge.net/
 
7.Fat Jar 打包插件,可以方便的完成各種打包任務,可以包含外部的包等
http://fjep.sourceforge.net/
 
8.RegEx Test 測試正則表達式
http://brosinski.com/stephan/archives/000028.php
 
9.JasperAssistant 報表插件(強,要錢的)
http://www.jasperassistant.com/
 
10.Jigloo GUI Builder JAVA的GUI編輯插件
http://cloudgarden.com/jigloo/
 
11.Profiler 性能跟蹤、測量工具,能跟蹤、測量BS程序
http://sourceforge.net/projects/eclipsecolorer/
 
12.AdvanQas 提供對if/else等條件語句的提示和快捷幫助(自動更改結構等)
http://eclipsecolorer.sourceforge.net/advanqas/index.html
 
13.Log4E Log4j插件,提供各種和Log4j相關的任務,如為方法、類添加一個logger等
http://log4e.jayefem.de/index.php/Main_Page
 
14.VSSPlugin VSS插件
http://sourceforge.net/projects/vssplugin
 
15.Implementors 提供跳轉到一個方法的實現類,而不是接中的功能(實用!)
http://eclipse-tools.sourceforge.net/implementors/
 
16.Call Hierarchy 顯示一個方法的調用層次(被哪些方法調,調了哪些方法)
http://eclipse-tools.sourceforge.net/call-hierarchy/index.html
 
17.EclipseTidy 檢查和格式化HTML/XML文件
http://eclipsetidy.sourceforge.net/
 
18.Checkclipse 檢查代碼的風格、寫法是否符合規范
http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm
 
19.Hibernate Synchronizer Hibernate插件,自動映射等
http://www.binamics.com/hibernatesync/
 
20.VeloEclipse  Velocity插件
http://propsorter.sourceforge.net/
 
21.EditorList 方便的列出所有打開的Editor
http://editorlist.sourceforge.net/
 
22.MemoryManager 內存占用率的監視
http://cloudgarden.com/memorymanager/
 
23.swt-designer java的GUI插件
http://www.swt-designer.com/
 
24.TomcatPlugin 支持Tomcat插件
http://www.sysdeo.com/eclipse/tomcatPlugin.html
 
25.XML Viewer
http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html
 
26.quantum 數據庫插件
http://quantum.sourceforge.net/
 
27.Dbedit 數據庫插件
http://sourceforge.net/projects/dbedit
 
28.clay.core 可視化的數據庫插件
http://www.azzurri.jp/en/software/index.jsp
http://www.azzurri.jp/eclipse/plugins
 
29.hiberclipse hibernate插件
http://hiberclipse.sourceforge.net
http://www.binamics.com/hibernatesync
 
30.struts-console Struts插件
http://www.jamesholmes.com/struts/console/
 
31.easystruts Struts插件
http://easystruts.sourceforge.net
 
32.veloedit Velocity插件
http://veloedit.sourceforge.net/
 
33.jalopy 代碼整理插件
http://jalopy.sourceforge.net/
 
34.JDepend 包關系分析
http://andrei.gmxhome.de/jdepend4eclipse/links.html
 
35.Spring IDE Spring插件
http://springide-eclip.sourceforge.net/updatesite/
 
36.doclipse 可以產生xdoclet 的代碼提示
http://beust.com/doclipse/



xyz 2008-03-02 01:56 發表評論
]]>
mailhttp://www.tkk7.com/xyzroundo/articles/168439.htmlxyzxyzTue, 18 Dec 2007 03:45:00 GMThttp://www.tkk7.com/xyzroundo/articles/168439.htmlhttp://www.tkk7.com/xyzroundo/comments/168439.htmlhttp://www.tkk7.com/xyzroundo/articles/168439.html#Feedback0http://www.tkk7.com/xyzroundo/comments/commentRss/168439.htmlhttp://www.tkk7.com/xyzroundo/services/trackbacks/168439.html
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class Mail

{


    private MimeMessage mimeMsg; // MIME郵件對象
    private Session session; // 郵件會話對象
    private Properties props; // 系統屬性
    //private boolean needAuth = false; // smtp是否需要認證
    private String username = ""; // smtp認證用戶名和密碼
    private String password = "";
    private Multipart mp; // Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成//MimeMessage對象

    public Mail(String smtp)
    {
        setSmtpHost(smtp);
        createMimeMessage();
    }
    public void setSmtpHost(String hostName)
    {
        System.out.println("設置系統屬性:mail.smtp.host = " + hostName);
        if (props == null)
            props = System.getProperties(); // 獲得系統屬性對象
        props.put("mail.smtp.host", hostName); // 設置SMTP主機
    }
    public boolean createMimeMessage()
    {
        try {
            System.out.println("準備獲取郵件會話對象!");
            session = Session.getDefaultInstance(props, null); // 獲得郵件會話對象
        }
        catch (Exception e)
        {
            System.err.println("獲取郵件會話對象時發生錯誤!" + e);
            return false;
        }
        System.out.println("準備創建MIME郵件對象!");
        try {
            mimeMsg = new MimeMessage(session); // 創建MIME郵件對象
            mp = new MimeMultipart(); // mp 一個multipart對象
            return true;
        }
        catch (Exception e)
        {
            System.err.println("創建MIME郵件對象失敗!" + e);
            return false;
        }
    }


    public void setNeedAuth(boolean need) {
        System.out.println("設置smtp身份認證:mail.smtp.auth = " + need);
        if (props == null)
            props = System.getProperties();
        if (need) {
            props.put("mail.smtp.auth", "true");
        } else {
            props.put("mail.smtp.auth", "false");

        }

    }
    public void setNamePass(String name, String pass)
    {
        System.out.println("程序得到用戶名與密碼");
        username = name;
        password = pass;
    }

    public boolean setSubject(String mailSubject) {
        System.out.println("設置郵件主題!");
        try {
            mimeMsg.setSubject(mailSubject);
            return true;
        }
        catch (Exception e) {
            System.err.println("設置郵件主題發生錯誤!");
            return false;
        }
    }

    public boolean setBody(String mailBody)
    {
        try
        {
            System.out.println("設置郵件體格式");
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+mailBody,"text/html;charset=UTF-8");
            mp.addBodyPart(bp);
            return true;
            
            
            
        }
        catch (Exception e)
        {
            System.err.println("設置郵件正文時發生錯誤!" + e);
            return false;
        }
    }

    public boolean addFileAffix(String filename) {
        System.out.println("增加郵件附件:" + filename);
        try {
            BodyPart bp = new MimeBodyPart();
            FileDataSource fileds = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(fileds));
            bp.setFileName(fileds.getName());
            mp.addBodyPart(bp);
            return true;
        }
        catch (Exception e) {
            System.err.println("增加郵件附件:" + filename + "發生錯誤!" + e);
            return false;
        }
    }

    public boolean setFrom(String from) {
        System.out.println("設置發信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from)); // 設置發信人
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }
    public boolean setTo(String to)
    {
        System.out.println("設置收信人");
        if (to == null)
            return false;
        try
        {
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }


    public boolean setCopyTo(String copyto)
    {
        System.out.println("發送附件到");
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }

    public boolean sendout()
    {
        try
        {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("正在發送郵件....");
            Session mailSession = Session.getInstance(props, null);
            Transport transport = mailSession.getTransport("smtp"); // ???
            transport.connect((String) props.get("mail.smtp.host"), username,password);
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            // transport.send(mimeMsg);
            System.out.println("發送郵件成功!");
            transport.close();
            return true;
        }
        catch (Exception e)
        {
            System.err.println("郵件發送失敗!" + e);
            return false;
        }
    }

    /*public static void main(String[] args)
    {
        String mailbody = "<html><head></head><body><hr><font color=""red"">hello. This is a testing.</red></body></html>";
        Mail themail = new Mail("smtp.163.com");
        themail.setNeedAuth(true);
        if (themail.setSubject("dkjjf") == false)
            return;
        if (themail.setBody(mailbody) == false)
            return;
        if (themail.setTo("lyh@jobbaidu.com") == false)
            return;
        if (themail.setFrom("iversonpa@163.com") == false)
            return;
        //if (themail.addFileAffix("d://aaa.rar") == false)
            //return; // 附件在本地機子上的絕對路徑
        themail.setNamePass("iversonpa", "******"); // 用戶名與密碼
        if (themail.sendout() == false)
            return;
    }*/

}



xyz 2007-12-18 11:45 發表評論
]]>
struts+hibernate+spring 登錄開發實例http://www.tkk7.com/xyzroundo/articles/168438.htmlxyzxyzTue, 18 Dec 2007 03:43:00 GMThttp://www.tkk7.com/xyzroundo/articles/168438.htmlhttp://www.tkk7.com/xyzroundo/comments/168438.htmlhttp://www.tkk7.com/xyzroundo/articles/168438.html#Feedback0http://www.tkk7.com/xyzroundo/comments/commentRss/168438.htmlhttp://www.tkk7.com/xyzroundo/services/trackbacks/168438.html說明:此教程是oksonic視頻教程的修改,我移植到eclipse3.2+myEclipse5.0環境下。原來放在我在和訊的博客上,寫的比較早,完成于去年下半學期,當時還在學校,現在出來打工了,今年7月畢業。感覺在CSDN的高手多,所以轉移至此。

功能:集合了SSH框架,完成簡單的登陸功能

工具:
    eclipse-SDK-3.2.1
、MyEclipse_5.0.1GA_E3.2、Tomcat_5.5.15、mysql-5.0.18

相關資料下載
原來的資料都是放在gbaopan下,現在gbaopan關了,沒有地方放了,只能放在郵箱里,在發件箱里的附件中


視頻教程下載郵件主題: struts+hibernate+spring視頻.part1
      struts+hibernate+spring
視頻.part2

工程下載郵件主題:  struts+hibernate+spring_src.part1     
      struts+hibernate+spring_src.part1
說明文件郵件主題:  struts+hibernate+spring_說明
properties2GBK.bat  struts+hibernate+spring_
說明 
 
開始。。新建工程:名稱為 login
 
創建Struts框架
 
創建 index.jsp,增加一鏈接指向 login.jsp
<html>
  <head>
    <title>Struts+Spring+Hibernate</title>
  </head>
 
  <body>
    <a href="login.jsp">Login</a>
  </body>
</html>
 
按下Ctrl + N,創建 login.jsp、LoginAction,使用MyEclipse的向導就可以了,記得選對正確的版本
 
在ActionForm配置頁中選擇類型為動態Form,并繼承于DynaValidatorForm,新增兩個屬性:username、password,
在創建jsp文件打上鉤,將路徑改為/login.jsp,然后下一步,改LoginAction的Input source改為/login.jsp,點擊完成
 
按下Ctrl + N 創建一個forwards,記得選對正確的版本
name
輸入 indexGo
路徑選擇 /index.jsp
 
配置validator
先添加Struts插件,使用向導
Plugin class : org.apache.struts.validator.ValidatorPlugIn
Property : pathnames
Value : /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml
這里需要兩個xml文件
現在創建“validation.xml” 文件

 
文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "validator_1_1_3.dtd" >
<form-validation>
 <formset>
  <form name="loginForm">
   <field property="username" depends="required">
    <arg0 key="prompt.username" />
   </field>
   <field property="password" depends="required">
    <arg0 key="prompt.password" />
   </field>
  </form>
 </formset>
</form-validation>
 
編輯資源文件“ApplicationResources.properties”
增加以下內容
 
prompt.username=User Name
prompt.password=User Password
errors.required={0} is required.
 
再創建中文件資源文件“ApplicationResources_zh_CN.properties”
增加以下內容

prompt.username=用戶名稱
prompt.password=
登錄密碼
errors.required={0}
必需填寫!

我這沒有用Properties Editor插件,所以在tomcat發布后會顯示亂碼,我們可以用native2ascii來解決
我建了個批處理文件properties2GBK.bat
native2ascii -encoding gbk ApplicationResources_zh_CN.properties temp.properties
del ApplicationResources_zh_CN.properties
rename temp.properties ApplicationResources_zh_CN.properties
放在你的classpath下,或者拷到你要轉GBK的地方,雙擊一下就可以了
我剛開始在eclipse編輯中文properties文件,保存后再打開,也會出現亂碼,只要在eclipse上設置一下就可以了
具體設置:Eclipse-->Preferences...-->在“type filter text“欄中輸入”Content Types“查找,
然后在選擇右邊的Text下邊相應的文件后綴名,即properties.修改其編碼就可。可以修改成GBK
我這已經改好了,直接打開就是漢語了。。。
建議下載 properties Editor插件,我這上不了外國網站,沒有辦法。。。。有空再下吧。。
 
修改struts-config.xml文件
在以下位置增加validate="true"
<action-mappings >
    <action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="com.test.struts.action.LoginAction" />
  </action-mappings>
 
這里說明提交的數據必需經過驗證,而驗證則是通過validator框架進行的。

修改web.xml文件
增加
 <welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
顯示主頁
 
修改LoginAction.java文件的execute方法,內容如下
public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  DynaValidatorForm loginForm = (DynaValidatorForm) form;
  String username=loginForm.getString("username");
  String password=loginForm.getString("password");
  if(username.equals("test")||password.equals("test")){
   return mapping.findForward("indexGo");
  }else{
   return mapping.getInputForward();
  }
 }
 
現在再修改一下login.jsp
增加以下部份
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
 
其中charset=UTF-8 是使用UTF-8的字符編碼,這也是為了支持國際化而使用的。要不然中文還是會顯示亂碼
關于亂碼解決,網上查資料,一查就有一堆
我們現在還沒有傳遞中文參數,要不然還得加個過濾器。。

 
好了,現在可以啟動Tomcat進行測試了
http://localhost:8080/login/

 
如果不輸入任何數據而直接提交表單的話就可以看到效果了。
 
好了,如果沒有什么問題的話就繼續往下看吧,如果有問題的話就得往上看了^_^
出現了亂碼,我們用native2ascii來解決,非得我重啟一下!> ok了
 
現在創建Spring框架了,在這里我將Spring所有的包全部加載進去,因為我還不知道具體用到哪些類,全部加進去方便點
 
單選框選第二個,這樣的話所有的類庫和標簽等都將拷貝到項目中去,這樣方便以后的布署
下一步后是創建配置文件,將文件放到“WebRoot/WEB-INF”目錄下,文件名稱為“applicationContext.xml”
 
 
配置struts-config.xml文件,添加(spring)的插件
 
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
  </plug-in>
 
 
修改LoginAction配置
 
原:
<action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="com.test.struts.action.LoginAction" />
 
  </action-mappings>
 
改為:
<action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="org.springframework.web.struts.DelegatingActionProxy" />
  </action-mappings>
 
 
這里將使用spring的代理器來對Action進行控制
 
當提交到/login.do是將控制權交給了spring,然后由spring來決定是否轉回到struts的Action
 
現在來配置spring
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "  
<beans>
 <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
</beans>

 
屬性singleton="false",指明了Action 的實例獲取方式為每次重新創建。解決了Struts中令人詬病的線程安全問題(Struts中,由一個Action實例處理所有的請求,這就導致了類公用資源在并發請求中的線程同步問題。)(摘自spring開發指南)
測試一下,如果沒有什么問題的話就繼續往下看吧,如果有問題的話就得往上看了^_^
好的,struts spring倆人成為朋友了,友好的集成到了一起。。。
 
建立數據庫在 這里我使用的是mysql-5.0.18
配置好mySql連接......
不好意思,這里我忘記驅動怎么寫了。。。
CREATE TABLE `user` (
  `ID` int(11) NOT NULL auto_increment,
  `USERNAME` varchar(50) NOT NULL default '',
  `PASSWORD` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
添加記錄 insert into user (USERNAME,PASSWORD) values ('test','test')

創建Hibernate框架
新建包com.test.hibernate
com.test.beans
選hibernate3.1 libraries全選,我也不知道那個具體有什么用^_^,可能只選第一個也行,但考慮還要用DAO,第三個也選上了,
看第二是高級支持,也加上了,沒試里面的作用,大家有空可以試一下。。
第二步選 spring configuration file 我們直接在Spring配置hibernate的連接。。就不用創建hibernate.cfg.xml了
第三步選existing Spring configuration file我們剛才已經創建了一個。。
 SessionFactory ID
就直接填sessionFactory
第四步 Bean Id填 dataSource 我們用JDBC Driver,DB Profile選剛才配置好的

使用MyEclipse的數據Database Explorer工具創建User.hmb.xml、AbstractUser.java、User.java,UserDAO文件
這里選項比較多,大家看視頻。。我就不一一說明了。。。不懂的看書^_^

打開User.hbm.xml配置文件,把 catalog="meilvin" 這一項刪除了,要不后果很嚴重。因為mySql在連接的時候要寫上數據庫
如果我們在這里也寫上數據庫的名字的話就會重復了,就變成了meilvin.meilvin.user,顯然是錯的。后面就會報錯,我深有體會。


修改UserDAO,增加如下方法
public boolean isValidUser(String username, String password) {
  String hql = "from User u where u.username=? and u.password=?";
  String []userInfo=new String[2];
  userInfo[0]=username;
  userInfo[1]=password;
  List userList = this.getHibernateTemplate().find(hql, userInfo);
  if (userList.size() > 0) {
   return true;
  }
  return false;
 }

 
修改LoginAction.java文件,使用userDao的方法來進行用戶驗證
package com.test.struts.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
 
import com.test.UserDAO;

public class LoginAction extends Action {

 private UserDAO userDAO;
 
 public UserDAO getUserDAO() {
  return userDAO;
 }
 
 public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
 }
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  DynaValidatorForm loginForm = (DynaValidatorForm) form;
  // TODO Auto-generated method stub
  String username = (String) loginForm.get("username");
  String password = (String) loginForm.get("password");
  loginForm.set("password", null);
  if (userDAO.isValidUser(username,password)) {
   return mapping.findForward("indexGo");
  } else {
   return mapping.getInputForward();
  }
 }
}
 
現在剩下最后的spring配置了
把原來的
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
刪除了
在最底下增加
 <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
  <property name="userDAO">
   <ref bean="UserDAO" />
  </property>
 </bean>
利用反轉控制產生action
現在可以進行測試了,可以登陸了^-^
老是說log4j沒有配置,下次視頻配置一下。。。成功了。。


注冊新用戶,用戶瀏覽、刪除用戶

打開 UserDAO.java 文件,增加以下方法:
 public boolean addUser(User user) {
  try {
   //
調用前面save方法
   save(user);
  } catch (Exception e) {
   System.out.println(e.getMessage());
   return false;
  }
  return true;
 }


按下 Ctrl + N ,使用向導創建 adduser.jsp 、AdduserForm(DynaValidatorForm)、AdduserAction.java文件,這是注冊新用戶的Action
我用的是maxthon瀏覽器,如果是add.jsp,它會當做廣告攔下來,,,,多加個user...

修改配置內容如下:
<action
      attribute="adduserForm"
      input="/adduser.jsp"
      name="adduserForm"
      path="/adduser"
      validate="true"
      type="org.springframework.web.struts.DelegatingActionProxy" />

第一句實現了必須對提交的數據進行驗證
第二句實現了和spring集成

修改 AdduserAction.java 文件,內容如下:

 private UserDAO userDAO;
 
 public UserDAO getUserDAO() {
  return userDAO;
 }
 public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
 }

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  DynaValidatorForm adduserForm = (DynaValidatorForm) form;
  User user = new User();
  user.setUsername(adduserForm.getString("username"));
  user.setPassword(adduserForm.getString("password"));
  adduserForm.set("password", null);
  if (userDAO.addUser(user)) {
   return mapping.findForward("indexGo");
  } else {
   return mapping.getInputForward();
  }
 }

關于在Action中使用 User 對像,我在這里沒有使用 IoC 方式進行管理,這不好,希望大家在正式應用中使用。

在spring配置文件(applicationContext.xml)中加入以下內容:
 <bean name="/adduser" class="com.test.struts.action.AdduserAction"
  singleton="false">
  <property name="userDAO">
   <ref bean="UserDAO" />
  </property>
 </bean>

修改 index.jsp 文件
<html>
  <head>
    <title>Struts+Spring+Hibernate</title>
  </head>
 
  <body>
    <a href="login.jsp">Login</a>
    <br>
    <a href="add.jsp">Add User</a>
  </body>
</html>

修改 adduser.jsp 文件的首行,替換為以下內容,目的是為了使用UTF-8的編碼格式顯示頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" %>

修改 validation.xml 文件,加入以下內容:
  <form name="adduserForm">
   <field property="username" depends="required">
    <arg0 key="prompt.username" />
   </field>
   <field property="password" depends="required">
    <arg0 key="prompt.password" />
   </field>
  </form>


現在整個 AddUser 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!

創建一個Action用于查詢數據,名稱為 find

創建 display.jsp 文件,用于顯示所有用戶

創建一個 forward displayGO 指向 display.jsp 選中 redirect

修改 UserDAO.java 文件,增加 findAllUser() 方法,代碼如下:
 public List findAllUser() {
  List users=this.getHibernateTemplate().find("from User u");
  if(users.size()>0)
   return users;
  return null;
 }

修改 struts-config.xml 文件
<action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />

修改 FindAction.java 文件,內容如下:
 private UserDAO userDAO;
 
 public UserDAO getUserDAO() {
  return userDAO;
 }
 public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
 }

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  List users=userDAO.findAllUser();
  if(users!=null){
   HttpSession session=request.getSession();
   session.setAttribute("users",users);
   return mapping.findForward("displayGo");
  }
  return mapping.getInputForward();
 }

在spring配置文件(applicationContext.xml)中加入以下內容:
 <bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
  <property name="userDAO">
   <ref bean="UserDAO" />
  </property>
 </bean>

修改 display.jsp 文件,內容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="
<%@ taglib uri=" <%@ taglib uri=" <html>
  <head>
    <title>DISPLAY</title>
  </head>
  <body>
    <logic:present name="users">
    <form action="del.do">
    <table border="1">
    <logic:iterate id="element" name="users">
 <tr><td width="100">
  <input type="radio" name="select" value="<bean:write name="element" property="id"/>">
     <bean:write name="element" property="username"/>
    </td></tr>
    </logic:iterate>
    </table>
    <INPUT type="submit" name="Submit" value="submit">
    </form>
    </logic:present>
  </body>
</html>

現在整個 Display 已經完成,如果你覺得不放心的話可以在這里停一停先進行這一段的測試!

新建一個 Action 用于刪除選中的用戶,name:del

修改 struts-config.xml 文件中的以下內容為:
<action path="/del" type="org.springframework.web.struts.DelegatingActionProxy" />

修改 UserDAO.java 文件,增加以下方法
 public boolean delUser(Integer lid) {
  try {
   User user=(User)findById(lid);
   this.getHibernateTemplate().delete(user);
  } catch (Exception e) {
   System.out.println(e.getMessage());
   return false;
  }
  return true;
 }

修改 DelAction.java 文件,內容如下:
public class DelAction extends Action {

 private UserDAO userDAO;

 public UserDAO getUserDAO() {
  return userDAO;
 }

 public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
 }

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  Integer selid=Integer.valueOf(request.getParameter("select"));
  if(userDAO.delUser(selid))
   return mapping.findForward("indexGo");
  return mapping.getInputForward();
 }
}
Ctrl+Shift+o
導入包
在spring配置文件(applicationContext.xml)中加入以下內容:
 <bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
  <property name="userDAO">
   <ref bean="UserDAO" />
  </property>
 </bean>

修改 index.jsp 文件
<html>
  <head>
    <title>Struts+Spring+Hibernate</title>
  </head>
 
  <body>
    <a href="login.jsp">Login</a>
    <br>
    <a href="add.jsp">Add User</a>
    <br>
    <a href="find.do">Display</a>
  </body>
</html>


代碼已經全部完成,可以進行測試了!!!

如果測試不成功,請往回查看。。。。完了!!!
失誤失誤,大小寫不注意,就是這種后果,大家以后要注意點哦
好了,成功了,祝大家都成功!
拜拜!



xyz 2007-12-18 11:43 發表評論
]]>
Ajax應用(jsp例子)http://www.tkk7.com/xyzroundo/articles/168434.htmlxyzxyzTue, 18 Dec 2007 03:33:00 GMThttp://www.tkk7.com/xyzroundo/articles/168434.htmlhttp://www.tkk7.com/xyzroundo/comments/168434.htmlhttp://www.tkk7.com/xyzroundo/articles/168434.html#Feedback0http://www.tkk7.com/xyzroundo/comments/commentRss/168434.htmlhttp://www.tkk7.com/xyzroundo/services/trackbacks/168434.html
--------------------------------------------------------------------------------

 

首先是jsp頁面和腳本,為了方便寫在一個里面

這是一個很常見的檢測用戶名是否存在的功能

這里用的是struts

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
ajax
</title>
</head>
<body bgcolor="#ffffff">
<h1>
<input name="username" type="text" maxlength="20" />
<input id="chk-name-btn" type="button" value="檢測帳號" onclick="testName('<%=request.getContextPath()%>')" />
<div id="view_name"></div>
</h1>
</body>
</html>
<script language="javascript">
  if (window.ActiveXObject && !window.XMLHttpRequest) {
      window.XMLHttpRequest=function() {
      return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
   };
  }//取得XMLHttpRequest對象

function testName(path){

//path是取得系統路徑
                var view_name=document.getElementById("view_name");
      var req=new XMLHttpRequest();
      if (req) {
          req.onreadystatechange=function() {
           if (req.readyState==4 && req.status==200) {//判斷狀態,4是已發送,200已完成
                 if(req.responseText==0){
                 view_name.style.color='green';
                view_name.innerHTML='該用戶名可以正常使用';
                 }else if(req.responseText==1){
                view_name.style.color='red';
                   view_name.innerHTML='該用戶名已經被使用';
                       }else{
                     view_name.style.color='red';
                     view_name.innerHTML='該用戶名含有非法字符!';
                     }
                 }
         }
                        req.open('POST', path+'/ajax.do');//struts

            //req.open('POST', path+'/ajax.servlet');//servlet

                        //req.open('POST', path+'/ajax.action');//webwork


                          req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                          req.send("");//發送參數如果有參數req.send("username="+user_name);用request取得
      }
}
</script>

這個jsp頁面并沒有取得用戶名,就是演示一下。還有<div>可以換span,具體作用問美工吧。

接受ajax請求的action。

import org.apache.struts.action.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

/**
 * <p>Title:AjaxAction </p>
 */

public class AjaxAction extends Action {
  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response)
      throws Exception {
    PrintWriter out = response.getWriter();
    out.print(1);//ajax取得都是字符的輸出。如果數據量大的話,還可以用xml來發送和接受
    return null;
  }
}

struts-config.xml

    <action type="test.whw.upload.AjaxAction" validate="false" scope="request"  path="/ajax"/>
----------------------------

如果是servlet

web.xml

 <servlet>
  <servlet-name>AjaxServlet </servlet-name>
  <servlet-class>servlet.AjaxServlet </servlet-class>
 </servlet>
    <servlet-mapping>
        <servlet-name>AjaxServlet </servlet-name>
        <url-pattern>/AjaxServlet .servlet</url-pattern>
    </servlet-mapping>

AjaxServlet.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class AjaxServlet extends HttpServlet {
 Logger log = Logger.getLogger(this.getClass());
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException,IOException {
  response.setContentType("text/xml; charset=GBK");
  PrintWriter out = response.getWriter();
    out.print(2);
   }
 }
 //Process the HTTP Post request
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request, response);
 }

 //Process the HTTP Put request
 public void doPut(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
 }

 //Process the HTTP Delete request
 public void doDelete(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
 }

 //Clean up resources
 public void destroy() {
 }
}

-------------------------------------

如果是webwork

xwork.xml

   <action name="ajax" class="com.whw.upload.action.webwork.AjaxAction" method="ajax"/>


AjaxAction.java

import java.io.PrintWriter;

public class AjexAlbumAction extends ActionSupport implements Action{

  public void ajax()throws IOException {
             PrintWriter pw = ServletActionContext.getResponse().getWriter();
            ServletActionContext.getResponse().setContentType("text/html;charset=GBK");
            pw.print(1);
            pw.close();
  }


}

本例子在winXPsp2、JB9、Eclipse3,j2sdk1.4.1 、Tomcat5、Tomcat4.1都能運行

xyz 2007-12-18 11:33 發表評論
]]>
log4j步驟http://www.tkk7.com/xyzroundo/articles/168432.htmlxyzxyzTue, 18 Dec 2007 03:31:00 GMThttp://www.tkk7.com/xyzroundo/articles/168432.htmlhttp://www.tkk7.com/xyzroundo/comments/168432.htmlhttp://www.tkk7.com/xyzroundo/articles/168432.html#Feedback0http://www.tkk7.com/xyzroundo/comments/commentRss/168432.htmlhttp://www.tkk7.com/xyzroundo/services/trackbacks/168432.html第一步,

Properties文件(first_log4j.properties) 放在系統的src包中。(eclipse布置在"WEB-INF"classes

log4j.rootLogger=INFO,stdout,logfile

log4j.category.com.sumit=DEBUG

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern= [%p][%c]- %m [%d] %n

# logfile set up.

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=set up in web.xml

log4j.appender.logfile.MaxFileSize=50MB

# Keep three backup files.

log4j.appender.logfile.MaxBackupIndex=10

# Pattern to output: date priority [category] - message

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

#log4j.appender.logfile.layout=org.apache.log4j.HTMLLayout

#log4j.appender.logfile.layout.ConversionPattern=時間:%d%n 優先級:%p%n 源文件:%F%n :%c%n 方法:%M%n 行數%L%n 最全:%l%n 信息:%m%n------------------------------------------------%n%n

log4j.appender.logfile.layout.ConversionPattern=%n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - %n時間:%d%n 優先級:%p%n 位置:%l%n 信息:%m%n%n

第二步,servlet

package com.royal.listener;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.Properties;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

publicclass LogListener extends HttpServlet {

  

    privatestaticfinallongserialVersionUID = 1L;

   

    static Logger log = Logger.getLogger(LogListener.class);

    public LogListener() {

    }

    publicvoid init(ServletConfig config) throws ServletException {

        String prefix = config.getServletContext().getRealPath("/");

       

        String properties = config.getInitParameter("log4j_properties");

        String logger=config.getInitParameter("log4j_outPutFile");

       

        String propertiesPath = prefix + properties;

        Properties props = new Properties();

        try {

            FileInputStream istream = new FileInputStream(propertiesPath);

            props.load(istream);

            istream.close();

            //toPrint(props.getProperty("log4j.appender.file.File"));

            String logFile = prefix + logger;//設置路徑

            logFile=logFile.replace('""', '/');

           

            props.setProperty("log4j.appender.logfile.File",logFile);

            

           

            PropertyConfigurator.configure(props);//裝入log4j配置信息

           

            log.info("皇家金典項目啟動------");

          

            log.info("LOG被加載日志文件位置:"+props.getProperty("log4j.appender.logfile.File"));

           

        } catch (IOException ioe) {

        log.error(ioe);

           ioe.printStackTrace();

            return;

        }

    }

}

Web.xml: (load-on-srartup=1 項目啟動時加載)

參數中有一個是logs"log.log,自動生成日志文件,生成在項目下面的logs directory中,文件名為log.log

<servlet>

         <servlet-name>LogListener</servlet-name>

         <servlet-class>com.royal.listener.LogListener</servlet-class>

         <init-param>

           <param-name>log4j_properties</param-name>

           <param-value>WEB-INF/classes/first_log4j.properties</param-value>

         </init-param>

         <init-param>

           <param-name>log4j_outPutFile</param-name>

           <param-value>logs"log.log</param-value>

         </init-param>

         <load-on-startup>1</load-on-startup>

       </servlet>

第三步 使用

如果是普通的JAVA類,

就得初始化log變量

static Logger log = Logger.getLogger(Mail.class);

在要記錄日去的地方

log.error(ex+創建MIME郵件對象失敗!"); //exException對象

或者 log.info/log.debug/log.warn

如果是struts中的DispatchAction的子類,或其它有Log的類的子類。

就可以不用初始化log變量。



xyz 2007-12-18 11:31 發表評論
]]>
主站蜘蛛池模板: 中文字幕在线免费观看视频| 亚洲国产欧美一区二区三区| 最新亚洲成av人免费看| 国产成人高清精品免费鸭子 | 一级看片免费视频| 亚洲性日韩精品一区二区三区| 成年免费大片黄在线观看com| 亚洲国产aⅴ综合网| 国产精品免费视频观看拍拍 | 亚洲一区二区三区国产精品| 九九久久国产精品免费热6| 国产亚洲精品激情都市| 免费一级毛片无毒不卡| 亚洲综合视频在线观看| 毛片免费观看的视频在线| 亚洲一区二区三区写真| 免费在线观看你懂的| 国产精品无码免费专区午夜| 亚洲av激情无码专区在线播放| **aaaaa毛片免费同男同女| 2019亚洲午夜无码天堂| 国产aa免费视频| 日本一区午夜艳熟免费| 亚洲免费一级视频| 四虎永久免费地址在线观看| 三级黄色免费观看| 亚洲欧洲日产国码www| 国产成人免费永久播放视频平台| 亚洲精品视频免费| 亚洲成aⅴ人在线观看| 国产成人免费一区二区三区| 成人av片无码免费天天看| 亚洲系列国产精品制服丝袜第| 免费涩涩在线视频网| 拍拍拍无挡视频免费观看1000| 亚洲国产精品成人精品软件| 亚洲国产成人久久综合碰| 亚洲网站在线免费观看| 曰批全过程免费视频观看免费软件| 亚洲AV无码精品无码麻豆| 免费看韩国黄a片在线观看|