spring mvc 一个controlller对应多个请求 其中包含 不同请求对应不同目录下的不同视图

SpringMVC03:RestFul风格和控制器Controller 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。 控制器负责解析用户的请求并将其转换为一个模型。 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种 实现Controller接口 Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法; //实现该接口的类获得控制器 阅读详情

***************web.xml代码***************

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
  <!-- 使用filter过来请求,保证请求过来的参数以UTF-8的编码传入 -->
  <filter>
  	<filter-name>springmvc002-filter</filter-name>
  	<!-- 编码处理过滤器 -->
  	<filter-class>
  		org.springframework.web.filter.CharacterEncodingFilter
  	</filter-class>
	<!-- 给过滤器的encoding属性设置编码格式名称 -->
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
	<!-- 给过滤器设置强制转换编码的属性 -->
  	<init-param>
  		<param-name>forceEncoding</param-name>
  		<param-value>true</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>springmvc002-filter</filter-name>
  	<!-- 对所有请求进行编码过滤处理 -->
  	<url-pattern>/*</url-pattern> 
  </filter-mapping>
  
  <!-- 将所有的请求交给springmvc容器的DispatcherServlet处理 -->
  <servlet>
  	<servlet-name>springmvc002-servlet</servlet-name>
  	<!-- springmvc处理请求的核心servlet类 -->
  	<servlet-class>
  		org.springframework.web.servlet.DispatcherServlet
  	</servlet-class>
  	<!-- 加载springmvc的主配置文件 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		
  		<param-value>classpath:*.xml</param-value>
  	</init-param>
  	<!-- 服务器启动就加载springmvc的servlet -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc002-servlet</servlet-name>
  	<!-- 注意这里只能写 /  而不能写 /*  否则出错 -->
	<url-pattern>/</url-pattern>
  </servlet-mapping>
  
</web-app>


***************Java代码***************

package com.springmvc002.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class MultiController extends MultiActionController {

	//注意方法名称 要和前端jsp页面的请求参数m的值保持一致,否则找不到method
	//这里方法的两个参数 request 和 response 必须同时存在,缺一不行,否则方法无法被找到
	public ModelAndView get1(HttpServletRequest request , HttpServletResponse response){
		System.out.println("----------------get1-----------");
		return new ModelAndView("get1");
	}
	
	
	public ModelAndView get2( HttpServletRequest request , HttpServletResponse response){
		System.out.println("----------------get2-----------");
		//前端传递过来的其他参数,可以通过request对象拿到,和servlet相同
		System.out.println(request.getParameter("m"));
		System.out.println("---------" + request.getParameter("username"));
		return new ModelAndView("get2");
	}
	public ModelAndView get3( HttpServletRequest request , HttpServletResponse response){
		System.out.println("----------------get2-----------");
		//前端传递过来的其他参数,可以通过request对象拿到,和servlet相同
		System.out.println(request.getParameter("m"));
		System.out.println("---------" + request.getParameter("username"));
		return new ModelAndView("get2");
	}
}

***************spring mvc 主配置文件代码***************

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"  
	xmlns:mvc="http://www.springframework.org/schema/mvc"  
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
	http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    <!-- 定义一个请求beng 并制定多参数对应方法名称解析器 -->
    <bean name="/get" class="com.springmvc002.controller.MultiController">
    	<property name="MethodNameResolver">
    		<ref bean="parameterMethodName" />
    	</property>
    </bean>
    <!-- 配置多参数对应方法名称解析器 -->
    <bean id="parameterMethodName" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="m"></property>    	
    </bean>
    
    <!-- 配置内部资源视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    	<property name="contentType" value="text/html"></property>
    	<property name="prefix" value="/get1/"></property>
    	<property name="suffix" value=".jsp"></property>
    	<!-- 这里的情况可以参照之前的一个文档中的注释说明 
    	<property name="viewNames" value="get1*"></property>-->
    </bean>
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    	<property name="contentType" value="text/html"></property>
    	<property name="prefix" value="/get2/"></property>
    	<property name="suffix" value=".jsp"></property>
    	<!-- <property name="viewNames" value="get2*"></property> -->
    </bean>

</beans>

***************jsp代码***************

路径为:/springmvc002/WebContent/get1/get1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>标题</title>        
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
 	get1.jsp
 </body>
</html>

路径为:/springmvc002/WebContent/get1/get2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>标题</title>        
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
 get2.jsp-----jack
 </body>
</html>

路径为:/springmvc002/WebContent/get2/get2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>标题</title>        
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
 get2.jsp
 </body>
</html>

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询 阅读详情

相关推荐

ensp企业网综合实验(课程设计)

使用MSTP+VRRP技术实现负载均衡以及增加网络的可靠性;出口配置napt;所有用户均为自动获取IP地址;

qq_50829760的博客 1万+

Java Web 一个Controller 拥有多个请求路径写法学习总结

当多个请求路径要映射到同一个controller 请求下时,项目架构使用 springframework(spring 框架),可以使用(只需要关注 requestMapping 或者 GetMapping 或 PostMapping 内的写法即可)加在最顶层 controller 上的写法: 只有一个请求路径时 多个请求路径都要映射到这个controller 下时 写法: 注意这里的 @RequestMapping 注解,里面当存在多个请求路径时,需要使用 { } 包围里面的内容,{ } 其实就是Jav

weixin_44131922的博客 3860

联邦学习代码解读,超详细

联邦学习伪代码 损失函数使用方法 1 optimizer = optim.Adam(model.parameters()) 2 fot epoch in range(num_epoches): 3 train_loss=0 4 for step,(seq, label) in enumerate(data_loader): 5 # 损失函数 6 loss = criterion(model(seq), label.to(device)

weixin_42098322的博客 1万+

springMVC一个Controller处理所有用户请求的并发问题

springMVC一个Controller处理所有用户请求的并发问题 有状态和无状态的对象基本概念: 有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。一般是prototype scope。无状态对象(Stateless Bean),就是没有实例变量的对象,不能保存数据,是不变类,是线程安全的。一般是singleton scope。 如...

iteye_8039的博客 5120

告别Colmap!在ROS2 Humble上,用Fast-LIVO2直接为3D Gaussian Splatting准备数据全流程

本文详细介绍了在ROS2 Humble环境下,使用Fast-LIVO2为3D Gaussian Splatting(3DGS)准备数据的全流程。通过优化Fast-LIVO2配置、实时数据同步机制和3DGS训练参数,显著提升了三维重建效率和质量,相比传统Colmap流程节省95%以上的预处理时间。适用于Ubuntu22.04系统,适合机器人及自动驾驶领域的三维重建应用。

weixin_28688385的博客 589

华为eNSP实战:手把手教你配置DHCP全局地址池(含AP固定IP分配)

本文通过华为eNSP模拟器,详细演示了如何配置DHCP全局地址池,为不同业务VLAN动态分配IP地址,并重点讲解了如何通过MAC地址绑定为接入点(AP)分配固定IP。文章涵盖了从拓扑设计、基础网络搭建到地址池精细配置、验证测试及常见故障排查的全流程,是网络工程师掌握企业级DHCP部署与AP管理的实用指南。

weixin_29235923的博客 600

Spring MVC中的Controller

MVC模型中的控制器负责解析用户的输入信息,并将之变换处理后传入一个model,而这个model则可能被呈现给发起请求的用户。Spring以非常抽象的方式体现了控制器的理念,从而开发人员在创建controller时将有多种选择。Spring包含了3类controller:处理HTML表单的controller,基于command的controller,和向导风格的controller。

程序员Monkey的专栏 1773

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1020

crm系统spring MVC+spring+mymybatis整合小练习

整体思路:ssm框架整合,以spring为业务层框架,spring MVC为控制层框架,mybatis为持久层框架。明白了这些,我们就可以创建以下一些包:                          1.我们可以先从持久层开始入手,先对应数据库中的表,创建pojo实体类包,然后再创建mapper接口和对应的mapper配置文件   注意!!!mapper文映射件要和mapper接口放在同一个...

ksm_coder的博客 718

Centos7 yum 报错「Errno 256」No more mirrors to try 解决方法

首先该问题的出现是由于网络的震荡导致,这是重点。(1)将源更换成阿里云的官方源,步骤参考如上(2)同时将zabbix的官方源更换成阿里云里面的zabbix镜像源,因为zabbix官方源根本网络不通,因为国家防火墙的拦截,导致网络不通。这是阿里源的zabbix镜像地址: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/修改系统中早期生成的zabbix.repo文件,如下:主要是把baseurl替换成阿里云的zabbix镜像地址即可。

专注基础架构领域 3875

PCL 使用点云创建数字高程模型DEM【2025最新版】

使用点云创建数字高程模型DEM,并将结果保存为高程图像。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2295

【课程设计】SSM网上村委会业务办理系统-计算机毕业设计源码30923

系统需涵盖用户管理、办事申请管理、补贴活动通告管理、党员发展管理、公告管理、留言板管理、农业补贴管理、土地变更管理、用户管理、管理员管理等功能

Biye_Design的博客 5058

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1405

【课程设计】SSM同城交友平台-计算机毕业设计源码54739

本平台采用了当前流行的Java技术栈,即SSM框架组合。此架构的选择不仅提高了开发效率,也为后续的系统扩展和维护奠定了良好的基础。通过精心设计的数据模型和算法,系统能够有效分析用户偏好,为用户提供个性化的服务体验。同时,平台支持在线聊天、好友添加等社交功能,进一步增强了用户之间的互动性和平台粘性。整体而言,该同城交友平台的设计与实现充分体现了现代Web应用的技术特点和人性化设计理念。

Biye_Design的博客 2166

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基于混合推荐算法的个性化图书推荐系统的设计与实现-计算机毕设 【课程设计】 09637

注册用户模块: 1.注册与登录:用户可以通过填写必要信息进行账户注册,注册后通过用户名和密码登录系统,享受个性化推荐、图书浏览和评论等功能。 2.首页:用户登录后,首页展示个性化推荐的图书内容,这些推荐基于用户的历史兴趣、行为数据以及混合推荐算法来推送相关书籍。 3.网站公告:网站公告页面展示平台的最新消息和重要通知,确保用户及时了解平台更新、促销活动以及其他相关通知。 4.图书资讯:图书资讯页面提供关于新书发布、作者访谈、行业动态等信息,帮助用户了解最新的图书市场动向和文学趋势。 5.图书信息:每本书都有

WeiXin_DZbishe的博客 990

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于SSM品牌车衣供应商直播带货及线下店管理系统-计算机毕设 【课程设计】 21926

普通用户模块: 1.注册登录:普通用户可以通过简单的注册流程创建账户,登录后可以享受系统提供的个性化服务。 2.首页:用户登录后进入首页,展示最新的车衣产品、热门活动和促销信息,方便用户快速浏览。 3.公告消息:品牌或平台可以发布关于产品、活动、政策等公告,用户可及时获取重要信息。 4.新闻资讯:用户可以浏览关于车衣行业、汽车相关的新闻和资讯,了解最新动态和市场趋势。 5.车衣信息:详细展示车衣的种类、规格、材质、颜色等信息,帮助用户做出购买决策。 6.积分商品:用户通过购买车衣等产品积累积分,并可使用积分

WeiXin_DZbishe的博客 738

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring 是如何解决并发访问的线程安全性问题的

springmvc的controller是singleton的(非线程安全的),这也许就是他和struts2的区别吧!和Struts一样,Spring的Controller默认是Singleton的,这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们不用每次创建Controller,二是减少了对象创建和垃圾收集的时间;由于只有一个Controlle

葛明的博客 1万+

Spring MVC模块化布局的一个简单方案

页面前端方案本来想用Spring MVC + tiles 的,但是 tiles有一些学习成本,而且本身有些地方不够灵活,于是想了一种简单的方案来实现模块化和布局问题,原理如下: 1、写一个Controller: @Controller @RequestMapping("/layout") public class LayoutController { @RequestMappi...

tedeum 328

maven多模块构建项目(常见的springmvc项目结构)

正经学徒,佛系记录,不搞事情 该功能一般使用于较大的项目,对项目进行业务拆分或者代码分层,这里以代码分层+IDEA为例,构建常用的springmvc项目 最终项目结构:(这里仅分三层,基于项目的规模和复用程度,可以追加mn_bpo层,mn_api层,mn_domin层等) 个人建议:由于每个层级所负责的功能不同,对应的实体类定位也不一样,甚至大项目每个层级都是有专门的开发人员负责,因此推荐避...

toBeMN的博客 5411

不同的包下有文件名相同的java类,spring自动注入会报错

今天闲的蛋疼,做了一下spring自动注入的例子: 看看spring自动注入的是否可以区别出不同包下相同名字的java类,答案是不能,spring居然这么渣。 整体结构图如下: 1:首先建立两个同名的java类和接口 com.a包下面有一个IAutoInject接口和实现类AutoInject,同理com.b包下面也有相同的接口和实现类。 同时加上spring声明bean的注解,

u010523770的专栏 2万+

SpringMvc三层架构注解详解@Controller、@Service和@Repository

1. @Controller控制层 2. @Service() 3. @Repository持久层 springvmc采用经典的三层分层控制结构,在持久层,业务层和控制层分别采用@Repository、@Service、@Controller对分层中的类进行注解,而@Component对那些比较中立的类进行注解 1. @Controller控制层 @Controller用于标记在一个类上...

debug 11万+

Spring Controlller返回字符串乱码解决

两种方式:第1:在@RequestMapping中添加produces="text/html;charset=UTF-8第2:在MVC 配置中加入,spring版本必需为3.1或以上版本才可以下配置&lt;mvc:annotation-driven&gt;        &lt;mvc:message-converters register-defaults="true"&gt;         ...

漫天雪_昆仑巅 981

controller和service层的一些见解

接触java EE开发一年不到,刚开始接触时用就用到spring MVC,因为当时公司业务比较简单,所以service层和dao层实际上是一样的,业务逻辑全部放在了controller层来做;当时觉得很纳闷,service层感觉是多余的,根本用不到;  最近接触的项目,架构师设计的框架,直接根据模型设计dao层接口和service接口,代码写了不少,突然发现这么定义接口很多功能是没法实现的。

Truong的专栏 3万+
上一篇: spring mvc 访问不同的目录下的jsp视图及处理POST请求参数中文乱码问题
下一篇: spring mvc 响应处理post请求和get请求 测试
南京煜之隆
博客等级 码龄13年 34粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值