相关疑难解决方法(0)

如何防止映射在/*上的前端控制器servlet处理静态资源

我有一个servlet作为前端控制器.

@WebServlet("/*")
Run Code Online (Sandbox Code Playgroud)

但是,这也处理CSS和图像文件.我怎么能阻止这个?

servlets

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

Java EE 6和替代品

我是一名Java SE开发人员,但我有丰富的Web背景(PHP,Perl/CGI等),现在我正在开始新项目.它将具有Web界面,意大利面条业务逻辑,关系数据库作为存储和与其他服​​务的连接.我是从零开始做的.

我的同事告诉我要使用弹簧,弹簧安全装置和支柱.我简要地看一下Java EE 6规范,发现它几乎涵盖了企业应用程序的所有方面.我问同事他们为什么需要spring和struts,但看起来他们只是因为熟悉它们并且不熟悉经典的Java EE 6堆栈而使用技术.

所以,我的问题是:Java EE 6有什么不好的地方?如果有JNDI查找,为什么我需要spring?为单元测试创​​建假的InitialContext需要一两天的时间.这就是全部:我坚持使用像春天这样的外部工具.如果Servlets规范中内置了安全性,为什么我需要spring-security?我可以使用web.xml将任何请求映射到任何servlet,不需要struts.xml.我可以使用servlet-filters而不是struts拦截器.有RMI,所以我不需要弹簧遥控器.等等..

如果有Java EE 6,为什么我要用所有那些花哨的东西来烦扰自己呢?

我真的很想找到Java EE 6还不够的情况.你有什么?

谢谢!

java spring struts java-ee-6

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

Web框架应该是Filter还是Servlet?

让Web框架处理来自单个入口点的请求是一个已解决的问题.但是,单个入口点应该是Filter还是Servlet?为什么Web应用程序开发人员更喜欢一个?为什么框架开发人员更喜欢一个?

java servlets java-ee servlet-filters

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

Java EE Servlet是否实际直接使用?

我只是想开始使用Java EE和相关概念.但是,我在理解某些技术与它们扮演的角色之间的关系时遇到了一些麻烦.

据我所知,Java EE Servlet是一个在服务器内运行的Java类,它生成对请求的响应(通常是对HTTP请求的HTML响应,尽管Servlet理论上可以服务于任何协议).

我的问题:

  • 据我所知,我可以直接编写Servlet类,也可以使用JSP或JSF等技术,然后为我生成/提供Servlet.无论如何,我最终运行我的应用程序的Java EE Web容器(例如Apache Tomcat)将只看到Servlet,并且不关心它们是如何创建的(因此Servlet是一种低级管道).真的吗?
  • 如果Servlet是低级的,有没有理由直接使用Servlet?我已经看过许多解释如何编写Servlet的教程,但这看起来相当不实用.有没有直接编写Servlet更好/更喜欢使用JSP或类似的情况?
  • 最后,Servlets需要运行服务器(例如Apache Tomcat).在阅读该上下文中的服务器时,我已经看到了各种名称,例如(Java EE)Web容器,servlet容器,JSP容器Java EE服务器.这些术语是否都意味着相同,还是有区别?

谢谢你帮助我开始吧!

java servlets java-ee

10
推荐指数
3
解决办法
3617
查看次数

Tomcat中的URL映射到FrontController servlet

我正在尝试遵循Design Patterns基于Web的应用程序的模式.从maping"root"URL开始,这一切都很好.

我想通过"前端控制器"提出所有请求,所以我放了

<servlet-mapping>
    <servlet-name>ControllerServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

web.xml.通过Netbeans逐步显示请求进入,并且Action工作正常,但接着是行

request.getRequestDispatcher("/WEB-INF/" + view + ".jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

也被控制器捕获,它再次进入Action,一切都失败了.

我可以通过不从URL根目录来使其工作,例如

  <servlet-mapping>
        <servlet-name>ControllerServlet</servlet-name>
        <url-pattern>/pages/*</url-pattern>
    </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.有没有办法让它与"根"URL一起使用?

tomcat servlets

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

包含Servlet中的私有JSP

我让我的Servlet响应所有"/"url-pattern.在内部我需要有时渲染html,所以我想.包含一个JSP页面,但我希望.jsp在外部是不可访问的.另外,我如何将模型对象传递给它.

java jsp servlets

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

ThreadLocal是否优于HttpServletRequest.setAttribute("key","value")?

servlet规范(参见我之前的问题)保证相同的线程将执行所有过滤器和相关的Servlet.鉴于此,HttpServletRequest.setAttribute如果可以选择使用a ThreadLocal(假设您正确清理),我认为没有使用传递数据的任何用途.我觉得使用有两个好处ThreadLocal:类型安全和更好的性能,因为没有使用字符串键或映射(除非可能通过(非字符串)线程ID进入线程集合).

有人可以确认我是否正确,所以我可以继续放弃setAttribute

java servlets thread-local java-ee servlet-filters

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

在理想的MVC中,视图应该知道模型吗?

我的问题是理想的或原始的MVC解释 http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

由于MVC的目标是减少依赖性,View应该知道模型吗?然后什么会阻止它变胖,直接调用模型方法而不问控制器?

更新:当我阅读下面的答案时,我将举一个具体的例子:

假设您创建了一个复杂的计算器(不仅仅是一些简单的计算器,让我们说股票市场的一个选项价格).它只需要股票价格,利率,波动率等投入.那么为什么我要创建一个包含视图中方法的整个模型的引用,因为我只需要这些输入变量?

为什么控制器不会在视图中发生变化时通知,然后仅使用输入回调视图中的方法?

例如,我在这里看到View有一个对整个模型的引用:

http://leepoint.net/notes-java/GUI/structure/40mvc.html

private CalcModel m_model;
Run Code Online (Sandbox Code Playgroud)

language-agnostic model-view-controller design-patterns

7
推荐指数
3
解决办法
6946
查看次数

JSF中的最佳实践:模型,操作,getter,导航,phaselisteners

我已经进入了一个重新考虑JSF实现的项目.现有代码没有遵循正确的JSF标准.为了实现这一点,我正在学习JSF中的所有概念(我已经掌握了JSF的实验).具体来说,我想问一下我的想法.

  • 在MVC模式中,JSF中的模型组件是什么?它是Managed Bean吗?
  • 在动作方法中编写业务逻辑是个好主意吗?我已经看过用行动方法写的数百行.
  • 你认为我们可以在getter方法中编写任何逻辑吗?在JSF生命周期中调用getter或setter的次数.
  • 编写faces-config.xml的传统方法是什么?我在一个文档中读到它说好的做法是将bean的托管bean声明和导航案例一起编写.它会更具可读性.
  • 写入阶段监听器会影响响应时间.例如,我正在编写一个逻辑来解析PhaseListener中的请求参数并执行一些逻辑.对此有什么建议吗?

请回答以上问题.如果我对答案很清楚,那么我会提出更多问题.

java jsf

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

在POJO外部容器中检索servlet上下文,会话和请求

有没有办法从POJO中检索会话?或者最终从POJO中检索bean.

澄清:

基本上我是从servlet创建一个bean,我需要从Web容器外部(从POJO)访问该bean的属性.我无法将请求传递给pojo; 并且需要请求来检索会话.

更具体地说,我有一个Web应用程序,它使用Cactus框架从Web界面运行JUnit测试.但是,调用JUnit测试运行器的servlet是在jar中编译的; 我添加了额外的下拉菜单来更改JUnit测试将从中读取的设置以在不同环境(WLI集群)之间切换,因此,如果已经编译了运行器servlet,我无法修改它以处理来自多个环境的额外参数.我已经尝试过写入.dat文件的持久化方法,JUnit测试将通过Reader类读取该文件; 我也尝试过最终无法通过JUnit测试访问的bean方法.

java session jsp servlets javabeans

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