Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

8 Responses to “Servlet programming”

  1. Chào thầy Hải…thầy làm ơn giúp em về project e đang chuẩn bị làm,e lam web jsp nhung chua hieu ro ve Servlet va Bean…Mong thầy hương dan cho em cách tiếp cận công nghệ này..Em thục sưc vẫn chưa hiểu rõ được vấn đề…

  2. Nguyễn Long said

    Tôi có vấn đề này kính mong được sự trợ giúp của anh Hải
    Đó là tôi coding để tạo file xml và thêm node + data cho node vào file xml đã tạo này sử dụng Servlet Java, code như sau :


    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.xml.parsers.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Text;
    import org.xml.sax.InputSource;
    import java.io.StringReader;
    import java.io.StringWriter;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;

    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.xml.sax.SAXException;

    public class ServletAdmin extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    // try {

    String username="";
    String password="";
    String role="";

    if(request.getParameter("username")!=null && request.getParameter("password")!=null && request.getParameter("role")!=null)
    {
    username = request.getParameter("username").toString();
    password = request.getParameter("password").toString();
    role=request.getParameter("role").toString();
    }
    else if(request.getParameter("username").equals("")){
    out.println("");
    return;
    }
    else{
    out.println("");
    return;
    }
    if(request.getParameter("role").toString().equals("select"))
    {
    out.println("");
    return;
    }
    try
    {
    File file = new File("D:/abc.xml");

    if(!file.isDirectory() && !file.exists())
    {

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
    //creating a new instance of a DOM to build a DOM tree.
    Document doc = docBuilder.newDocument();

    //This method creates an element node
    Element root = doc.createElement("Person");
    //adding a node after the last child node of the specified node.
    doc.appendChild(root);

    Element rootE=doc.createElement("User");
    root.appendChild(rootE);

    Element child1 = doc.createElement("UserName");
    rootE.appendChild(child1);

    Text text1 = doc.createTextNode(username);
    child1.appendChild(text1);

    Element child2 = doc.createElement("Password");
    rootE.appendChild(child2);

    Text text2 = doc.createTextNode(password);
    child2.appendChild(text2);

    Element child3 = doc.createElement("Role");
    rootE.appendChild(child3);

    Text text3 = doc.createTextNode(role);
    child3.appendChild(text3);

    //TransformerFactory instance is used to create Transformer objects.
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();

    transformer.setOutputProperty(OutputKeys.INDENT, "yes");

    // create string from xml tree
    StringWriter sw = new StringWriter();
    StreamResult result = new StreamResult(sw);
    DOMSource source = new DOMSource(doc);
    transformer.transform(source, result);
    String xmlString = sw.toString();

    BufferedWriter bw = new BufferedWriter
    (new OutputStreamWriter(new FileOutputStream(file)));
    bw.write(xmlString);
    bw.flush();
    bw.close();

    out.println("");

    }else{

    //creating a new instance of a DOM to build a DOM tree.
    Document doc =DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new FileReader(file)));

    Element root=doc.getDocumentElement();
    Element child=(Element)root.getFirstChild();

    //This method creates an element node

    Element rootE=(Element)child.cloneNode(true);
    root.appendChild(rootE);

    Element child1 = doc.createElement("UserName");
    rootE.appendChild(child1);

    Text text1 = doc.createTextNode(username);
    child1.appendChild(text1);

    Element child2 = doc.createElement("Password");
    rootE.appendChild(child2);

    Text text2 = doc.createTextNode(password);
    child2.appendChild(text2);

    Element child3 = doc.createElement("Role");
    rootE.appendChild(child3);

    Text text3 = doc.createTextNode(role);
    child3.appendChild(text3);

    //TransformerFactory instance is used to create Transformer objects.
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer;
    StringWriter sw = new StringWriter();
    transformer = factory.newTransformer();

    transformer.setOutputProperty(OutputKeys.INDENT, "yes");

    // create string from xml tree

    StreamResult result = new StreamResult(sw);
    DOMSource source = new DOMSource(doc);
    transformer.transform(source, result);
    out.println("");

    }//end else

    }
    catch(Exception e)
    {
    out.println(e);
    }
    }

    }

    Khi chạy lần đầu thì ok nhưng khi chạy thêm nữa thì gặp lỗi này:

    java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredTex tImpl cannot be cast to org.w3c.dom.Element

    Kính nhờ anh Hải hướng dẫn cách sửa lỗi này. Chân thành cám ơn anh Hải

  3. Võ Văn Hải said

    Anh thay Element thành Node thì sẽ không lỗi cũ nữa, nhưng có lỗi mới do anh clone nút nên không xác định được vị trí để thêm.
    Tôi sửa lại cho anh nhé! Anh có thể tạo 1 method cho code ngắn lại.
    Code như sau:

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
    String username = "";
    String password = "";
    String role = "";
    username = request.getParameter("username").toString();
    password = request.getParameter("password").toString();
    role = request.getParameter("role").toString();

    File file = new File("D:/abc.xml");
    Document doc = null;
    if (!file.isDirectory() && !file.exists()) {
    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
    doc = docBuilder.newDocument();
    Element root = doc.createElement("Person");
    doc.appendChild(root);
    Element rootE = doc.createElement("User");
    root.appendChild(rootE);

    Element child1 = doc.createElement("UserName");
    rootE.appendChild(child1);

    Text text1 = doc.createTextNode(username);
    child1.appendChild(text1);

    Element child2 = doc.createElement("Password");
    rootE.appendChild(child2);

    Text text2 = doc.createTextNode(password);
    child2.appendChild(text2);

    Element child3 = doc.createElement("Role");
    rootE.appendChild(child3);

    Text text3 = doc.createTextNode(role);
    child3.appendChild(text3);
    } else {
    doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("D:/abc.xml");
    Element root = doc.getDocumentElement();

    Element rootE = doc.createElement("User");
    root.appendChild(rootE);

    Element child1 = doc.createElement("UserName");
    rootE.appendChild(child1);

    Text text1 = doc.createTextNode(username);
    child1.appendChild(text1);

    Element child2 = doc.createElement("Password");
    rootE.appendChild(child2);

    Text text2 = doc.createTextNode(password);
    child2.appendChild(text2);

    Element child3 = doc.createElement("Role");
    rootE.appendChild(child3);

    Text text3 = doc.createTextNode(role);
    child3.appendChild(text3);
    }
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    FileOutputStream os = new FileOutputStream("D:/abc.xml");
    StreamResult result = new StreamResult(os);
    DOMSource source = new DOMSource(doc);
    transformer.transform(source, result);
    os.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    } finally {
    out.close();
    }
    }

  4. thanh luan said

    Thầy giúp em về lỗi này . Nó luôn trả về null
    JSFExample
    Pack Bean:
    FileUpload.Java
    package com.demo.ui;

    import java.io.*;
    import javax.servlet.http.*;
    import org.apache.myfaces.custom.fileupload.UploadedFile;
    import javax.faces.context.FacesContext;

    public class FileUploadForm{
    private UploadedFile upFile;
    boolean rendSuccess=false;
    boolean rendFailure=false;

    public FileUploadForm(){
    }

    public UploadedFile getUpFile(){
    return upFile;
    }

    public void setUpFile(UploadedFile upFile){
    this.upFile = upFile;
    }

    public boolean getRendSuccess(){
    return rendSuccess;
    }

    public void setRendSuccess(boolean rendSuccess){
    this.rendSuccess = rendSuccess;
    }

    public boolean getRendFailure(){
    return rendFailure;
    }

    public void setRendFailure(boolean rendFailure){
    this.rendFailure = rendFailure;
    }

    public String upload() throws IOException{
    try {
    InputStream stream = upFile.getInputStream();
    long size = upFile.getSize();
    byte [] buffer = new byte[(int)size];
    stream.read(buffer, 0, (int)size);
    stream.close();
    rendSuccess=true;
    rendFailure=false;
    System.out.println(“File Upload Successful.”);
    return “ok”;
    }
    catch (Exception ioe) {
    System.out.println(“File Upload Unsuccessful.”);
    rendSuccess=false;
    rendFailure=true;
    return “no”;
    }
    }
    }

    Page JSF

    t:inputFileUpload example

    web.xml
    …..

    extensionsFilter
    org.apache.myfaces.webapp.filter.ExtensionsFilter

    Set the size limit for uploaded files.
    Format: 10 – 10 bytes
    10k – 10 KB
    10m – 10 MB
    1g – 1 GB

    uploadMaxFileSize
    100m

    Set the threshold size – files below this
    limit are stored in memory, files above this limit
    are stored on disk.
    Format: 10 – 10 bytes
    10k – 10 KB
    10m – 10 MB
    1g – 1 GB

    uploadThresholdSize
    100k

    extensionsFilter
    *.jsf

    extensionsFilter
    /faces/*

    Kết quả trả về : java.lang.NullpoiterException

    Nếu thầy có vị dụ nào về upload file dùng jsf thì cho em một ví dụ

  5. NgoToi said

    Xin lỗi, bạn nào có bài tập đơn giản về Servlet send cho mình để tham khảo nhé, tại vì mình mới bắt đầu tự học về Servlet nên có vài bài tập đơn giản để nghiên cứu thì sẽ nhanh hơn tự mò nhiều.
    Bạn nào có thì send cho mình nhé. Mình cám ơn nhiều.
    Nếu bạn nào có thì send qua mail cho mình: anhcancoem141990@yahoo.com
    Thanks các bạn.

  6. Võ Văn Hải said

    Có rồi đấy chứ!

  7. NgoToi said

    e chưa có mà thầy , Nếu thầy biết bài tập servlet nằm ở đâu thì thầy cho e link với . Mà thầy ơi, ở trường mình (Trường ĐH Công Nghiệp TP.HCM đó). Sao mà chỉ phân ra 2 chuyên ngành đó là: Web với Net, mà sao ko có lập trình ứng dụng hả thầy. E thích đi theo lập trình ứng dụng, nhưng giờ chỉ có 2 ngành, ko có lựa chọn nên vừa mới đk Web.

  8. NgoToi said

    Có đâu Thầy, nếu thầy biết mục nào có thì thầy gửi link giùm cho em với. Thầy ơi, em có thắc mắc là vì sao trường ĐH Công Nghiệp TP.HCM lại phân ra thành 2 ngành WEB với NET mà ko có lập trình ứng dụng thầy ? Em thích theo lập trình ứng dụng, nhưng lại ko có, cho nên bây giờ ĐK theo WEB, sang kỳ 1 tới đây là phân ngành rồi.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: