当前位置 : 主页 > 编程语言 > java >

如何将自动弹簧服务转换为jsp?

来源:互联网 收集:自由互联 发布时间:2021-06-25
如标题中所述,我需要在page.jsp中自动装配服务.. “我知道不建议这样做” %@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%%@ taglib uri="http://java.sun.com/jsp/jstl/core"
如标题中所述,我需要在page.jsp中自动装配服务..
“我知道不建议这样做”

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


<%@ page import="org.springframework.context.ApplicationContext"%>
<%@ page
    import="org.springframework.web.servlet.support.RequestContextUtils"%>

<%@ page import="com.fussa.fyby.service.Test"%>
<%@ page import="com.fussa.fyby.model.PIL_P_APPLCTN"%>


<%
    ApplicationContext ac = RequestContextUtils.getWebApplicationContext(request);
    Test s = (Test) ac.getBean("fussafyby");
    PIL_P_APPLCTN app = s.getByKey(13);
%>


<c:out value="azeerty"></c:out>

<c:out value="${ app.APPLCTN_CD }"></c:out>

<select name="listeGroupes" id="listeGroupes">

    <option value="123">123</option>

    <option value="${ app.APPLCTN_CD }">${ app.APPLCTN_CD }</option>
    <option value="123">${ s.afficher() }</option>

</select>

我的服务:

@Component("fussafyby")
@Transactional
public class Test {

    @Autowired
    private SessionFactory sessionFactory;

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

    public PIL_P_APPLCTN getByKey(int key) {
        return (PIL_P_APPLCTN) getSession().get(PIL_P_APPLCTN.class, key);
    }



    public String affiche() {
        return "FuSsA";
    }
}

仅显示选择中的azeerty消息和123选项.

谢谢你的任何建议..

你甚至不应该尝试这样做……
JSP被转换为java源代码并由servlet容器编译为java类,Java EE规范没有说明它们去哪里,所以你不能对它们进行弹簧扫描,因此注释不是一个选项

更糟糕的是,JSP不能是Spring bean,因为它们是由应用程序上下文之外的servlet容器创建的,因此XML注入也无法工作.

甚至完整的AspectJ也无法使用,因为再一次你无法控制JSP类所在的位置,所以你甚至无法在它们上使用加载时织入器.

问题不在于“不建议这样做”,而是JSP是由servlet容器管理的特殊类.您可以在scriplet中使用Java代码,但不能将它们作为普通的Java类进行管理.

顺便说一下,你是否认为在scriptlet中不推荐过多的Java代码有充分的理由?

网友评论