小编Bri*_*ian的帖子

将应用程序最终用户映射到数据库用户的每种方法有哪些优点?

将应用程序最终用户映射到数据库用户似乎有三种常用方法.

  1. 一对一映射: 每个应用程序用户(bob,nancy和fred)也获得相应的数据库用户帐户(bob nancy和fred).
  2. N到M映射: 每个应用程序用户都映射到代表其角色的数据库用户.当fred映射到'manager'数据库用户时,bob和nancy映射到'clerk'数据库用户.
  3. N到1映射: 每个应用程序用户都映射到单个数据库用户(app_user),并且只在应用程序层管理标识.

似乎#3是Web应用程序开发中最常见的. 为什么没有更加强调其他两个选项?

Oracle鼓励像#2这样的技术使用其代理身份验证功能,原因如下:

有限的信任模型 -控制代表中间层可以连接的用户,以及中间层可以为用户承担的角色

可扩展性 - 通过支持轻量级用户会话并消除重新验证客户端的开销

通过将真实用户的身份保存到数据库,并启用对代表真实用户采取的操作的审计来实现问责制

Oracle的代理身份验证文档

sql database security oracle

6
推荐指数
1
解决办法
565
查看次数

在Internet Explorer中使用ServletOutputStream通过HTTPS从Servlet返回CSV文件

我有一个Servlet,它返回一个在Internet Explorer和Firefox中通过HTTP"工作"的csv文件.当我通过HTTPS执行相同的Servlet时,只有firefox继续通过HTTPS下载csv文件.我认为这不一定是MSDN上描述的Internet 6或7问题:

消息是:

Internet Explorer无法从mydomain.com下载data.csv Internet Explorer无法打开此Internet站点.请求的网站不可用或无法找到.请稍后再试.

请注意,此消息后该网站仍处于"启动"状态,您可以继续浏览该网站,只需下载提示此消息的CSV即可.我已经能够通过IE浏览器从其他j2ee应用程序访问类似的文件,所以我相信这是我们的代码. 我们不应该关闭bufferedOutputStream吗?

UPDATE

是关闭还是不关闭输出流: 我在java团队论坛上问了这个问题,讨论也很有见地.最后,似乎没有容器应该依赖'client'(在这种情况下是你的servlet代码)来关闭这个输出流.因此,如果未能关闭servlet中的流导致问题,则更多地反映了servlet容器的不良实现而不是代码.我选择了来自Sun,Oracle和BEA的IDE和tortortials的行为,以及它们是否在关闭流时也不一致.

关于IE特定行为:在我们的案例中,单独的产品"Oracle Web Cache"引入了额外的标头值,这些标题值仅影响Internet Explorer,因为IE实现了"无缓存"要求(参见MSDN文章).代码是:

