Java JSP页面的模板

Java JSP页面的模板,java,spring,jsp,Java,Spring,Jsp,我正在寻找一种为jsp页面创建模板的方法,该模板的行为类似于Java中的genereic类 我现在拥有的是:在我的视图文件夹(WEB-INF/view/jsp)中,我有一个目录列表,其中有相同的四个文件,还有他的函数的接收名称(比如,新建项、更改项、删除项、列表) 在这些组中的每一个组中,jsp页面都保存从我的项目中的一个特定实体类读取的数据 例如,对于我的Dao类,我有如下内容: 通用类 public class Dao<E> { private final Class&

我正在寻找一种为jsp页面创建模板的方法,该模板的行为类似于Java中的genereic类

我现在拥有的是:在我的视图文件夹(WEB-INF/view/jsp)中,我有一个目录列表,其中有相同的四个文件,还有他的函数的接收名称(比如,新建项、更改项、删除项、列表)

在这些组中的每一个组中,jsp页面都保存从我的项目中的一个特定实体类读取的数据

例如,对于我的Dao类,我有如下内容:

通用类

public class Dao<E> {

    private final Class<E> entity;

    @Autowired
    protected SessionFactory sessionFactory;

    protected Session getCurrentSession(){
        return sessionFactory.getCurrentSession();
    }

    public Dao(Class<E> classe) {
        this.entity = classe;
    }

    public boolean remove(E transientInstance) {
        ...
    }

    ...
}
公共类Dao{
私有最终类实体;
@自动连线
受保护的SessionFactory SessionFactory;
受保护的会话getCurrentSession(){
返回sessionFactory.getCurrentSession();
}
公共Dao(E类){
this.entity=classe;
}
公共布尔删除(E瞬态){
...
}
...
}
这样,每个Dao类都有一个类似的结构:

@Repository
public class FornecedorDao extends Dao<Fornecedor> {

    public FornecedorDao() {
        super(Fornecedor.class);
    }

}
@存储库
NECEDORDAO的公共类扩展了Dao{
公共场所{
超级(适用于Necedor.类);
}
}
是否有任何方法可以完成类似于jsp页面的内容?(除了Spring之外,我更喜欢一个不需要添加到项目其他框架的解决方案)

更新

更好地解释每个文件夹中的每个页面:

new_item.jsp->它只是一个表单,我从中向服务器提交数据。表单的每个字段都是实体类中的一个atribute

更改\u item.jsp->与新建的\u item.jsp相同,并添加一个隐藏字段,该字段带有类的atribute id(主键)

remove_item.jsp->拥有一个只有一个字段的表单:一个隐藏字段,其id为要删除的元素

jsp->接收项目列表并生成一个表,其中每个列都是来自我的实体类的一个属性

举例来说,我希望完成的是:


在模板中,我将有表单或表的html代码。这些页面没有样式:jquery代码读取它们,去掉标题和正文内容,然后将这些数据添加到我的jsp页面dashboard.jsp中的div中。在每一个页面中,我只想告诉我将使用的实体类的名称,并根据模板创建要交付给浏览器的页面。我想您的意思是在多个页面中重用模板,对吗?许多技术为此提供了解决方案。类继承的类比意味着自上而下的开发,下一页更加专业化。在模板世界中,瓷砖和类似技术有效地支持所谓的“布局”——定义插入更多标记位置的子模板


此功能只是现代标记语言的功能之一。特别是可以在JSF中找到它。参见HybridJava

您能得到的最接近的东西是JSP include标记:

<jsp:include page="new_item.jsp">
    <jsp:param name="formaction" value="newItemServlet"/>
    <jsp:param name="entityparams" value="{params:[param1,param2,param3]}"/>
</jsp:include>


这将允许您将参数传递给JSP模板。然后可以使用JSP和javascript解析这些参数,这将呈现自定义表单字段。

如果您想坚持使用JSP,您应该查看Apache Tiles以获得合理的模板解决方案

如果你愿意继续做其他事情,你应该退房,或者

我个人与Thymeleaf合作过,可以说您可以非常轻松地创建布局,然后可以通过特定页面“实现”或通过更专业的布局“扩展”


上述三个模板引擎都可以在Spring中轻松配置为视图解析器

代码段的用途是什么?它是为了解释创建基类的含义,还是与问题具体相关?您希望共享JSP的哪一部分,以及希望更改什么?是否所有页面都具有相同的外观和感觉,但它们处理的“对象”类型不同?(例如,一个编辑汽车列表,另一个编辑动物列表)我添加了更多关于我想要的规格的信息。包含代码只是为了显示我对模板和每个派生页面的期望。