我创建了一个Web应用程序(WAR)并将其部署在Tomcat上.在webapp中,有一个页面,其中包含管理员可以输入某些配置数据的表单.我不想将这些数据存储在DBMS中,而只是存储在文件系统上的XML文件中.在哪里放?
我想将文件放在部署应用程序本身的目录树中的某个位置.我的配置文件应该在WEB-INF目录中吗?或者把它放在别的地方?
什么是在servlet中使用的Java代码来查找目录的绝对路径?或者可以通过相对路径访问它?
我正在开发一个Java企业应用程序,目前正在使用Java EE安全性来限制特定用户对特定功能的访问.我配置了应用程序服务器和所有内容,现在我使用RolesAllowed-annotation来保护方法:
@Documented
@Retention (RUNTIME)
@Target({TYPE, METHOD})
public @interface RolesAllowed {
String[] value();
}
Run Code Online (Sandbox Code Playgroud)
当我使用这样的注释时,它工作正常:
@RolesAllowed("STUDENT")
public void update(User p) { ... }
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的,因为我必须在这里使用String,重构变得困难,并且可能发生拼写错误.因此,我想使用Enum值作为此注释的参数,而不是使用String.Enum看起来像这样:
public enum RoleType {
STUDENT("STUDENT"),
TEACHER("TEACHER"),
DEANERY("DEANERY");
private final String label;
private RoleType(String label) {
this.label = label;
}
public String toString() {
return this.label;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用Enum作为这样的参数:
@RolesAllowed(RoleType.DEANERY.name())
public void update(User p) { ... }
Run Code Online (Sandbox Code Playgroud)
但是后来我得到了以下编译器错误,虽然Enum.name只返回一个String(它总是不变的,不是吗?).
注释属性RolesAllowed.value的值必须是常量表达式`
我尝试的下一件事是在我的枚举中添加一个额外的最终字符串:
public enum RoleType {
...
public static final String STUDENT_ROLE = STUDENT.toString();
...
}
Run Code Online (Sandbox Code Playgroud)
但这也不能作为参数,导致相同的编译器错误:
// The …Run Code Online (Sandbox Code Playgroud) 一切正常,但只有文件很小,大约1MB,当我尝试使用更大的文件,比如20MB我的浏览器显示它,而不是强行下载,到目前为止我尝试了很多标题,现在我的代码看起来:
PrintWriter out = response.getWriter();
String fileName = request.getParameter("filename");
File f= new File(fileName);
InputStream in = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bin);
while(din.available() > 0){
out.print(din.readLine());
out.print("\n");
}
response.setContentType("application/force-download");
response.setContentLength((int)f.length());
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=\"" + "xxx\"");//fileName);
in.close();
bin.close();
din.close();
Run Code Online (Sandbox Code Playgroud) 我正在阅读JSF,我觉得为什么JSF是一个MVC框架(或者至少哪个部分属于哪个"字母")我感到很困惑.
我看了一下这个问题:JSF MVC框架中哪些组件是MVC?
我在那里阅读如果你不在聚合视图中查看模型是你的实体,视图是你的XHTML代码而控制器是托管bean.嗯......好的,但视图通常不依赖于执行进一步的业务逻辑调用,这些调用返回一组实体,例如,描述是否仍然适合?
我读过的一本书将其描述为托管bean,是Faces Servlet(Controller)用于调用业务层(Model)的某种"消息"bringer,然后XHTML代码就是视图.
有太多的解释和差异,所以我不知道哪个或如何理解它.
我目前正在研究如何使用Windows身份验证而不是SQL Server身份验证从我的Java EE Web应用程序连接到SQL Server数据库.我从Tomcat 6.0运行此应用程序,并使用Microsoft JDBC驱动程序.我的连接属性文件如下所示:
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser = user
dbPass = password
dbServer = localhost:1433;databaseName=testDb
dbUrl = jdbc:sqlserver://localhost:1433
Run Code Online (Sandbox Code Playgroud)
使用SQL Server身份验证时,以这种方式连接到SQL Server数据库时没有任何问题.
有什么方法可以检索用户的Windows身份验证的凭据并使用该身份验证的SQL Server?
更新:我知道在ASP.net中有一种方法来设置Windows身份验证以访问webapp,这正是我正在寻找的,除了我想将该令牌传递给SQL Server以访问数据库.
我正在将文件上传到服务器.文件上载HTML表单有2个字段:
提交表单时,将正确接收文件内容.但是,当读取文件名(上面的第1点)时,它会出现乱码.ASCII字符正确显示.如果用其他语言(德语,法语等)给出名称,则存在问题.
在servlet方法中,请求的字符编码设置为UTF-8.我甚至尝试过如上所述的过滤器 - 如何让这段代码提交一个带有jQuery/Ajax工作的UTF-8表单textarea? - 但它似乎不起作用.只有文件名似乎是乱码.
文件名所在的MySQL表支持UTF-8.我给了随机的非英文字符,它们被正确存储/显示.
使用Fiddler,我监视请求并正确传递所有POST数据.我正在尝试确定数据如何/在哪里出现乱码.任何帮助将不胜感激.
我正在开发一个Java EE应用程序,我在开发期间在本地JBoss安装上反复部署.我希望通过将我的应用程序直接热部署到[JBOSS]/server/default/deploy/myApp来加速构建
它似乎有效 - 但是在硬部署和JBoss开始使用新类之间似乎也有一些任意的延迟.我对JBoss不太熟悉,但我认为它会缓存类,这就是导致问题的原因.
我是否正确,如果是这样,我如何让JBoss刷新它的缓存?
我不仅想知道什么是Facet,还有什么是Facet'在物理层面'(据我所知,它不是一个单独的罐子,而是什么?)?
我也想知道在部署之后它如何影响我的应用程序.我会解释一下真实的例子:
我有2个方面(由IDE创建):Spring Facet和Web Facet(用于jsf).我将它部署到Tomcat,我的应用程序运行正常.
然后我(通过IDE)添加了一个方面 - JPA Facet.我重新部署了应用程序,它仍然工作正常:)
所以,我只是好奇这是什么,为什么我们需要它?
在大多数网站上,当用户即将提供登录系统的用户名和密码时,会出现一个"保持登录状态"的复选框.如果选中该复选框,它将使您在同一Web浏览器的所有会话中登录.如何在Java EE中实现相同的功能?
我正在使用基于FORM的容器管理身份验证和JSF登录页面.
<security-constraint>
<display-name>Student</display-name>
<web-resource-collection>
<web-resource-name>CentralFeed</web-resource-name>
<description/>
<url-pattern>/CentralFeed.jsf</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>STUDENT</role-name>
<role-name>ADMINISTRATOR</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc-realm-scholar</realm-name>
<form-login-config>
<form-login-page>/index.jsf</form-login-page>
<form-error-page>/LoginError.jsf</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Admin who has ultimate power over everything</description>
<role-name>ADMINISTRATOR</role-name>
</security-role>
<security-role>
<description>Participants of the social networking Bridgeye.com</description>
<role-name>STUDENT</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud) java-ee ×10
java ×8
tomcat ×2
annotations ×1
deployment ×1
ejb-3.0 ×1
enums ×1
facet ×1
ide ×1
java-ee-6 ×1
jboss ×1
jdbc ×1
jpa ×1
jsf ×1
jta ×1
servlets ×1
sql-server ×1
terminology ×1