編程之道

          無論是批評的,贊揚(yáng)的,指著的都請EMAIL給我,你的建議將是我前進(jìn)的動力! 聯(lián)系我

          開發(fā)JSP&Servlet

                終于有空可以閑下來了,前2個星期忙著寫代碼。在開發(fā)過程中,因為不懂的東西太多,所以這段時間在不停的惡補(bǔ),忙的連看美女的時間都沒。就 趁著今天夜黑風(fēng)高之際,我就繼續(xù)寫點把。

                介紹下我的開發(fā)工具是:eclipse3.1+myeclipse4.0GA   開發(fā)平臺:win2000
               ( myeclipse4.0有個功能很不錯,支持所見即所得,就是速度慢)

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


          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>
          通過action定向到Login.do, Login.do就是通過web.xml映射到指定的servlet。請看:
            <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)向到指定的頁面。


          ComJDom.java   用于封裝如何訪問XML
          需要導(dǎo)入一個jdom.jar包,SDK里也有類似解析XML的包不過不太好用。
          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   用來驗證用戶名是否正確
          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) {
                  
          //驗證用戶名密碼是否正確
                  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();
                      
          //得到根元素的下一級元素
                      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個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 ,有錯誤就會跳轉(zhuǎn)到這里來。
           

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

          posted on 2005-09-18 11:17 瘋流成性 閱讀(482) 評論(0)  編輯  收藏 所屬分類: eclipse


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 巩留县| 开阳县| 巴中市| 萍乡市| 商南县| 横峰县| 临城县| 平湖市| 南溪县| 图片| 洪湖市| 志丹县| 于田县| 崇文区| 报价| SHOW| 丘北县| 华坪县| 错那县| 巴青县| 黑水县| 万安县| 大同县| 阿图什市| 苍溪县| 威信县| 巢湖市| 乌鲁木齐市| 滁州市| 色达县| 固阳县| 大方县| 仙居县| 马山县| 西乌| 闽清县| 新兴县| 荔波县| 原平市| 嘉兴市| 民权县|