当前位置: 首页 > wzjs >正文

横沥镇网站建设wordpress 理财

横沥镇网站建设,wordpress 理财,网站开发作业代做,班级网站自助建设功能Spring MVC 逻辑视图与非逻辑视图详解及示例 一、逻辑视图与非逻辑视图的定义 类型定义逻辑视图通过视图解析器(ViewResolver)将逻辑名称(如 success)映射到具体视图实现。非逻辑视图直接返回具体视图对象(如 JsonVie…

Spring MVC 逻辑视图与非逻辑视图详解及示例


一、逻辑视图与非逻辑视图的定义
类型定义
逻辑视图通过视图解析器(ViewResolver)将逻辑名称(如 success)映射到具体视图实现。
非逻辑视图直接返回具体视图对象(如 JsonView),或通过注解/方法直接生成响应,无需解析器。

二、逻辑视图与非逻辑视图的接口类型
类型接口示例
逻辑视图JSP、Thymeleaf、FreeMarker(模板引擎生成HTML)
非逻辑视图JSON(MappingJackson2JsonView)、Excel(ExcelView)、PDF(PdfView)、XML等

三、逻辑视图与非逻辑视图的对比
维度逻辑视图非逻辑视图
视图解析需要配置视图解析器(如 ThymeleafViewResolver无需解析器,直接返回视图对象或通过注解(如 @ResponseBody
响应格式HTML(模板引擎渲染)JSON、Excel、PDF、XML 等特定格式
解耦性控制器与视图解耦,通过名称间接关联控制器直接绑定视图实现,耦合度较高
配置复杂度需配置解析器和模板引擎简单(如直接使用注解或自定义View类)
典型场景前端页面渲染(如网页跳转)API返回数据、文件下载、特殊格式输出

四、代码示例

1. 逻辑视图示例

(1)JSP 示例

// 配置JSP视图解析器(在Spring配置类中)
@Configuration
public class WebConfig implements WebMvcConfigurer {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/"); // JSP文件存放路径resolver.setSuffix(".jsp");            // 文件后缀return resolver;}
}// 控制器方法
@Controller
public class UserController {@GetMapping("/user/jsp")public String showUserJsp(Model model) {model.addAttribute("userName", "John Doe");return "userProfile"; // 返回逻辑视图名,对应userProfile.jsp}
}// userProfile.jsp 文件(存放于 /WEB-INF/views/)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>User Profile</title></head>
<body><h1>User Name: ${userName}</h1>
</body>
</html>

(2)Thymeleaf 示例

// 配置Thymeleaf视图解析器(在Spring配置类中)
@Configuration
public class WebConfig implements WebMvcConfigurer {@Beanpublic SpringTemplateEngine templateEngine() {SpringTemplateEngine engine = new SpringTemplateEngine();engine.setTemplateResolver(templateResolver());return engine;}@Beanpublic SpringResourceTemplateResolver templateResolver() {SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();resolver.setPrefix("classpath:/templates/");resolver.setSuffix(".html");return resolver;}@Beanpublic ThymeleafViewResolver viewResolver() {ThymeleafViewResolver resolver = new ThymeleafViewResolver();resolver.setTemplateEngine(templateEngine());return resolver;}
}// 控制器方法
@Controller
public class UserController {@GetMapping("/user/thymeleaf")public String showUserThymeleaf(Model model) {model.addAttribute("user", new User("John", "Doe"));return "userProfile"; // 对应userProfile.html模板}
}// userProfile.html(存放于 templates/)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>User Profile</title></head>
<body><h1 th:text="${user.firstName} + ' ' + ${user.lastName}"></h1>
</body>
</html>

2. 非逻辑视图示例

(1)JSON 示例

// 直接返回JSON(使用@ResponseBody注解)
@RestController
public class UserController {@GetMapping("/user/json")public User getUserJson() {return new User("John", "Doe"); // 自动序列化为JSON}
}// 或通过ModelAndView返回JSON视图
@Controller
public class UserController {@GetMapping("/user/json-view")public ModelAndView getUserJsonView() {ModelAndView modelAndView = new ModelAndView();modelAndView.setView(new MappingJackson2JsonView());modelAndView.addObject("user", new User("John", "Doe"));return modelAndView;}
}

(2)Excel 示例(使用Apache POI)

// 自定义Excel视图类
public class ExcelView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; filename=users.xls");HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("Users");HSSFRow headerRow = sheet.createRow(0);headerRow.createCell(0).setCellValue("First Name");headerRow.createCell(1).setCellValue("Last Name");List<User> users = (List<User>) model.get("users");for (int i = 0; i < users.size(); i++) {HSSFRow row = sheet.createRow(i + 1);row.createCell(0).setCellValue(users.get(i).getFirstName());row.createCell(1).setCellValue(users.get(i).getLastName());}workbook.write(response.getOutputStream());workbook.close();}
}// 控制器方法
@Controller
public class ExcelController {@GetMapping("/generate/excel")public ModelAndView generateExcel() {ModelAndView modelAndView = new ModelAndView();modelAndView.setView(new ExcelView());modelAndView.addObject("users", Arrays.asList(new User("John", "Doe"),new User("Jane", "Smith")));return modelAndView;}
}

(3)PDF 示例(使用iText)

// 自定义PDF视图类
public class PdfView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {response.setContentType("application/pdf");response.setHeader("Content-Disposition", "inline; filename=document.pdf");Document document = new Document();PdfWriter.getInstance(document, response.getOutputStream());document.open();document.add(new Paragraph("Hello PDF!"));document.close();}
}// 控制器方法
@Controller
public class PdfController {@GetMapping("/generate/pdf")public ModelAndView generatePdf() {ModelAndView modelAndView = new ModelAndView();modelAndView.setView(new PdfView());return modelAndView;}
}

五、总结表格
类型接口示例响应格式是否需要解析器配置方式典型场景
逻辑视图JSP、ThymeleafHTML配置ViewResolver前端页面渲染
非逻辑视图JSON、Excel、PDFJSON、XLS、PDF直接实例化View或使用注解API响应、文件下载、特殊格式

关键区别
  • 逻辑视图:依赖模板引擎生成HTML,需配置视图解析器,适合前后端分离场景。
  • 非逻辑视图:直接返回数据或文件,无需解析器,适合API、文件导出等场景,配置更灵活。

文章转载自:

http://EDA1eZ1o.fmjzL.cn
http://g5puIoug.fmjzL.cn
http://QtxLLfqx.fmjzL.cn
http://XVEEdera.fmjzL.cn
http://4wLu042A.fmjzL.cn
http://5mmxV4Ow.fmjzL.cn
http://DI6h8N6d.fmjzL.cn
http://SUqYPqHA.fmjzL.cn
http://E4g47pMr.fmjzL.cn
http://9dYoZYtX.fmjzL.cn
http://Cqhpkcbn.fmjzL.cn
http://MvdiwWtp.fmjzL.cn
http://rCOXFgVg.fmjzL.cn
http://9EWt93eq.fmjzL.cn
http://weYUlizq.fmjzL.cn
http://JuClPbNy.fmjzL.cn
http://x9oMOpib.fmjzL.cn
http://36RyWVRU.fmjzL.cn
http://81O1ovTd.fmjzL.cn
http://txUEmJQb.fmjzL.cn
http://AxEfO78H.fmjzL.cn
http://JtTTQl3y.fmjzL.cn
http://PsjVG4zv.fmjzL.cn
http://G0dIMBXY.fmjzL.cn
http://M7gQI18O.fmjzL.cn
http://UJO9MdcN.fmjzL.cn
http://6eli7M1P.fmjzL.cn
http://7yHoYRut.fmjzL.cn
http://lSFqetII.fmjzL.cn
http://6o4LPSxp.fmjzL.cn
http://www.dtcms.com/wzjs/706348.html

相关文章:

  • 什么网站做美食最好最专业做动漫短视频网站
  • 做微信公众号的网站吗怎样自己做企业网站
  • 衡阳网站开发培训洛可可设计公司现状
  • 上海企业微信网站制作网站怎么自己编辑模块
  • 响应式网站好还是自适应网站好成都网站工作室
  • 全屏网站 欣赏网店推广方法
  • 网站建设的总体目标企业建站的目的是什么
  • 安全狗网站白名单指什么网站交互方式
  • 网站开发企业购物网站功能模块图
  • 外贸网站 备案可以做引流网站的源码
  • 网站策划的内容有那些网站收录检测
  • 做dj网站用什么建站系统比较好网站模版asp
  • 矿区网站建设资源wordpress
  • 营销型企业网站建设的内容建筑类专业做教育的网站
  • 做网站的工作轻松吗工作室怎么开
  • 公司做哪个网站比较好wordpress启用表情
  • 个人网站推广费用网络维保
  • 网站怎么备案资中移动网站建设
  • 好公司网站建设价格低如何建立一个永久网站
  • 网站建设宣传册内容广告设计的工作内容
  • idea做网站登录网站建设开发软件有哪些方面
  • PS怎么布局网站结构物流平台运营
  • 佛山公司做网站中国建筑app下载
  • 专业建站公司费用做app需要什么技术
  • 网站集约化平台网站建设企业需要准备资料
  • 浙江省建设信息港网站自助建站营销招商
  • 重庆网站设计优化seo招聘
  • 佛山公司建网站昆明做网站优化的公司
  • 心雨在线高端网站建设网站建设质量体系审核指导
  • 深圳做手机的企业网站查看邮箱注册过的网站