java – Spring MVC:JSP模板在执行后获取文本

我需要进行特定的服务调用,我需要传递一个String对象作为
HTML参数.此
HTML将由该服务呈现(此服务发送电子邮件,此HTML将是电子邮件正文)

到目前为止,我一直在使用JSP文件进行所有模板操作.我的所有视图都呈现HTML页面并将其返回给用户.

我不知道如何执行JSP文件,填写所有信息然后将其转换为文本.这是我第一次使用Spring MVC.

编辑:
这里的相关问题真的已经过时了’09

最佳答案 我将重点介绍将jsp转换为文本的部分.

有一些关于jsp作为模板引擎的用法的评论,但我的建议是模板不可知.

我们的想法是模仿浏览器调用,即提交我们希望通过电子邮件发送结果的表单,并确保我们可以通过浏览器正确访问此页面.
我假设发布请求在这里改变得到很容易.

public class MailServiceHelper {
    public String getJsp(String url, Map<String,String> form, HttpServletRequest request) {
        //we can figure out the base url from the request
        String baseUrl =""; 
        HttpClient client = new HttpClient();
        PostMethod method = new PostMethod(baseUrl+"/"+url);
        for (String formElement : form.keySet()) {
            method.setParameter(formElement, form.get(formElement));    
        }

        try {

            int statusCode = client.executeMethod(method);
            if (statusCode >= HttpStatus.SC_OK && statusCode < HttpStatus.SC_MULTIPLE_CHOICES) {
                byte[] responseBody = method.getResponseBody();     
                return new String(responseBody,StandardCharsets.UTF_8);
            }else{
                throw new RuntimeException("Failed to read jsp, server returened with status code: "+statusCode);
            }
        } catch (Exception e) {
            throw new RuntimeException("Failed to read jsp",e);
        }finally{
            method.releaseConnection();
        }
    }

您可能还需要验证您的客户端是否也受支持.
我在我的exanple中使用httpclient 3.1看到http 3.1 authentication;切换到更新的客户端应该很容易.

通过电子邮件发送HTML在以下答案中引用:How do I send an HTML email?
建议使用内部样式表,以便电子邮件客户端正确呈现html.

点赞