الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

How To Hide Parameters In Servlet Url

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته

 

عندي مشكلة بعد طباعة التقرير باإستخدام Servlet يظهر عنوان التقرير بكامل ال parameters الخاصة بالتقرير وأريد إخفائها أو تشفير العنوان

 

وقبل انا استخدم ال servlet كنت أستخدم الطباعة عن طريق ال bean  ولكن عند الطباعة على صفحة jsff لا يقوم بالطباعة وأستخدمة بعد ذلك ال servlet وأيضا لكي يظهر التقرير فى صفحة منفصلة ويعمل بشكل طبيعيى ولكن اريد تشقير ال url لانه يظهر بالكامل

 

هل هناك حل ؟؟

 

كود ال servlet

package hrss.view;

import hrss.model.app.AppModuleImpl;

import java.io.ByteArrayOutputStream;
import java.io.File;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;


import java.util.HashMap;
import java.util.Locale;
import java.util.Map;


import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.util.SimpleFileResolver;
import net.sf.jasperreports.engine.xml.JRXmlLoader;


import oracle.jbo.client.Configuration;


@WebServlet(name = "DefineLtrRepServlet", urlPatterns = { "/defineltrrepservlet" })
public class DefineLtrRepServlet extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";


    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

     protected Connection getConnection() {

        PreparedStatement st = null;
        String amDef = "hrss.model.app.AppModule";
        String config = "AppModuleLocal";
        AppModuleImpl am = (AppModuleImpl) Configuration.createRootApplicationModule(amDef, config);

        st = am.getDBTransaction().createPreparedStatement("select 1 from dual", 0);
        Connection conn = null;

        try {
            conn = st.getConnection();
            return conn;
        } catch (SQLException e) {
        }

        return null;
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
        //String var0 = "";
        String pSctrId = "";
        String pMgrType = "";
        String pMgrName = "";
        String pLetterType = "";
        String pLetterTo = "";
        try {
            pSctrId = request.getParameter("pSctrId");
            pMgrType = request.getParameter("pMgrType");
            pMgrName = request.getParameter("pMgrName");
            pLetterType = request.getParameter("pLetterType");
            pLetterTo = request.getParameter("pLetterTo");
        } catch (Exception e) {
            e.printStackTrace();
        }
        response.setContentType(CONTENT_TYPE);
        Map parameters = new HashMap();
        parameters.put("format", "pdf");
        String reportsDirPath = this.getServletContext().getRealPath("/Reports/");
        parameters.put("WEBDIR", reportsDirPath);

        System.out.println("reportsDirPath Desc :" + reportsDirPath.toString());
        File reportsDir = new File(reportsDirPath);
        System.out.println("File Desc : file here");

        parameters.put(JRParameter.REPORT_FILE_RESOLVER, new SimpleFileResolver(reportsDir));

        parameters.put("REPORT_LOCALE", new Locale("ar"));

        parameters.put("pSctrId", Integer.valueOf(pSctrId));
        parameters.put("pMgrType", Integer.valueOf(pMgrType));
        parameters.put("pMgrName", new String(pMgrName));
        parameters.put("pLetterType", Integer.valueOf(pLetterType));
        parameters.put("pLetterTo", new String(pLetterTo));
        Connection conn = null;
        InputStream is = null;
        OutputStream out = null;
        try {
            conn = getConnection();
            is = getServletContext().getResourceAsStream("/Reports/" + "HrDefineLtr.jrxml");

            response.setContentType("application/pdf");
            // If we want it to view in pdf viewer
            //response.addHeader("Content-Disposition", "attachment; filename=HrDefineLtr.pdf");
            response.setHeader("Cache-Control", "max-age=0");

            
            JasperDesign jasperDesign = null;
            try {
                jasperDesign = JRXmlLoader.load(is);
                
            } catch (JRException e) {
                // TODO: Add catch code
                System.out.println("error 2  : " + e.getMessage());
            }

            JasperReport jasperReport = null;

            try {
                jasperReport = JasperCompileManager.compileReport(jasperDesign);
                //
                jasperReport = (JasperReport)JRLoader.loadObject(is);
                //
               // report.setWhenNoDataType(WhenNoDataTypeEnum.NO_DATA_SECTION);
            } catch (JRException e) {
                // TODO: Add catch code
                System.out.println("error 3  : " + e.getMessage());
            }            
            
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
            //ByteArrayOutputStream baos = new ByteArrayOutputStream();
            
            
            //ServletOutputStream out = response.getOutputStream();
            
            out = response.getOutputStream();
            
            // If we want it to view in pdf viewer
            //JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
            
            
            //JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
            
            JRExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
            
                exporter.exportReport();            
            
            //out.write(baos.toByteArray());
           
           
           // out.flush();
            //out.close();

            //conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            
            if (out != null) {
                try {
                    closeConnection(conn);
                    out.flush();
                    out.close();
                    if (is != null) {
                        is.close();
                    }                    
                } catch (Exception ex) {
                    System.out.println(ex.getMessage());
                   
                }
            }            
         }
        
          
        // If we want it to view in pdf viewer
/*
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>ReportServlet</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
        out.close();
*/
    }

    protected static void closeConnection(Connection conn) {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (Exception ex) {
              System.out.println("Developer Msg : Exception in printReport1Servlet.closeConnection()");
        }
    }
}

