小编Amo*_*ogh的帖子

如何在控制器中发送要查看的对象列表并返回到Post方法

假设我有课程Person,我制作了一个Person实例列表并将此列表添加到a Model.

List<Person> persons = new ArrayList<Person>();
model.addAttribute("persons",persons);
return "savePersons";
Run Code Online (Sandbox Code Playgroud)

View页面中我有一个表单:

<form:form method="post" action="savePerson" modelAttribute="persons">
    <c:forEach var="person" items="${persons}">
        <form:input path="person.FName" name="FName" id="FName" value="" />
        <form:input path="person.LName" name="LName" id="LName" value="" />
    </c:forEach>

    <button type="submit"></button>
</form:form>
Run Code Online (Sandbox Code Playgroud)

当我单击提交按钮时,我想绑定Person List到控制器上的POST方法.

@RequestMapping(value = { "savePerson" }, method = RequestMethod.POST)
public String savePerson(Model model, HttpServletRequest request,
        HttpSession session,@ModelAttribute("persons")List<Person> persons) {
    System.out.println(persons.length);
    return "success";
}
Run Code Online (Sandbox Code Playgroud)

但该persons方法没有绑定/获取列表POST.

是否可以以这种方式绑定列表对象,或者有替代方法吗?

java post spring-mvc

31
推荐指数
2
解决办法
9万
查看次数

下载带有原始文件名的文件

在我的项目中,我正在上传文件.在上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件保存GUID在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中.

例如-

- 上传的文件名是questions.docx

- 然后orignalFileName将是"问题"

-FileExtension将是".docx"

-File上传文件名为"0c1b96d3-af54-40d1-814d-b863b7528b1c"

上传工作正常.但是当我下载一些文件时,它会被下载文件名作为GUID,在上面的例子中是"0c1b96d3-af54-40d1-814d-b863b7528b1c".
如何下载具有原始文件名的文件,即"questions.docx".

