后端向前端传值

本文介绍了后端如何向前端传递数据,包括在Controller中处理请求并组装数据,使用JSONUtil工具类将数据转化为JSON格式,以及在不同场景下使用write()和print()方法的区别。示例代码展示了Spring MVC中通过ModelAndView和HttpServletResponse对象向前端传递信息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、controller

 /**
     * 跳转到我的上报列表页面
     */
    @RequestMapping(value="/myList")
    public void myList(HttpServletRequest request, HttpServletResponse response){
        logBefore(logger, "进入我的上报列表页面");
        ModelAndView mv = new ModelAndView();
        try {
            Subject currentUser = SecurityUtils.getSubject();  
            Session session = currentUser.getSession();
            if(session.getAttribute(Const.SESSION_WEIXIN_USER) == null){
                getUserInfoController.getUserInfo(this.getRequest());
            }
            WUser wuser = (WUser)session.getAttribute(Const.SESSION_WEIXIN_USER);
            mv.addObject("openId", wuser.getOpenId());
            mv.addObject("userpic", wuser.getHeadImgUrl());
            mv.addObject("username", EmojTest.emojiRecovery(wuser.getNickname()));
            Page page = new Page();
            PageData pd = this.getPageData();
            pd.put("openId", wuser.getOpenId());
            page.setPd(pd);
            page.setShowCount(100);
            page.setCurrentPage(0);
            //获取转发链接
            Properties  pro = GetProperties.getKey();
            String weixinuser = pro.getProperty("weixinuser");
            String appid = pro.getProperty("appid");
            String tourl = pro.getProperty("reporturl");
            String basePath = request.getScheme()+"://"+request.getServerName();
            String infoUrl = weixinuser.replace("APPID", appid).replace("REDIRECT_URI", tourl.replace("WEB_URL", basePath));
            List<PageData> varList = reportService.list(page);
            for(PageData mpd:varList){
                if(mpd.getString("title").length()>10){
                    mpd.put("title",mpd.getString("title").substring(0,10)+"...");
                }
                if(mpd.getString("content").length()>35){
                    mpd.put("content",mpd.getString("content").substring(0,35)+"...");
                }
                mpd.put("infoUrl", infoUrl.replace("REPORT_ID", mpd.getString("id")));
            }
            JSONUtil.writeJSON(page.getTotalPage()+"", varList, response);   //往前端输出,用于ajax处理的方法
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


2、 JSONUtil

/**
* 写出JSON
* @param msg
* @param obj
* @return
*/
public static String writeJSON(String msg, Object obj, HttpServletResponse response) {
Map<String, Object> maps = new HashMap<String, Object>();
maps.put("msg", msg);
maps.put("data", obj);
String JSONStr = JSONUtils.toJSONString(maps);
try {
response.setCharacterEncoding("UTF-8");          // 是设置从request中取得的值或从数据库中取出的值
response.setContentType("application/json;charset=UTF-8");    //是设置页面中为中文编码 
response.getWriter().write(JSONStr);
response.getWriter().close();

} catch (IOException e) {
return null;
}
return JSONStr;
}


3、

public void getSub(@RequestParam String MENU_ID,HttpServletResponse response)throws Exception{
try {
List<Menu> subMenu = menuService.listSubMenuByParentId(MENU_ID);
JSONArray arr = JSONArray.fromObject(subMenu);
PrintWriter out;

response.setCharacterEncoding("utf-8");
out = response.getWriter();
String json = arr.toString();
out.write(json);
out.flush();
out.close();

} catch (Exception e) {
logger.error(e.toString(), e);
}

注:  (1)、write():仅支持输出字符类型数据,字符、字符数组、字符串等
  (2)、print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出

(3)、out和response.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter。
        (4)、执行原理不同:JspWriter相当于一个带缓存功能的printWriter,它不是直接将数据输出到页面,而是将数据刷新到response的缓冲区后再输出,  response.getWriter直接输出数据(response.print()),所以(out.print)只能在其后输出。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值