⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dominoplugservlet.java

📁 在门户或其他J2EE项目中,经常要实现J2EE Application Server与DOMINO R6之间的的单点登录.除了采用专门的商业SSO软件外,经常需要自己实现,下面以Weblogic Se
💻 JAVA
字号:
package weblogic.thirdparty.domino;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;

public class DominoPlugServlet
    extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";
    private Properties config = null;

    //Initialize global variables
    public void init() throws ServletException {

    }

    public void service(HttpServletRequest req, HttpServletResponse res) throws
        IOException {


        if (config == null) {
            config = getConfig();
            if (config == null) {
                PrintWriter writer = res.getWriter();
                writer.print(getErrorPage());
                writer.close();
                return;
            }
        }
        String toDo = req.getParameter("todo");
        if (toDo.equalsIgnoreCase("Login")) {
            login(req, res);
        }
        else if (toDo.equalsIgnoreCase("Logout")) {
            logout(req,res);
        }


    }

    public void login(HttpServletRequest req, HttpServletResponse res) throws
        IOException {
        String username = req.getParameter("j_username");

        String password = req.getParameter("j_password");
        String nsfFile = req.getParameter("nsf_file");
        if(nsfFile == null || nsfFile.length() == 0)
            nsfFile = "/names.nsf";

        String weblogicIp = config.getProperty("weblogic_ip");
        String weblogicPort = config.getProperty("weblogic_port");
        String weblogicLogin = config.getProperty("weblogic_login");
        String loginForward = config.getProperty("domino_login_forward");

        String weblogicUrl = "http://" + weblogicIp + ":" + weblogicPort
            + weblogicLogin + "?action=domino&username=" + username + "&password="
            + password;

        URL weblogic = new URL(weblogicUrl);
        BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    weblogic.openStream()));

        String ret = in.readLine();
        in.close();
        if(ret.equals("1")){
            res.getWriter().print(getLoginFailedPage());
            res.getWriter().close();
            return;
        }

        String dominoUrl = nsfFile + "?Login&Username=" + username + "&Password="
                          + password + "&RedirectTo=";
        if(loginForward == null || loginForward.length() == 0){
            dominoUrl += nsfFile;
        }else
            dominoUrl += loginForward;

        StringBuffer sb = new StringBuffer();
        sb.append("<frameset rows='0,*'>");
        sb.append("<frame name='header' scrolling='no' noresize src='" + weblogicUrl + "'>");
        sb.append("<frame name='main' src='" + dominoUrl + "'>");
        sb.append("</frameset>");
        PrintWriter writer = res.getWriter();
        writer.print(sb.toString());
        writer.close();
        //HttpSession session = req.getSession();
       // session.setAttribute("username",username);

    }

    public void logout(HttpServletRequest req, HttpServletResponse res) throws
        IOException {
        String weblogicIp = config.getProperty("weblogic_ip");
        String weblogicPort = config.getProperty("weblogic_port");
        String weblogicLogout = config.getProperty("weblogic_logout");
        String logoutForward = config.getProperty("domino_logout_forward");

        String weblogicUrl = "http://" + weblogicIp + ":" + weblogicPort
            + weblogicLogout + "?action=domino";

        String nsfFile = req.getParameter("nsf_file");
        if(nsfFile == null || nsfFile.length() == 0)
            nsfFile = "/names.nsf";
        String dominoUrl = nsfFile + "?Logout&RedirectTo=";
        if(logoutForward == null || logoutForward.length() == 0){
            dominoUrl += logoutForward;
        }else
            dominoUrl += "/";

        StringBuffer sb = new StringBuffer();
        sb.append("<frameset rows='0,*'>");
        sb.append("<frame name='header' scrolling='no' noresize src='" + weblogicUrl + "'>");
        sb.append("<frame name='main' src='" + dominoUrl + "'>");
        sb.append("</frameset>");
        PrintWriter writer = res.getWriter();
        writer.print(sb.toString());
        writer.close();

    }

    private Properties getConfig() {
        Properties config = new Properties();
        try {

            config.load(new FileInputStream("dominoplugin.properties"));

        }
        catch (Exception ex) {
            System.out.println(
                "Warning : WebLogic-Domino plugin cannot find file dominoplugin.properties!");
            ex.printStackTrace();
            config = null;
        }
        return config;
    }

    private String getErrorPage() {
        StringBuffer sb = new StringBuffer();
        sb.append("<html><body>WebLogic-Domino plugin Can't find dominoplugin.properties, it should be in domino data directory !");
        sb.append("</body></html>");
        return sb.toString();
    }

    private String getLoginFailedPage() {
        StringBuffer sb = new StringBuffer();
        sb.append("<html><body><font color='red' size='9'>Login Failed!</font>");
        sb.append("</body></html>");
        return sb.toString();
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -