servlet不能解析web-inf下的xml登录信息,求解

随风香飘飘 发布于 2015/02/08 11:48
阅读 293
收藏 0
package com.system.servlet;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.sql.ResultSet;

import javax.servlet.ServletContext;
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 javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DologinServlet extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = -3134452539863950414L;

    /**
     * Constructor of the object.
     */
    public DologinServlet() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        HttpSession session = request.getSession();
        ServletContext info = request.getServletContext();
        String file = info.getRealPath("WEB-INF/loginUser.xml");
        Document doc = null;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder parser = factory.newDocumentBuilder();
            doc = parser.parse(file);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        boolean flag = false;
        // 接收参数
        String name = request.getParameter("username");
        String password1 = request.getParameter("password");
        NodeList users = doc.getElementsByTagName("userinfo");
        if (users != null) {
            for (int i = 0; i < users.getLength(); i++) {
                Node user1 = users.item(i);
                NodeList userinfo = user1.getChildNodes();
                String name1 = null;
                String attr = null;
                String pwd = null;
                for (int j = 0; j < userinfo.getLength(); j++) {
                    if (userinfo.item(j).getNodeName().equalsIgnoreCase("name")) {
                        name1 = userinfo.item(j).getTextContent();
                    } else if (userinfo.item(j).getNodeName()
                            .equalsIgnoreCase("attribution")) {
                        attr = userinfo.item(j).getTextContent();
                    } else if (userinfo.item(j).getNodeName()
                            .equalsIgnoreCase("password")) {
                        pwd = userinfo.item(j).getTextContent();
                    }
                }
                if (name.equals(name1) && password1.equals(pwd)) {
                    flag = true;
                    session.setAttribute("username", name1);
                    session.setAttribute("password", pwd);
                    session.setAttribute("attr", attr);
                    break;
                }
            }
        }

        if (flag) {
            request.getRequestDispatcher("rules.jsp");
        } else {
            request.getRequestDispatcher("login.jsp");
        }
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

加载中
1
一堆BUG
一堆BUG

request.getRequestDispatcher("xx")这条后面的.forward(request,response)到什么地方去了?

你放入到session中为什么不直接用response.sendRedirect("xx.jsp");

问题太新手,自己多看看Servlet基础吧

if (flag) {
	// request.getRequestDispatcher("rules.jsp");
	// request.getRequestDispatcher("rules.jsp").forward(request, response);
	response.sendRedirect("rules.jsp");
} else {
	// request.getRequestDispatcher("login.jsp");
	// request.getRequestDispatcher("login.jsp").forward(request, response);
	response.sendRedirect("login.jsp");
}



0
唐代de豆腐
唐代de豆腐

错误都不贴上来。看你妹呀!

是不是文件路径找不到哦。

单独写个测试用例看你解析xml有问题没

0
随风香飘飘
随风香飘飘

引用来自“唐代豆腐超贵”的评论

错误都不贴上来。看你妹呀!

是不是文件路径找不到哦。

单独写个测试用例看你解析xml有问题没

package com.system.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
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 javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DologinServlet extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = -3134452539863950414L;

    /**
     * Constructor of the object.
     */
    public DologinServlet() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        HttpSession session = request.getSession();
        ServletContext info = request.getServletContext();
        String file = info.getRealPath("WEB-INF/loginUser.xml");
        Document doc = null;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder parser = factory.newDocumentBuilder();
            doc = parser.parse(file);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        boolean flag = false;
        // 接收参数
        String name = request.getParameter("username");
        String password1 = request.getParameter("password");
        NodeList users = doc.getElementsByTagName("userinfo");
        if (users != null) {
            for (int i = 0; i < users.getLength(); i++) {
                Node user1 = users.item(i);
                NodeList userinfo = user1.getChildNodes();
                String name1 = null;
                String attr = null;
                String pwd = null;
                for (int j = 0; j < userinfo.getLength(); j++) {
                    if (userinfo.item(j).getNodeName().equalsIgnoreCase("name")) {
                        name1 = userinfo.item(j).getTextContent();
                    } else if (userinfo.item(j).getNodeName()
                            .equalsIgnoreCase("attribution")) {
                        attr = userinfo.item(j).getTextContent();
                    } else if (userinfo.item(j).getNodeName()
                            .equalsIgnoreCase("password")) {
                        pwd = userinfo.item(j).getTextContent();
                    }
                }
                if (name.equals(name1) && password1.equals(pwd)) {
                    flag = true;
                    session.setAttribute("username", name1);
                    session.setAttribute("password", pwd);
                    session.setAttribute("attr", attr);
                    break;
                }
            }
        }

        if (flag) {
            request.getRequestDispatcher("rules.jsp");
        } else {
            request.getRequestDispatcher("login.jsp");
        }
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

这个是servlet,没有任何提示。
0
cyper
cyper

0. hello servlet会写吗?先写个hello world出来.
1. web.xml有配置该servlet吗?
2.建议你把解析dom的代码去掉,与你的问题无关
3.开发环境是Eclipse吗?设置断点,逐行调试

能看出来的,WEB-INF前面少个/线 

返回顶部
顶部