كود ال XML

<af:button text="Define Letter" id="b2" targetFrame="_blank"
                               partialSubmit="true" partialTriggers="soc2 soc3 ItLetterAppName ItLetterTo"
                               binding="#{backingBeanScope.EmpServices.b3}"
                               disabled="#{bindings.DefineTypeName.inputValue == null || bindings.DefineAppName.inputValue == null ? true : false}"
                               />

كود ال Bean

    public void Ltrtoggle(ValueChangeEvent vce) {
                if (vce.getNewValue()!= null){
            pLetterTo = vce.getNewValue().toString();
            b3.setDestination(getDestination() + "&pLetterTo=" + pLetterTo +"");
        }
    }

    public String getDestination() {
        getRepParam();
        try {
            url =
                "/defineltrrepservlet?pSctrId=" + pSctrId + "&pMgrType=" + pMgrType + "&pMgrName=" + pMgrName +
                "&pLetterType=" + pLetterType + "";            
        } catch (Exception e) {
            // TODO: Add catch code
            url = null;
            e.printStackTrace();
        }
        return url;
    }


    public void getRepParam() {
        try {
            BindingContext lBindingContext = BindingContext.getCurrent();
            BindingContainer bindings = lBindingContext.getCurrentBindingsEntry();

            AttributeBinding attrLetterTypeId = (AttributeBinding) bindings.getControlBinding("DefineTypeId1");
            AttributeBinding attrMgrTypeId = (AttributeBinding) bindings.getControlBinding("DefineAppId1");
            AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
            Map pageFlowScope = adfFacesContext.getPageFlowScope();
            
            pSctrId = (Integer) pageFlowScope.get("SctrId");
            if (attrLetterTypeId.getInputValue() != null) {
                pLetterType = (Integer) attrLetterTypeId.getInputValue();
            }
            if (itLtrTo.getValue() != null){
            //if (itLtrTo.getValue() != null) {
                //pLetterTo = itLtrTo.getValue().toString();
                pLetterTo = itLtrTo.getValue().toString();
            }
            if (attrMgrTypeId.getInputValue() != null) {
                pMgrType = (Integer) attrMgrTypeId.getInputValue();
            }
            if (itLtrAppName.getValue() != null) {
                pMgrName = itLtrAppName.getValue().toString();
            }
            /*
            System.out.println("pSctrId Desc :" + String.valueOf(pSctrId));
            System.out.println("pLetterType Desc :" + String.valueOf(pLetterType));
            System.out.println("pLetterTo Desc :" + String.valueOf(pLetterTo));
            System.out.println("pMgrType Desc :" + String.valueOf(pMgrType));
            System.out.println("pMgrName Desc :" + String.valueOf(pMgrName));
            */
        } catch (Exception e) {
            // TODO: Add catch code
            e.printStackTrace();
        }

    }
