<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    即使世界明天毀滅,我也要在今天種下我的葡萄樹(shù)。
    posts - 112, comments - 14, trackbacks - 0, articles - 11

    開(kāi)發(fā)JSP&Servlet

    Posted on 2007-07-02 11:44 閱讀(276) 評(píng)論(0)  編輯  收藏

    開(kāi)發(fā)JSP&Servlet

          終于有空可以閑下來(lái)了,前2個(gè)星期忙著寫代碼。在開(kāi)發(fā)過(guò)程中,因?yàn)椴欢臇|西太多,所以這段時(shí)間在不停的惡補(bǔ),忙的連看美女的時(shí)間都沒(méi)。就 趁著今天夜黑風(fēng)高之際,我就繼續(xù)寫點(diǎn)把。

          介紹下我的開(kāi)發(fā)工具是:eclipse3.1+myeclipse4.0GA   開(kāi)發(fā)平臺(tái):win2000
         ( myeclipse4.0有個(gè)功能很不錯(cuò),支持所見(jiàn)即所得,就是速度慢)

          基本概念不說(shuō)了,過(guò)下書就算了。我就用個(gè)用戶登錄的例子來(lái)說(shuō)明如果使用JSP+SERVLET+JAVABEAN來(lái)開(kāi)發(fā)項(xiàng)目,這個(gè)例子是通過(guò)讀取XML文件來(lái)驗(yàn)證是否是合法用戶。
          先說(shuō)一下流程:本來(lái)想畫流程圖的,但是機(jī)器里還沒(méi)裝VISIO。。。以后在補(bǔ)把。其實(shí)也很簡(jiǎn)單的。
          這里是源碼,需要的朋友可以下載看看http://www.tkk7.com/Files/yuanhuaming/mvctest.rar
    可能web.xml需要改一下,把還沒(méi)修改好的傳上去了。


    Login.jsp   
     
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
      
    <head>  
    <SCRIPT language="JavaScript">
    function clean() {
        form1.passWord.value 
    = "";
        form1.userName.value 
    = "";    
    }

    </SCRIPT>
      
    </head>
      
    <body>
      
    <FORM name="form1" action="Login.do" method="post" >    
           username: 
    <INPUT name="userName" type="text"><P></P>
        password: 
    <INPUT type="password" name="passWord"><P></P><P>
        
    <INPUT type="submit" name="submit" value="submit">
       
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        
    <INPUT type="Button" name="reset" value="reset" onclick="clean()">
        
    </P><P></P></FORM>
      
    </body>
    </html>
    通過(guò)action定向到Login.do, Login.do就是通過(guò)web.xml映射到指定的servlet。請(qǐng)看:
      <servlet>
        
    <servlet-name>Login</servlet-name>//3
        
    <servlet-class>com.yhm.servlet.Login</servlet-class>//4
      
    </servlet>

      
    <servlet-mapping>
        
    <servlet-name>Login</servlet-name>//2
        
    <url-pattern>/Login.do</url-pattern>//1
      
    </servlet-mapping>
    上面標(biāo)志的數(shù)字就是依次查找的順序,很容易理解把。

    Login.java
    package com.yhm.servlet;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import com.yhm.bean.testConfig;

    public class Login extends HttpServlet {
        
        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException {
            String username 
    = new String(request.getParameter("userName").getBytes("iso8859-1"),"utf-8");
            String password 
    = new String(request.getParameter("passWord").getBytes("iso8859-1"),"utf-8");
            
            testConfig config 
    = new testConfig();
            
    //.vaildate() return boolean
            if(config.Vaildate(username, password) == true{            
                
    /*通?SESSION?量?參 
                HttpSession session = request.getSession();
                session.setAttribute("userName", username);
                response.sendRedirect("welcome.jsp");    
                
    */

                
    //request?參
                request.setAttribute("username", username);
                   //定向
                RequestDispatcher dispatcher 
    = request.getRequestDispatcher("welcome.jsp");            
                dispatcher.forward(request, response);
            }

            
    else {
                response.sendRedirect(
    "error.jsp");
            }

        }


        
    //init and destroy
        public void init() throws ServletException {}
        
    public void destroy() {
            
    super.destroy();
        }

    }

    主要負(fù)責(zé)獲取表單內(nèi)的參數(shù)值,并且轉(zhuǎn)向到指定的頁(yè)面。


    ComJDom.java   用于封裝如何訪問(wèn)XML
    需要導(dǎo)入一個(gè)jdom.jar包,SDK里也有類似解析XML的包不過(guò)不太好用。
    package com.yhm.bean;

    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;

    import org.jdom.Document;
    import org.jdom.input.SAXBuilder;


    public class ComJDom {
        
    public static Document getDocument(String XMLUser) throws Exception {
            Document dom 
    = null;
            InputStream instr 
    = null;
            
    try {
                SAXBuilder build 
    = new SAXBuilder();
                instr 
    = new FileInputStream(XMLUser);
                dom 
    = build.build(instr);
            }

            
    finally {
                   
    if (instr != null{
                        
    try {
                            instr.close();
                        }
     
                        
    catch (IOException ex) {
                            
    throw ex;
                        }

                    }

            }

            
    return dom;
        }

    }


    testConfig.java   用來(lái)驗(yàn)證用戶名是否正確
    package com.yhm.bean;

    import java.util.ArrayList;
    import java.util.List;

    import org.jdom.Document;
    import org.jdom.Element;

    public class testConfig {
        
        
    private List userList = null;
        
    private List pwdList = null;
        
        
    public boolean Vaildate(String userName, String pwd) {
            
    //驗(yàn)證用戶名密碼是否正確
            for(int i=0;i<userList.size();i++){
                
    if(userList.get(i).equals(userName) && pwdList.get(i).equals(pwd)){
                    
    return true;
                }
            
            }
     return false;            
        }
        
        
        
    public testConfig() {
            
    try {
                userList 
    = new ArrayList();
                pwdList 
    = new ArrayList();
                String xmlStr 
    = "F:/project by eclipse/mvctest/WEB-INF/test.xml";
                Document dom 
    = ComJDom.getDocument(xmlStr);
                
    //得到根元素返回元素類型
                Element root = dom.getRootElement();
                
    //得到根元素的下一級(jí)元素
                List list = root.getChildren();
                Element action 
    = null;
                
    for (int i = 0; i < list.size(); i++{
                    action 
    = (Element) list.get(i);
                    
    //得到username元素里的內(nèi)容
                    String username = action.getChildText("username");
                    String password 
    = action.getChildText("password");
                    
    //放入2個(gè)List表中
                    userList.add(username);                
                    pwdList.add(password);
                }
                
            }

            
    catch(Exception ex) {
                ex.printStackTrace();
            }

        }
        
    }



    test.xml    記錄了合法的用戶名密碼
    <?xml version="1.0" encoding="UTF-8"?>
    <userList>
        
    <user>
            
    <username>admin</username>
            
    <password>admin</password>
        
    </user>    
        
    <user>
            
    <username>test</username>
            
    <password>test</password>
        
    </user>    
        
    <user>
            
    <username>tiger</username>
            
    <password>tiger</password>
        
    </user>    
    </userList>

    還有一張error.jsp ,有錯(cuò)誤就會(huì)跳轉(zhuǎn)到這里來(lái)。
     

       總結(jié):盡量不要把代碼寫在jsp里,盡量不要使用DW畫界面,會(huì)出來(lái)很多垃圾代碼,后期修改的時(shí)候看起來(lái)也累。通過(guò)這個(gè)例子,我似乎漸漸了解了為什么那么多的框架使用XML做配置文件及其如何工作的。
    實(shí)際開(kāi)發(fā)項(xiàng)目的時(shí)候會(huì)碰到很多很多奇怪而且難以捉摸的問(wèn)題,可能這就是為什么要加班了。我前1個(gè)星期就碰到一個(gè)很奇怪的頁(yè)面問(wèn)題。本來(lái)顯示正常,然后加了一個(gè)完全不相關(guān)的JSP文件,結(jié)果頁(yè)面排版就出問(wèn)題。然后COPY一下在其他機(jī)器上運(yùn)行一切正常。郁悶了2天.....結(jié)果無(wú)意裝了新版本的tomcat,把老版本卸了。然后一運(yùn)行,正常Y_Y,誰(shuí)會(huì)想到是tomcat的問(wèn)題,而且tomcat也沒(méi)報(bào)什么錯(cuò)。

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av成人无码久久精品 | 另类图片亚洲校园小说区| 国产亚洲男人的天堂在线观看| 一级做a爰片性色毛片免费网站 | 性生交片免费无码看人| 国产高清免费观看| 国产亚洲精品免费视频播放| 日木av无码专区亚洲av毛片| 亚洲一区二区三区写真| 久香草视频在线观看免费| 你懂的免费在线观看网站| 99久久这里只精品国产免费| 国产国产人免费人成免费视频| 国产L精品国产亚洲区久久| 老汉色老汉首页a亚洲| 在线观看亚洲AV日韩A∨| 一区二区三区免费视频播放器| 日韩精品无码一区二区三区免费 | 国产精品网站在线观看免费传媒| 4399好看日本在线电影免费| 免费国产a国产片高清网站| 亚洲一区精品无码| 亚洲youjizz| 久久久久久国产a免费观看不卡 | 色久悠悠婷婷综合在线亚洲| 亚洲精品在线电影| 污污的视频在线免费观看| 永久在线免费观看| 亚洲AV成人潮喷综合网| 亚洲视频小说图片| 麻豆va在线精品免费播放| 99视频在线看观免费| 免费国产成人高清视频网站| 久久精品亚洲一区二区三区浴池| WWW国产亚洲精品久久麻豆| 日本xxxx色视频在线观看免费| 卡一卡二卡三在线入口免费| 亚洲AV日韩精品久久久久| 特黄aa级毛片免费视频播放| 免费h片在线观看网址最新| 国产亚洲午夜高清国产拍精品|