public class DownloadServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, 
                      HttpServletResponse response) throws ServletException, 
                                                           IOException {
        ServletOutputStream out = null;
        ByteArrayInputStream byteArrayInputStream = null;
        BufferedOutputStream bufferedOutputStream = null;
        try {
            response.setContentType("text/csv");
                        String disposition = "attachment; fileName=data.csv";
            response.setHeader("Content-Disposition", disposition);

            out = response.getOutputStream();
            byte[] blobData = dao.getCSV();

            //setup the input as the blob to write out to the …
Run Code Online (Sandbox Code Playgroud)

java servlets java-ee

6
推荐指数
1
解决办法
5万
查看次数

基于CGI-BIN的Web开发的主要缺点是什么?

我有幸不做任何基于cgi-bin .cgi的web开发.但通常那些似乎没有"错过"那些日子的人.

我最近加入的项目在处理需要与具有基于CGI-BIN的API的遗留系统进行通信的页面时存在性能问题.该系统是COGNOS 7.

我收到的反馈是"COGNOS很慢",但其他人报告COGNOS取得了巨大成功,我认为它更多地与通过CGI-BIN的访问有关,而不是COGNOS本身的性能.

所有这些都说明了基于CGI-BIN的Web开发不具备性能,难度等等的主要问题......

html cgi cognos cgi-bin

5
推荐指数
1
解决办法
4064
查看次数

在Groupwise或Gmail等客户端中呈现时,如何将HTML锚点用作电子邮件中的目录?

我想在内部电子邮件新闻通讯的顶部放置一个目录,让读者可以"跳转"到他们感兴趣的时事通讯部分.就像是:

<ul>
      <li><a href="#FUNDING">Funding Opportunities</a></li>
      <li><a href="#DEVELOPMENT">Professional Development</a></li>
      <li><a href="#BEST">Best Practices</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

然后,电子邮件通讯中的"再往下"有:

<h2><a id="FUNDING">Funding</a></h2>
<!--- news items about funding -->

<h2><a id="DEVELOPMENT">Professional Development</a></h2>
<!--- news items about professional development -->

<h2><a id="BEST">Best Practices</a></h2>
<!--- news items about Best Practices -->
Run Code Online (Sandbox Code Playgroud)

这在基于浏览器的HTML中运行良好,但我没有成功地使它在各种电子邮件客户端(gmail,groupwise,outlook)中工作.但是,我收到了似乎使用上述技术的电子邮件,我可以"滚动"电子邮件.我知道不同客户的支持会有所不同,这不一定是一个"好"的做法,但这是一个内部系统,几乎所有收件人都将使用GroupWise.

任何经验丰富的洞察到所需的特定附加标记(例如基础参考是什么?)将非常感激.

html email

5
推荐指数
1
解决办法
5740
查看次数

是否有更简洁/优雅的方式来格式化以下社会安全号码,如有或没有Groovy的字符串?

之前:

EUTQQGOPED
Run Code Online (Sandbox Code Playgroud)

后:

EUT-QQG-OPED
Run Code Online (Sandbox Code Playgroud)

下面的示例是我想出的将" - "添加到10个字符的字符串作为可读性要求的一部分.格式化模式类似于美国社会安全号码的格式.

有没有更简单,更简洁的方式来完成额外的格式?

public static void main(String[] args){
        String pin = "EUTQQGOPED";
        StringBuilder formattedPIN = new StringBuilder(pin);
        formattedPIN = formattedPIN.insert(3, '-').insert(7, '-');
        //output is EUT-QQG-OPED
        println formattedPIN
}
Run Code Online (Sandbox Code Playgroud)

java groovy

5
推荐指数
2
解决办法
3084
查看次数

在Oracle中何时使用vsize函数而不是length函数的有用示例?

似乎vsize()和length()返回相同的结果.有谁知道何时使用vsize而不是长度的实际例子?

select vsize(object_name), length(object_name) from user_objects
Run Code Online (Sandbox Code Playgroud)

结果:

/468ba408_LDAPHelper    20  20
/de807749_LDAPHelper    20  20
A4201_A4201_UK  14  14
A4201_PGM_FK_I  14  14
A4201_PHC_FK_I  14  14
Run Code Online (Sandbox Code Playgroud)

oracle plsql

4
推荐指数
1
解决办法
4046
查看次数

使用SQL返回存储在oracle blob列中的文件的可读"文件大小"的优雅方法是什么?

您将如何编写SQL查询以更可读的形式获取blob的大小?例如,大型word文档存储在表格中的blob中.我想要执行类似的事情:

select fnc_getReadableSize(documents.doc) from documents where id = ?
Run Code Online (Sandbox Code Playgroud)

输出:23.4 MB

sql oracle plsql

4
推荐指数
2
解决办法
9017
查看次数

无论如何要禁用dojo日期文本框的客户端验证?

在我下面的例子中,我使用的是dijit.form.DateTextBox:

<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" constraints="{datePattern:'MM/dd/yyyy'}"  value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' />
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果用户开始在日期中输入"asdf",则字段变为黄色,并显示弹出错误消息The value entered is not valid..即使我删除constraints="{datePattern:'MM/dd/yyyy'}"它仍然有效.

在不详细说明原因的情况下,我希望能够保留dojoType并在特定情况下仍然阻止验证.

javascript dojo

3
推荐指数
1
解决办法
5326
查看次数

在JavaBean的getter/setter实现中优雅实现可以为空的java.util.Date的"防御性复制"的示例?

使用下面的例子,Joshua Bloch的防御性复制技术是否有优雅的Java实现?nullChecking确实是我认为的问题,但也许有一种更简单的方法来实现防御性复制.

   public class Audit {
      private Date dateCompleted;
      ...      
      public Audit() {
        super();
      }

      //defensive copy of dateCompleted
      public final Date getDateCompleted() {
        if (dateCompleted != null){
          return new Date(dateCompleted.getTime());
        }else{
          return null;
        }
      }

      public final void setDateCompleted(Date dateCompleted) {
        if (dateCompleted != null){
          this.dateCompleted = new Date(dateCompleted.getTime());
        }else{
          this.dateCompleted = null;
        }
      }
      ...
   }  
Run Code Online (Sandbox Code Playgroud)

java javabeans effective-java

2
推荐指数
1
解决办法
551
查看次数

更换两个主键值并绕过ORA-00001的更好方法:违反了唯一约束?

目标: 交换两个记录的主键而不会遇到ORA-00001:违反了唯一约束."有效"的解决方案(下面再说)只是一个愚蠢的黑客.在提交事务之前是否存在推迟约束强制执行的功能/技术?
至于动机 - 使用此数据的遗留应用程序存在设计缺陷并依赖于ID顺序和值 - 请求是交换PK值,如下所示:

BEFORE: 
388    English
389    French

AFTER:
389    English
388    French
Run Code Online (Sandbox Code Playgroud)

什么不起作用:

BEGIN
   UPDATE SPOKEN_LANGUAGES
      SET id = 388
    WHERE id = 389;

   UPDATE SPOKEN_LANGUAGES
      SET id = 389
    WHERE id = 388;
END;
Run Code Online (Sandbox Code Playgroud)

黑客/解决方案"有效"

DECLARE
  V_MAGIC_NUMBER   NUMBER := 9999999;
BEGIN
  UPDATE SPOKEN_LANGUAGES
     SET id = 388 + V_MAGIC_NUMBER
   WHERE id = 389;

  UPDATE SPOKEN_LANGUAGES
     SET id = 389 + V_MAGIC_NUMBER
   WHERE id = 388;

  UPDATE SPOKEN_LANGUAGES
     SET id = id - V_MAGIC_NUMBER
   WHERE …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

2
推荐指数
1
解决办法
211
查看次数

ORA-00904和表和列肯定存在

这是Oracle的新手,但我不知道为什么这不起作用,我有点疯了.

我的查询工作正常,但只要我添加第三个连接语句,它就会给我以下错误消息:

这是我的查询.一切看起来都拼写正确,表格和列都存在.TS_ORDER_SEC_SPEC目录中只有一条记录

错误:

Number: 904
ErrorMessage: ORA-00904: "OSS"."ORDER_ID": invalid identifier
Run Code Online (Sandbox Code Playgroud)

SQL:

    select 
  o.from_crrncy as from_crrncy
, o.to_crrncy as to_crrncy
, o.trade_date as trade_date
, o.settle_date as settle_date
, o.order_id as order_id
, oa.exec_broker as oaexecbroker
, o.target_crrncy as given_ccy
From ts_order o
     inner join ts_order_alloc oa on oa.order_id = o.order_id
     inner join TS_ORDER_SEC_SPEC oss on oss.order_id = o.order_id
Run Code Online (Sandbox Code Playgroud)

数据库结构

sql oracle

1
推荐指数
1
解决办法
600
查看次数