بتاريخ:

طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليها
الافضل انك تبعتها من خلال Map 
مثال 
 

 pSctrId = request.getParameter("pSctrId");
            pMgrType = request.getParameter("pMgrType");
            pMgrName = request.getParameter("pMgrName");
            pLetterType = request.getParameter("pLetterType");
            pLetterTo = request.getParameter("pLetterTo");

بدلها ب 
 

 Map param = (Map) request.getSession().getAttribute("MapParam");

ال param تبعتها ع طول ف السطر ده
 

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn);

طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير 
 fill variables and values and set it in Map in Bean
 

 Map map = new LinkedHashMap();
 map.put("bellNo", bellNo1.bigDecimalValue());
 map.put("bellNo2", bellNo2.bigDecimalValue());
map.put("bellNo2", bellNo3.bigDecimalValue());
 public  void runMyJasperReport(String repprtPath, Map params)
  { 
    try
    {
      FacesContext context = FacesContext.getCurrentInstance();
      String url = "/MyJasperservlet";
      ADFJSFUtils.storeOnSession("MapParam", param);
      String contextPath = context.getExternalContext().getRequestContextPath();
      System.out.println("contextPath " + contextPath);
      ExtendedRenderKitService erks =
        (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class);
      StringBuilder script = new StringBuilder();
      script.append("window.open(\"" + contextPath + url + "\");");
    erks.addScript(FacesContext.getCurrentInstance(), script.toString());

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

فانت كده بتنفذ الموجود  فالسيرفلت بدون ما ترسل parameters  شغال sesscionScope variables

 

بتاريخ:

استخدم post بدلاً من get

بتاريخ:
  • كاتب الموضوع

طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليها

الافضل انك تبعتها من خلال Map 

مثال 

 

 pSctrId = request.getParameter("pSctrId");
            pMgrType = request.getParameter("pMgrType");
            pMgrName = request.getParameter("pMgrName");
            pLetterType = request.getParameter("pLetterType");
            pLetterTo = request.getParameter("pLetterTo");

بدلها ب 

 

 Map param = (Map) request.getSession().getAttribute("MapParam");

ال param تبعتها ع طول ف السطر ده

 

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn);

طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير 

 fill variables and values and set it in Map in Bean

 

 Map map = new LinkedHashMap();
 map.put("bellNo", bellNo1.bigDecimalValue());
 map.put("bellNo2", bellNo2.bigDecimalValue());
map.put("bellNo2", bellNo3.bigDecimalValue());
 public  void runMyJasperReport(String repprtPath, Map params)
  { 
    try
    {
      FacesContext context = FacesContext.getCurrentInstance();
      String url = "/MyJasperservlet";
      ADFJSFUtils.storeOnSession("MapParam", param);
      String contextPath = context.getExternalContext().getRequestContextPath();
      System.out.println("contextPath " + contextPath);
      ExtendedRenderKitService erks =
        (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class);
      StringBuilder script = new StringBuilder();
      script.append("window.open(\"" + contextPath + url + "\");");
    erks.addScript(FacesContext.getCurrentInstance(), script.toString());

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

فانت كده بتنفذ الموجود  فالسيرفلت بدون ما ترسل parameters  شغال sesscionScope variables

 

الكلام دا كويس جدا  يا مهندس أحمد بس فيه import مش موجود خاص بال ADFJSFUtils

 

انا ممكن ابعتها فى ال session كدا ولا لازم استخدم ال class دا

cont.getExternalContext().getSessionMap().put("Mymap", Map);

بس حابب أجرب الطريقة دي بالكامل

 

حابب اعرف ال class دا لو تكرمت علشان اجرب والطريقة دي هتطلع التقرير فى tap  تاني ولا  popup ؟ وسؤال كمان والأفضل استخد كدا button  ولا commandbutton ؟

تم تعديل بواسطة m_rashad2

بتاريخ:
  • كاتب الموضوع

استخدم post بدلاً من get

انا مستخدم post  يا مهندس مصطفي

بتاريخ:

 

طبيعى لازم يظهر ف ال url لانك بتبعت القيم ف ال request وبتستقبل ال parameters دى وتشتغل عليها

الافضل انك تبعتها من خلال Map 

مثال 

 

 pSctrId = request.getParameter("pSctrId");
            pMgrType = request.getParameter("pMgrType");
            pMgrName = request.getParameter("pMgrName");
            pLetterType = request.getParameter("pLetterType");
            pLetterTo = request.getParameter("pLetterTo");

بدلها ب 

 

 Map param = (Map) request.getSession().getAttribute("MapParam");

ال param تبعتها ع طول ف السطر ده

 

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn);

طيب انا عاوز املا المتغيرات بتاعتى قبل ما انادى ع سيرفرت ده بتاع التقرير 

 fill variables and values and set it in Map in Bean

 

 Map map = new LinkedHashMap();
 map.put("bellNo", bellNo1.bigDecimalValue());
 map.put("bellNo2", bellNo2.bigDecimalValue());
map.put("bellNo2", bellNo3.bigDecimalValue());
 public  void runMyJasperReport(String repprtPath, Map params)
  { 
    try
    {
      FacesContext context = FacesContext.getCurrentInstance();
      String url = "/MyJasperservlet";
      ADFJSFUtils.storeOnSession("MapParam", param);
      String contextPath = context.getExternalContext().getRequestContextPath();
      System.out.println("contextPath " + contextPath);
      ExtendedRenderKitService erks =
        (ExtendedRenderKitService) Service.getRenderKitService(context, ExtendedRenderKitService.class);
      StringBuilder script = new StringBuilder();
      script.append("window.open(\"" + contextPath + url + "\");");
    erks.addScript(FacesContext.getCurrentInstance(), script.toString());

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

فانت كده بتنفذ الموجود  فالسيرفلت بدون ما ترسل parameters  شغال sesscionScope variables

 

الكلام دا كويس جدا  يا مهندس أحمد بس فيه import مش موجود خاص بال ADFJSFUtils

 

انا ممكن ابعتها فى ال session كدا ولا لازم استخدم ال class دا

cont.getExternalContext().getSessionMap().put("Mymap", Map);

بس حابب أجرب الطريقة دي بالكامل

 

حابب اعرف ال class دا لو تكرمت علشان اجرب والطريقة دي هتطلع التقرير فى tap  تاني ولا  popup ؟ وسؤال كمان والأفضل استخد كدا button  ولا commandbutton ؟

 

تستطيع الإرسال في session

بتاريخ:

 

استخدم post بدلاً من get

انا مستخدم post  يا مهندس مصطفي

 

إذن لا يمكن أن تظهر في url

بتاريخ:
  • كاتب الموضوع

 

 

استخدم post بدلاً من get

انا مستخدم post  يا مهندس مصطفي

 

إذن لا يمكن أن تظهر في url

 

 

 

بس لو حضرتك خدت بالك فى الكود انا بستخدم post ومع ذلك بتظهر بالكامل عموما انا هجرب موضوع ال session واشوف

تم تعديل بواسطة m_rashad2

بتاريخ:

إذن يوجد خطأ عندك في مكان ما

  • بعد 2 أسابيع...
بتاريخ:
  • كاتب الموضوع

طريقة ال Session تعمل بشكل ممتاز

 

شاكر ليكم جدا للتفاعل السريع يا مهندسين

بتاريخ:

العفو

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.