springmvc之获取参数
1.导包,四大核心包,一个切面包(AOP),logging,web,springmvc
2.配置文件,核心代码如下:
web.xml
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <!--字符编码的filter一定要放在最前面 -->
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<!-- 支持rest的filter -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
springmvc.xml
<context:component-scan base-package="com.atguigu"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图分析器 -->
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
index.jsp: 首页进入
<body>
<a href="hello">hello</a><br/>
<a href="handle01?user=123456">获取请求参数</a><br/>
<a href="handle02">获取请求头</a><br/>
<form action="saveBook" method="post">
图书id<input type="text" name="id"/><br/>
图书name<input type="text" name="name"/><br/>
图书author<input type="text" name="author"/><br/>
图书price<input type="text" name="price"/><br/>
图书sales<input type="text" name="sales"/><br/>
图书stock<input type="text" name="stock"/><br/>
<hr/>
<!-- 级联属性来封装值 -->
作者name;<input type="text" name="person.name"/><br/>
作者address;<input type="text" name="person.address"/><br/>
<input type="submit" value="保存图书"/>
</form>
<hr/>
<h2>给页面携带数据</h2>
<a href="output01">output01</a>
</body>
3./WEB-INF/pages 跳转后的内容
1).success.jsp
<body>
<h1>成功!</h1>
${msg}===${reMsg}
</body>
2).testScope.jsp
<body>
<h1>测试数据带在了哪个scope</h1>
request:${requestScope.msg }<br />
session:${sessionScope.msg }<br />
application:${applicationScope.msg}
</body>
4.src/bean包 Author.java
public class Author {
private String name;
private String address;
Book.java:
public class Book {
private int id;
private String name;
private double price;
private int sales;
private int stock;
private Author person;
private String imgPath = "static/img/default.jpg";
private String author;
src/controller 包, HelloController.java: 如果不加,则不能访问
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class HelloController { @RequestMapping("/hello") //连接地址必须加上"/hello"
public String hello(){
return "success"; }
}
TestParamController.java
@Controller
public class TestParamController { /**
* 1、直接给方法的参数位置写上一个和请求带来的参数的名字相同的变量
* 2、这个变量就封装的是带来的参数的值
* user = request.getParameter("user")
* 3、如果没有就是null
*
* @RequestParam("user"):指定获取哪个参数的值
* 1、默认发送请求必须带上这个参数;
* 否则:HTTP Status 400 - Required String parameter 'user' is not present
* 2、required=false可以设置不是必须的;没带null
* 3、defaultValue="未命名"指定没带时的默认值;
* user = request.getParameter("user");
*/ @RequestMapping("/handle01")
public String handle01(
@RequestParam(value = "user", required = false, defaultValue = "未命名") String user) {
System.out.println("获取的User:" + user);
return "success";
} /**
* 获取请求头;
* request.getHeader("User-Agent")
* 注解做了下面这些事情
* @RequestHeader("User-Agent")String userAgent;
* userAgent = request.getHeader("User-Agent");*/
@RequestMapping("/handle02")
public String handle02(
@RequestHeader(value = "User-Agent", required = false, defaultValue = "没有的") String userAgent) {
System.out.println("User-Agent:" + userAgent);
return "success";
} /**
* 获取某个cookie的值;
* JSESSIONID=B05C018F82AA1B0BD3845831FADFE49A
* @CookieValue("JSESSIONID")String jid
* 注解做了下面这些事情
* Cookie[] cookies = request.getCookies();
* for(Cookie c:cookies){
* if(c.getName().equals("JSESSIONID")){
* jid = c.getValue();
* }
* }*/
@RequestMapping("/handle03")
public String handle03(
@CookieValue(value = "JSESSIONID", required = false, defaultValue = "hhhhh") String jid) {
System.out.println("jid:" + jid);
return "success";
} /*传入POJO;直接帮我们封装页面的值; 方便简单,少写很多代码,实现代码分离,解耦和
* 1、book = new Book();
* 2、把book对象中的每一个属性的值查出来,request.getParameter(属性);
* 3、把这个值设置进去
* 注意:因为SpringMVC会进行类型转换,所以提交的数据一定要是合法的,否则400错误*/
@RequestMapping("/saveBook")
public String handle04(Book book) {
System.out.println("book的值:" + book);
return "success";
} @RequestMapping("/handle05")
// pringMVC还允许我们在请求参数上使用原生的ServletAPI HttpServletRequest HttpServletResponse
// HttpSession
public String handle05(HttpSession session, HttpServletRequest request,
HttpServletResponse response) {
session.setAttribute("msg", "哈哈哈"); request.setAttribute("reqMsg", "嘿嘿嘿"); return "success";
} }
src/dataout/ DataOutPutController.java 给页面携带数据
@Controller //给页面携带数据
public class DataOutPutController { /**
* 1、返回值改为ModelAndView(包含模型数据(Model)和要去的页面地址(View));
* 数据放在请求域中;
* 2、在请求参数上传入Model、Map、ModelMap都行;给他们里面保存的数据会放在请求域中
* Model、Map、ModelMap最终其实都是再有用BindingAwareModelMap;
* 相当于给BindingAwareModelMap中保存数据就是给请求域中保存
* Model Map
* || ||
* || \/
* || ModelMap
* \/ \/
* ExtendedModelMap【隐含模型】 extends ModelMap implements Model
* \/
* BindingAwareModelMap
* @return
*/
@RequestMapping("/output04")
public String output04(ModelMap model){
//视图解析器会对视图名进行拼串
model.addAttribute("msg","output04");
System.out.println(model.getClass());
return "testScope"; }
@RequestMapping("/output03")
public String output03(Model model){
model.addAttribute("msg", "output03");
System.out.println(model.getClass());
return "testScope";
}
@RequestMapping("/output02")
public String output02(Map<String,Object>map){
//视图解析器会对视图名进行拼串
map.put("msg", "output02");
System.out.println(map.getClass());
return "testScope";
}
@RequestMapping("/output01")
public ModelAndView output01(){
//视图解析器会对视图名进行拼串
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("testScope");
modelAndView.addObject("msg", "output01");
return modelAndView; }
}
mark不易,欢迎交流指正,顺便点个赞!在java路途中共同进步
版权声明
作者:郑兴华
出处:技术博客--http://www.cnblogs.com/JavaBlackHole/
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
springmvc之获取参数的更多相关文章
- springmvc如何获取参数
请参考这篇文章, 写得比较全面. https://www.cnblogs.com/xiaoxi/p/5695783.html
- Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较
servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...
- SpringMVC——如何获取请求参数
参考 http://www.cnblogs.com/bigdataZJ/p/springmvc2.html (文章讲了几个注解的使用,但不够深入.) 参考 http://www.cnblogs.com ...
- SpringMVC之请求参数的获取方式
转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...
- SpringMVC获取参数的几种方式
前言: 年末了,忙了一年了却发现系统的整理的东西很少,一些基础的东西都未做整理,这里就将它随便整理一下,增加一些印象,当然在网上看到一些好的资料也会整理下来以备后用.今天整理一下springMVC获取 ...
- springMVC --@RequestParam注解(后台控制器获取参数)
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. 1.获 ...
- springmvc对同名参数处理-我们到底能走多远系列(44)
springmvc对同名参数处理 扯淡: 中断发博客几个月,其实蛮不爽的,可能最近太忙太劳累了些,很多总结也没时间写,今天刚好遇到个小问题,就阅读下源码找找乐.因为考虑到网上大多是提供解决问题的方案, ...
- [Spring MVC] - SpringMVC的各种参数绑定方式
SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") publi ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
随机推荐
- C++:栈(stack)的模板类实现
1.基本概念 栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹 ...
- Quartz教程四:Trigger
原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...
- HTML通过jQuery传值赋值
网页传值很常见,如果通过动态网页传值,我们很容易实现.但是如果静态网页传值,这个就要找资料,方法或者询问大牛们了.这个原来还真的没有做过.今天一同事需要做这个类似的功能,应该是昨天了.本来是昨天写的, ...
- WeChat-JSAPI支付
官方API:打开连接 特别注意----JSAPI只能在微信环境下 测试!2017-04-19 配置:微信公众号中 添加微信支付配置--请认真填写配置并获取下面对应的数据才能正常运行. ======== ...
- bzoj 3197
题解: 先找到中信 然后dp 代码: #include<bits/stdc++.h> using namespace std; ; ],a[N],b[N],s[N],c[N],f[N]; ...
- 启动Windows防火墙提示“0x8007042c"
win8.1 启动防火墙是报错:启动Windows防火墙提示“0x8007042c" 一.检查服务 1,右击开始->运行->输入“services.msc” 打开服务 在框中找到 ...
- echarts-detail--柱状图
一:柱形图 1.Echarts-柱状图柱图宽度设置-----只需要设置series中的坐标系属性barWidth就可以 /** * 堆积柱状图 * @param xaxisdata x轴:标签(数组) ...
- 大牛deep learning入门教程
雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...
- 如何使用fiddller跟踪windows进程发送的请求20140911
总结点:如何使用fiddller跟踪windows进程发送的请求 案例如下: 需求:运维工具提出需求,对每个插件的配置文件,同步到运维中心时先加密,然后传输到运维中心解密,存储到数据库 测试分析:这个 ...
- [Linux] ssh免密码登录
目标:本地机器ssh登录远程目标机器时不用输入密码 (默认状态下,ssh user@192.xxx.x.xxx需要输入密码) 原理:通过公钥和私钥实现系统认证 实现:把本地机器的公钥复制到目标机器 具 ...