Java 如何以字符串形式向UI显示字节[]

Java 如何以字符串形式向UI显示字节[],java,hibernate,spring-mvc,blob,inputstream,Java,Hibernate,Spring Mvc,Blob,Inputstream,我从ms word中获取字符串输入,并使用blob保存在数据库中,现在我想从数据库获取数据并将其显示到UI。请帮助我如何将内容呈现到UI 这是我的控制器,显示我如何从MS Word获取数据: @RequestMapping(value="studentattedanceupload", method = RequestMethod.POST) public @ResponseBody String AttendanceUpload(MultipartHttpServletRequest requ

我从ms word中获取字符串输入,并使用blob保存在数据库中,现在我想从数据库获取数据并将其显示到UI。请帮助我如何将内容呈现到UI

这是我的控制器,显示我如何从MS Word获取数据:

@RequestMapping(value="studentattedanceupload", method = RequestMethod.POST)
public @ResponseBody String AttendanceUpload(MultipartHttpServletRequest request, HttpServletResponse response, @RequestParam Long batchId, @RequestParam Long slotId, @RequestParam String date) {
    String langCode = "EN";
    Long moduleId = (long) 1;

    try {
        MultipartFile multipartFile = request.getFile("filename");
        byte[] bytes = multipartFile.getBytes();
        String content= multipartFile.getContentType();

        mockTestService.saveInstruction(bytes,content, langCode, moduleId);

        return "1";
    } catch (Exception e) {
        logger.error("Error while uploading the Attendance List", e);
    }
    return "2";
}
这是我的服务层:

@Transactional(propagation=Propagation.REQUIRED)    
public void saveInstruction(byte[] bytes,String content, String langCode, Long moduleId) throws FileNotFoundException {
    // TODO Auto-generated method stub
    ModuleDetails moduleDetails = moduleDetailsDao.getModuleDetailsByMid(moduleId);
    if(moduleDetails != null){
        LanguageDetails languageDetails = languageDetailsDao.getLanguageDetailsByLangId(langCode);
        if(languageDetails != null){

            InstructionSet instructionSet = instructionSetDao.getInstructionSetById(new InstructionSetPK(moduleDetails, languageDetails));
            if(instructionSet == null){
                instructionSet = new InstructionSet();
                instructionSet.setInstructionSetPK(new InstructionSetPK(moduleDetails, languageDetails));
                instructionSet.setInstruction(bytes);
                instructionSet.setContent(content);
                instructionSetDao.save(instructionSet);
            }else{
                instructionSet.setInstruction(bytes);
            }
        }else{
            throw new FileNotFoundException();
        }
    }else{
        throw new FileNotFoundException();
    }
}
这是我的刀:

@Override
public Serializable save(Object entity) {
    // TODO Auto-generated method stub
    return  currentSession().save(entity);
}
这是我的模型:
型号

@Entity
@Table(name="TB_INSTRUCTION_SET")
public class InstructionSet implements Serializable {

    @EmbeddedId
    private InstructionSetPK instructionSetPK;

    @Column(name="INSTRUCTION")
    @Lob
    private byte[] instruction;

    @Column(name="CONTENT")
    private String content;

    public InstructionSet() {
        // TODO Auto-generated constructor stub
    }
//getter和setter已初始化

指令setpk的型号

@Embeddable
public class InstructionSetPK implements Serializable {

    @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name="MODULE_ID")
    private ModuleDetails moduleDetails;

    @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name="LANG_ID")
    private LanguageDetails languageDetails;

    public InstructionSetPK() {
        // TODO Auto-generated constructor stub
    }
现在我希望存储在数据库中的数据在UI中显示为在Word中输入的字符串。为此,我可以获取
字节[]
,但我希望显示ms word中的内容,而不是加密的
字节

这是我尝试获取数据的服务层:

@Override
public InstructionSet getInstructionFromModuleIdAndLangCode(Long moduleId,
            String langCode) {
    ModuleDetails moduleDetails = moduleDetailsDao.getModuleDetailsByMid(moduleId);
    if(moduleDetails != null){
        LanguageDetails languageDetails = languageDetailsDao.getLanguageDetailsByLangId(langCode);
        if(languageDetails != null){
            InstructionSet instructionSet = instructionSetDao.getInstructionSetById(new InstructionSetPK(moduleDetails, languageDetails));
            return instructionSet;
        }
    }
    return null;
}
我的控制器(我卡在那里了


我不知道如何获取数据并将其发送到用户界面。您可以在此处使用,它已被用于读取docx、xls等。

您可以在此处使用,它已被用于读取docx、xls等。

如何读取?我可以在字节[]中发送用户界面的数据,但我需要发送的只是字符串。。。这就是我被卡住的地方,我不知道如何使用InputStream发送字符串。您是否正在寻找
新字符串(字节[])
?(应该没有
InputStream
参与)我尝试了使用字符串(byte[]),但是我仍然得到一些嵌入的数据。我已经从MS word发送了“Hi world”,并将其作为blob类型保存在数据库中。不,我想检索Hi world并将其作为字符串发送到UI,而现在我正在获取一些字节类型的加密数据….
getBytes
在文件上返回文件内容,MSWord不是纯文本,因此文件内容不是文本内容。如何读取?我能够以字节[]为UI发送数据但我需要发送的只是字符串。。。这就是我被卡住的地方,我不知道如何使用InputStream发送字符串。您是否正在寻找
新字符串(字节[])
?(应该没有
InputStream
参与)我尝试了使用字符串(byte[]),但是我仍然得到一些嵌入的数据。我已经从MS word发送了“Hi world”,并将其作为blob类型保存在数据库中。不,我想检索Hi world并将其作为字符串发送到UI,而不是现在我正在获取一些字节类型的加密数据….
getBytes
文件返回文件内容,MSWord不是纯文本,因此文件内容不是文本内容。不,我有db中的数据,数据类型是blob。我所需要的只是获取数据并在inputstream的帮助下显示它。这就是我是Stuck,正如您所提到的,您有可用的输入流,使用该输入流创建一个文件或fileinputstream对象,然后将该文件作为参数发送给其他对象。如果我超出范围,请忽略。不,我有数据库中的数据,数据类型为blob。我所需要的只是获取数据并在inputstream的帮助下显示它。这就是我是Stuck,正如您所提到的,您有可用的输入流,使用该输入流创建一个文件或fileinputstream对象,然后将该文件作为参数发送给其他对象。如果我出界,请不要理我。
@RequestMapping(value="instructiondisplay", method = RequestMethod.GET)
public void instructionDisplay(HttpServletRequest request , HttpServletResponse response/*, @RequestParam String langCode, @RequestParam Long moduleId*/){
    String langCode = "EN";
    Long moduleId = (long) 1;
    try{
        InstructionSet instructionSet=mockTestService.getInstructionFromModuleIdAndLangCode(moduleId, langCode);
        if(instructionSet!=null){
            InputStream inputStream= request.getInputStream();
            inputStream.read(instructionSet.getInstruction());
        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return ;    
}