已添加代码

    /**
     * code to display files on browser
     */
    File file = null;
    FileInputStream fis = null;
    ByteArrayOutputStream bos = null;

    try {
        /**
         * C://DocumentLibrary// path of evidence library
         */
        String fileName = URLEncoder.encode(fileRepo.getRname(), "UTF-8");
        fileName = URLDecoder.decode(fileName, "ISO8859_1");
        response.setContentType("application/x-msdownload");            
        response.setHeader("Content-disposition", "attachment; filename="+ fileName);
        String newfilepath = "C://DocumentLibrary//" + systemFileName;
        file = new File(newfilepath);
        fis = new FileInputStream(file);
        bos = new ByteArrayOutputStream();
        int readNum;
        byte[] buf …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc

30
推荐指数
2
解决办法
6万
查看次数

如何将Chromium Embedded Framework(CEF)与java集成

我想创建一个桌面应用程序来浏览网站,我不想制作浏览器而是浏览器嵌入应用程序.我试过JavaFx但我发现了一些问题,比如缺少对插件的支持(例如:flash,pdf viewer等).

经过大量的搜索,我发现了用于CEF的Chromium Embedded Framework(CEF)或JCEF Java包装器,但我不知道如何在java中使用它.什么是依赖?我如何开始使用开发(POC)netbeans

是否可以在java应用程序中嵌入CEF/JCEF?

java chromium chromium-embedded

15
推荐指数
2
解决办法
3万
查看次数

是否可以指示GCC不消除死代码?

假设我正在使用现代版本GCC来编译C程序.此外,考虑到我的程序包含陈旧的分支,但我非常喜欢那些陈旧的分支中的死代码被编译并出现在最终的程序中.考虑以下程序:

int main(int argc, char** argv) {
    int a = 0;
    goto skip;
        a = -1;
    skip: ;
    return a;
}
Run Code Online (Sandbox Code Playgroud)

显然,如果我使用GCC默认优化设置,第二个赋值将永远不会进入最终程序,因为编译器可以很容易地告诉它永远不会被执行.假设我不希望这种情况发生.

GCC,有许多标志涉及死代码(最值得注意的是-fdce),我可以选择在相应地调用GCC时显式停用它们:

-fno-dce
-fno-dse
-fno-tree-dce
-fno-tree-dse
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该指示GCC不要弄乱第二项任务.然而,相关的代码似乎永远不会进入我的程序.

为什么GCC坚持要删除死代码,有没有办法指示GCC 不要去掉第二个任务?

c gcc

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

阻止特定c#winform的桌面共享或检测桌面共享

在开发检查软件时,我有一个要求防止通过TeamViewer,AnyDesk,Ammyy Admin等应用程序共享桌面,或者至少阻止对其进行检测。我们的考试软件是用C#开发的,它是一种winform逐一呈现问题。

我不认为检测如此简单,因为它们有多种捕获屏幕桌面复制API,BitBlt,Direct3D,DirectX,DirectShow等方法。

因此,我开始探索如何防止在启动桌面共享时显示我的c#winform。为此,到目前为止,我已经尝试了以下操作:

  1. 由于我们的应用程序将在Windows 7及更高版本上运行,因此我通过检查设置SetWindowDisplayAffinityWDA_MONITOR对Winform 启用保护的桌面组合来利用DWM(停止窗口管理器)。通过在我开始桌面共享时执行此操作,远程控制的计算机可以看到表单上的黑色层。但是,并非所有桌面共享应用程序都具有相同的行为。就像TeamViewer的行为一样,但Ammyy Admin的行为却像AnyDesk。某些应用程序如何显示黑层而有些则不显示?我还能做些什么吗?
if (winForm != null)
{
    if (Protect)
        result = SetWindowDisplayAffinity(winForm.Handle, WDA_MONITOR);
    else
        result = SetWindowDisplayAffinity(winForm.Handle, WDA_NONE);
}
Run Code Online (Sandbox Code Playgroud)

我编码的这种方法并不完全适用于所有桌面共享应用程序,因此,是否有100%的解决方案可以防止/检测桌面共享?

如果您尝试了VLC播放器的“ DirectX(DirectDraw)视频输出”,那么此输出方法也将执行相同的操作SetWindowDisplayAffinity,当启动任何桌面共享应用程序时,它将在视频上显示黑色图层,而我测试了该功能是否可与将近9种桌面共享应用程序一起使用知道怎么做?可以用c#winform完成吗?

更新29-05-2019

检查VLC代码后,我知道它们正在使用DirectDraw进行硬件覆盖。因此,我创建了vc ++项目并使用d3d9并创建了具有红色表面的覆盖,现在,如果我将机器移开,则红色的表单将显示黑色。答对了!!解决了一半问题。

现在,我正在尝试为该窗口设置透明度,以便覆盖将在我的C#应用​​程序的顶部,并且考生可以进行考试,如果进行远程考试,则覆盖将以黑色显示。为了使窗口透明,我使用了DwmExtendFrameIntoClientAreawinapi,但是现在在远程也可以将其显示为透明。有什么办法吗?

c# directx winapi direct3d win32gui

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

c3p0 maxIdleTime和mysql的wait_timeout相同?

我有一个Spring MVC + Mysql(JDBC 4)+ c3p0 0.9.2项目.

在c3p0中,maxIdleTime值为240(即4分钟),wait_timeout在Mysql的my.ini中为30秒.

根据c3p0

maxIdleTime :(默认值:0)秒可以在丢弃之前保持池的连接但未使用.零意味着空闲连接永不过期.

根据Mysql

wait_timeout:服务器在关闭非交互式连接之前等待活动的秒数.

现在我对此有一些了解:(我知道一些答案,只是为了确定我是否正确)

  1. 未使用的连接是指sleep根据mysql(?)处于状态的连接
  2. 什么是交互式和非交互式连接?
  3. 未使用的连接和非交互式连接是否相同?因为我的DBA设置wait_timeout为30秒(他通过观察数据库服务器达到此值,因此连接数量非常少,处于睡眠模式)这意味着连接可以处于sleep模式30秒后,它将被关闭但是另一方面c3p0 maxIdleTime设置为240秒,因此maxIdleTime在这种情况下,此设置是否起作用.
  4. 什么是interactive_timeout

java mysql database-connection jdbc c3p0

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

拦截器或过滤器

我正在开发一个Spring应用程序,我想在其中进行一些安全检查,如MD5检查文件,数据库检查,应用程序版本检查等.

我已经阅读过关于拦截器和滤波器的信息,但仍然有点混淆哪一个很好用.

无论我读过什么文档,都指定过滤器和拦截器都可以用于日志记录和审计,因此哪一个适合这种情况.此外,所有这些安全检查(文件的MD5检查,数据库检查,应用程序版本检查)都可以配置为允许DB检查允许,同样允许应用程序版本检查.

spring spring-mvc interceptor servlet-filters

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

'peer not authentication' SSL 证书错误使用 DefaultHttpClient

我有一个应用程序 jar,我从中使用 DefaultHTTPClient 类对象调用HTTPS url,但它给对等方未验证异常,所以我想使用密钥库对 jar 进行签名。

我有一个带有公钥的 .cer 文件,我可以导入到密钥库中,但是当我使用 jarsigner 工具时,它说没有找到证书链。你必须有私钥和关联公钥。

我也有 .pfx 文件,它假设是一个私钥,但我不知道如何导入它。谁能告诉我如何导入 .pfx 文件并在 jarsigner 中使用的步骤。

如果我在某处错了,请纠正我..

更新

根据@Duncan,我可以通过引用此链接在 JVM 中导入 .cer 文件. 我使用 bellowed 命令将 .cer 导入 cacerts

c:\Program Files\Java\jre7\bin>keytool -importcert -alias esbcert -file "e:\Desktop\esbcert\esb.cer" -keystore "c:\Program Files\Java\jre7\lib\security\cacerts" -storepass changeit

在此之后,我输入“y”以信任证书

Trust this certificate? [no]: y Certificate was added to keystore

之后我运行我的应用程序,但它仍然给我 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

堆栈如下:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.jav …
Run Code Online (Sandbox Code Playgroud)

java keytool

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

Mysql-Workbench 6.0失去了按列过滤结果的功能

在运行查询后的Mysql-Workbench 5.x中,我可以右键单击结果中的列并选择"过滤列"或类似的东西.然后我可以输入一个值,只显示该列中具有该值的行.

在6.x中,这种能力似乎消失了.

它隐藏在某处还是需要回到5.x?

谢谢.

更新

在此输入图像描述

mysql mysql-workbench

5
推荐指数
0
解决办法
1448
查看次数

使用win32 API函数启用/禁用任务管理器,而不是使用Windows注册表

目前在C#开发的Windows应用程序中,我正在禁用Task manageruser switching option设置以下注册表的值:

禁用任务管理器:

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr1

禁用(隐藏)用户切换:

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\HideFastUserSwitching 价值1

但是,在Windows 7计算机上测试此Windows应用程序时,在不在Administrators组中的登录用户面临访问权限问题,这里是异常文本:

12/16/2015 12:11:24 PM:拒绝访问注册表项"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System".:Win32Error(0,0)

后来我查了手动添加子项DisableTaskMgr通过regedit,我得到同样的消息Access is Denied.

在应用程序清单文件我已经启用requestedExecutionLevel设置:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />.我也试过运行应用程序exe Run as Administrator.

如果我在Administrators组中添加该用户,则不会遇到任何问题.

那么,是否有任何替代启用/禁用任务管理器和隐藏用户切换可能是通过使用win32 API函数user32.dll?或通过vc++什么解决方案?

业务要求:

嗯,这是一个考试软件的应用程序,我们希望限制候选人使用任何其他应用程序(网络浏览器,文件浏览器等)以及在提供考试时终止该应用程序.所以我们从开始菜单选项以及ctrl + alt + del菜单(屏幕)中阻止了任务管理器,我们还想switch user从ctrl + alt + del菜单中删除选项.

.net c# windows taskmanager visual-c++

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