我对编写JSP/Servlet时使用的技巧感兴趣.我将开始:
我最近发现了如何在另一个标记的属性中包含一个JSP标记的输出:
<c:forEach items="${items}">
<jsp:attribute name="var">
<mytag:doesSomething/>
</jsp:attribute>
<jsp:body>
<%-- when using jsp:attribute the body must be in this tag --%>
</jsp:body>
</c:forEach>
Run Code Online (Sandbox Code Playgroud) 我听说JSF正在实现基于组件的MVC,而Spring MVC正在实现基于请求的MVC.我想知道这两种类型之间的确切技术差异是什么.
我将Spring MVC调度程序映射为全局前端控制器servlet /*.
<servlet>
<servlet-name>home</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>home</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
但是,此映射会停止访问CSS,JS,图像等静态文件,这些/res/文件都在文件夹中.
我怎么能访问它们?
我正在使用JSP和JDBC实现MVC.我已将数据库类文件导入到我的JSP文件中,并且我想显示数据库表的数据.我不知道应该如何ResultSet从Java类返回到JSP页面并将其嵌入HTML中.
我怎样才能做到这一点?
我从JSF2.0开始看到,Facelets视图定义语言是首选的视图定义语言,而不是作为遗留后退而被弃用的JSP.我想理解为什么Facelets比JSF2.0以后的视图定义语言更优先于JSP?我知道JSP也有一些模板行为,这是采用Facelets的主要驱动点.
PS:我在stackoverflow上经历过这篇文章,但我不认为它回答了我的问题.因此将此作为单独的问题发布.
我正在尝试习惯JSF如何处理数据(来自弹簧背景)
我正在创建一个维护用户列表的简单示例,我有类似的东西
<h:dataTable value="#{userListController.userList}" var="u">
<h:column>#{u.userId}</h:column>
<h:column>#{u.userName}</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
然后"控制器"有类似的东西
@Named(value = "userListController")
@SessionScoped
public class UserListController {
@EJB
private UserListService userListService;
private List<User> userList;
public List<User> getUserList() {
userList = userListService.getUsers();
return userList;
}
}
Run Code Online (Sandbox Code Playgroud)
而"服务"(虽然看起来更像是DAO)有
public class UserListService {
@PersistenceContext
private EntityManager em;
public List<User> getUsers() {
Query query = em.createQuery("SELECT u from User as u");
return query.getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的做事方式吗?我的术语是对的吗?"服务"感觉更像是DAO?控制器感觉它正在做一些服务工作.
每个开发人员必须知道的设计模式是什么?
我对使用Spring和Hibernate的Java Web开发人员的上下文感兴趣.我经常听说,设计模式方面的良好知识对于使用这些框架至关重要.任何人都可以列出具体细节吗?
例如,我知道理解抽象工厂和工厂模式,单例模式等是绝对必要的.我正在寻找一份全面的清单.
我写了Front Controller Pattern并运行测试.不知何故,request.getPathInfo()在返回路径信息时返回null.
1.调用servlet的HTML
<a href="tmp.do">Test link to invoke cool servlet</a>
Run Code Online (Sandbox Code Playgroud)
2.在DD中映射servlet.
任何有.do扩展名(ex tmp.do)的东西都会调用servlet"Redirector"
<!-- SERVLET (centralized entry point) -->
<servlet>
<servlet-name>RedirectHandler</servlet-name>
<servlet-class>com.masatosan.redirector.Redirector</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RedirectHandler</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
3.从*.do接收请求的servlet
public class Redirector extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//test - THIS RETURNS NULL!!!!
System.out.println(request.getPathInfo());
Action action = ActionFactory.getAction(request); //return action object based on request URL path
String view = action.execute(request, response); //action returns String (filename)
if(view.equals(request.getPathInfo().substring(1))) {
request.getRequestDispatcher("/WEB-INF/" + view + …Run Code Online (Sandbox Code Playgroud)