SpringMVC的具体解析

本文介绍SpringMVC框架中两种主要的视图跳转方式:使用InternalResourceViewResolver跳转到JSP页面和利用BeanNameViewResolver实现自定义视图的跳转。详细解释了配置步骤及代码示例。

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

个人笔记:

点击链接,跳转到对应的界面时,有两种情况
1、利用InternalResourceViewResolver来实现,跳转到对应名字上的jsp
步骤:
1)配置springmvc的配置文件:
<!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
2)点击链接,跳转到handler中,其中handler中的返回值必须在/WEB-INF/view/下,并且如果返回值是success,就跳转到success.jsp中

2、利用BeanNameViewResolver来跳转自定义视图中
步骤:
1)首先自己定义class类,并且必须要有@Component注解,实现view中的getContentType和render,其中getContentType的返回值应该是默认的"text/html"格式的网页,在render中进行绘制视图。
2)配置springmvc的配置文件
<!-- 配置视图  BeanNameViewResolver 解析器: 使用视图的名字来解析视图 -->
<!-- 通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="100"></property>
</bean>
3)点击链接,跳转到handler,返回值为1)步骤中写的class,首字母小写即可。

详细讲解

1、首先必须要有上一篇我提到的配置文件

2、jsp

1)第一种就是通过form表单进行提交

<form:form action="${pageContext.request.contextPath }/employee/save"
		modelAttribute="employee" method="post">
		<c:if test="${employee.id==null }">
		用户名:<form:input path="lastName" />
			<br>
		</c:if>
		<c:if test="${employee.id!=null }">
			<form:hidden path="id"/>
			<input type="hidden" value="PUT" name="_method" />
		</c:if>
		邮箱:<form:input path="email" />
		<br>
		<%
			Map<String, String> map = new HashMap();
				map.put("1", "Male");
				map.put("0", "Female");
				request.setAttribute("genders", map);
		%>
		性别:<form:radiobuttons items="${genders}" path="gender" />
		<br>
		部门:<form:select path="department.id" items="${departs }"
			itemValue="id" itemLabel="departmentName"></form:select>
		<br>
		生日:<form:input path="birth"/>
		<br>
		工资:<form:input path="salary"/>
		<br>
		<input type="submit" value="提交" />
	</form:form>
注意:action当中最好利用绝对路径,否则再后来界面跳转会有问题,并且大部分项目中,多是利用绝对路径
form:form标签是springmvc中的特有标签,对于表单回显很好用,接下来会在介绍

2)通过链接即a标签进行

<a href="employee/emps">员工列表</a>

3、handler

@RequestMapping("/employee")
@Controller
public class EmployeeHandler {
	
	@Autowired
	private EmployeeDao employeeDao;
	
	@Autowired
	private DepartmentDao departmentDao;
	
	@RequestMapping("/testi18n")
	public String testi18n(){
		return "i18n";
	}
	
	/**
	 * 返回json对象
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/testJson")
	public Collection<Employee> json(){
		return employeeDao.getAll();
	}
	
	/*sprinmvc.xml
	1、配置视图
	2、配置静态资源访问时的路径 default
	3、自动扫描包*/
	/**
	 * 从数据库中获取数据
	 * @param id
	 * @param map
	 */
	@ModelAttribute
	public void getValue(@RequestParam(value="id",required=false) Integer id,Map<String, Object> map){
		if(id!=null){
			map.put("departs", departmentDao.getDepartments());
			map.put("employee", employeeDao.get(id));
		}
	}
	
	/**
	 * 修改操作
	 * @param id
	 * @param map
	 * @return
	 */
	@RequestMapping(value="/save",method=RequestMethod.PUT)
	public String updateAndSave(Employee employee){
		employeeDao.save(employee);
		return "redirect:/employee/emps";
	}
	
	/**
	 * 进入修改页面,回显数据
	 * @param id
	 * @param map
	 * @return
	 */
	@RequestMapping(value="/update/{id}")
	public String update(@PathVariable(value="id") Integer id,Map<String, Object> map){
		map.put("departs", departmentDao.getDepartments());
		map.put("employee", employeeDao.get(id));
		return "input";
	}
	
	/**
	 * 删除用户信息
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete/{id}",method=RequestMethod.DELETE)
	public String delete(@PathVariable(value="id") Integer id){
		employeeDao.delete(id);
		return "redirect:/employee/emps";
	}
	
	/**
	 * 进行保存员工信息
	 * @return
	 */
	@RequestMapping("/save")
	public String save(@Valid Employee employee){
		System.out.println("save"+employee);
		employeeDao.save(employee);
		return "redirect:/employee/emps";
	}
	
	/**
	 * 展示所有部门信息
	 * @return
	 */
	@RequestMapping("/input")
	public String departs(Map<String, Object> map){
		map.put("departs", departmentDao.getDepartments());
		map.put("employee", new Employee());
		return "input";
	}
	
	/**
	 * 显示所有员工的信息
	 * @return
	 */
	@RequestMapping("/emps")
	public String emps(Map<String, Object> map){
		map.put("employee", employeeDao.getAll());
		return "list";
	}
}
其中类中必须要用@controller进行注解,表示该类作为handler,@requestMapping可以进行标识类和方法,在2中无论是action和a中的链接,第一个employee就是利用类中的requestMapping中的value值,第二个就是方法中的requestMapping中的value值。
在方法中return值就是跳转到的jsp的页面,Map就是request作用域,将值带给jsp中。




内容概要:本文介绍了基于SMA-BP黏菌优化算法优化反向传播神经网络(BP)进行多变量回归预测的项目实例。项目旨在通过SMA优化BP神经网络的权重和阈值,解决BP神经网络易陷入局部最优、收敛速度慢及参数调优困难等问题。SMA算法模拟黏菌寻找食物的行为,具备优秀的全局搜索能力,能有效提高模型的预测准确性和训练效率。项目涵盖了数据预处理、模型设计、算法实现、性能验证等环节,适用于多变量非线性数据的建模和预测。; 适合人群:具备一定机器学习基础,特别是对神经网络和优化算法有一定了解的研发人员、数据科学家和研究人员。; 使用场景及目标:① 提升多变量回归模型的预测准确性,特别是在工业过程控制、金融风险管理等领域;② 加速神经网络训练过程,减少迭代次数和训练时间;③ 提高模型的稳定性和泛化能力,确保模型在不同数据集上均能保持良好表现;④ 推动智能优化算法与深度学习的融合创新,促进多领域复杂数据分析能力的提升。; 其他说明:项目采用Python实现,包含详细的代码示例和注释,便于理解和二次开发。模型架构由数据预处理模块、基于SMA优化的BP神经网络训练模块以及模型预测与评估模块组成,各模块接口清晰,便于扩展和维护。此外,项目还提供了多种评价指标和可视化分析方法,确保实验结果科学可信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值