SpringMVC-Day2

本文介绍了SpringMVC中UrlBasedViewResolver的配置方法及作用,并解决了运行时遇到的NoClassDefFoundError错误。同时分享了如何使用SimpleUrlHandlerMapping进行URL映射。
  • 一点感想。坚持真不是件容易事,特别是坚持每天写点什么。今天搞了会儿SpringMVC后又学了节英语口语,就这个点了,差点就有不想写的冲动。
  • 遗留问题。昨天纠结的那个问题今天还是没能得到解决。下了个XmlBuddy插件,重启Eclipse配置了半天,还是没能出现自动提示,谁能帮帮我哭。罢了,暂时留下这个问题吧。
  • 言归正传。昨天实现了一个简单的映射,从Url到页面控制器。今天继续添加了一点配置
    <bean class = "org.springframework.web.servlet.view.UrlBasedViewResolver">
    		<property name = "ViewClass" value = "org.springframework.web.servlet.view.JstlView" />
    		<property name = "prefix" value = "WEB-INF/views/"/>
    		<property name = "suffix" value = ".jsp"/>
    </bean>
    UrlBasedViewResolver,一个基础的视图解析策略。定义了这个Bean之后,需定义ViewClass这个属性值为JstlView这个类。这个有什么用呢?据说其一是一个流程规定:Spring就必须叫你这么做了;其二是关于国际化的。这个后面再深究。当然前缀和后缀必不可少,也就是要解析的文件的目录地址和后缀名称。定义好了之后,在Controller端返回一个ModelAndView
    package com.home.module;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class FirstController implements Controller {
    
    	@Override
    	public ModelAndView handleRequest(HttpServletRequest arg0,
    			HttpServletResponse arg1) throws Exception {
    		return new ModelAndView("first");
    	}
    
    }

    这样一来,启动tomcat,访问localhost:8080/Home/first.home,就可以访问到我定义好的Jsp文件了。不过运行时出现了一个问题 NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config。 查了一下http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/jakarta-taglibs-standard-1.1.2.zip 

下载好上面这个放到WEB-INF/lib下便好了。

如上的整个流程明天再捋一捋。另外还搞了个简单url映射类

<bean id = "loginController" class = "org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
	<bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name = "mappings">
			<props>
				<prop key = "first.home">firstController</prop>
				<prop key = "login.home">loginController</prop>
			</props>
		</property>
	</bean>


loginController的映射添加上去后,直接定义UrlFilenameViewController的bean就可以了,和上头返回ModelAndView一样。这个类也就提供个方便:不做其他处理只作页面定向的时候,不用再去写Controller的Java文件。

  • 总之。总之今天也没多大进度,主要是加班多下班晚时间少。时间,得多挤挤。


【RIS 辅助的 THz 混合场波束斜视下的信道估计与定位】在混合场波束斜视效应下,利用太赫兹超大可重构智能表面感知用户信道与位置(Matlab代码实现)内容概要:本文围绕“IS 辅助的 THz 混合场波束斜视下的信道估计与定位”展开,重点研究在太赫兹(THz)通信系统中,由于混合近场与远场共存导致的波束斜视效应下,如何利用超大可重构智能表面(RIS)实现对用户信道状态信息和位置的联合感知与精确估计。文中提出了一种基于RIS调控的信道参数估计算法,通过优化RIS相移矩阵提升信道分辨率,并结合信号到达角(AoA)、到达时间(ToA)等信息实现高精度定位。该方法在Matlab平台上进行了仿真验证,复现了SCI一区论文的核心成果,展示了其在下一代高频通信系统中的应用潜力。; 适合人群:具备通信工程、信号处理或电子信息相关背景,熟悉Matlab仿真,从事太赫兹通信、智能反射面或无线定位方向研究的研究生、科研人员及工程师。; 使用场景及目标:① 理解太赫兹通信中混合场域波束斜视问题的成因与影响;② 掌握基于RIS的信道估计与用户定位联合实现的技术路径;③ 学习并复现高水平SCI论文中的算法设计与仿真方法,支撑学术研究或工程原型开发; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解波束成形、信道建模和参数估计算法的基础上,动手运行和调试代码,深入掌握RIS在高频通信感知一体化中的关键技术细节。
SpringMVC 中,我们可以通过 ResponseBody 注解返回音频流,具体步骤如下: 1. 在 Controller 中定义一个返回类型为 ResponseEntity<byte[]> 的方法,该方法需要使用 @ResponseBody 注解标注。 2. 在方法中获取音频文件的字节数组,并将其放入 ResponseEntity 对象中返回。 3. 在 ResponseEntity 对象中设置 Content-Type、Content-Disposition 等响应头,以便浏览器正确解析音频流并进行播放。 示例代码如下: ```java @RequestMapping("/audio") @ResponseBody public ResponseEntity<byte[]> getAudio() throws IOException { // 读取音频文件字节数组 InputStream in = getClass().getResourceAsStream("/static/audio/sample.mp3"); byte[] audioBytes = IOUtils.toByteArray(in); // 设置响应头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.parseMediaType("audio/mpeg")); headers.setContentDispositionFormData("attachment", "sample.mp3"); // 返回音频流 return new ResponseEntity<>(audioBytes, headers, HttpStatus.OK); } ``` 上述代码中,我们将音频文件 sample.mp3 放在了项目的 /static/audio 目录下。在方法中,我们使用 IOUtils.toByteArray() 方法将音频文件转换为字节数组,并将其放入 ResponseEntity 对象中返回。在设置响应头时,我们使用 MediaType.parseMediaType() 方法设置 Content-Type,使用 setContentDispositionFormData() 方法设置 Content-Disposition。最后,我们通过 new ResponseEntity<>(audioBytes, headers, HttpStatus.OK) 创建 ResponseEntity 对象并返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值