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" rel="external nofollow" >hello</a><br/>
 <a href="handle01?user=123456" rel="external nofollow" >获取请求参数</a><br/>
 <a href="handle02" rel="external nofollow" >获取请求头</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" rel="external nofollow" >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;

 }
}

以上这篇springmvc之获取参数的方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 学习SpringMVC——如何获取请求参数详解

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

  • SpringMVC通过注解获得参数的实例

    SpringMVC可以通过RequestParam注解来映射获得参数,具体用法如下: 例子: 配置过程省略 1.新建controller类 package com.loger.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class RequestParam

  • Spring3 MVC请求参数获取的几种方法小结

    Spring3 MVC请求参数获取的几种方法 一.通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMap model) { System.out.println(id); System.ou

  • 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

  • js遍历json对象所有key及根据动态key获取值的方法(必看)

    实例如下: var obj = {}; for(var k in obj) { //遍历对象,k即为key,obj[k]为当前k对应的值 console.log(obj[k]); } 以上这篇js遍历json对象所有key及根据动态key获取值的方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • php获取ip及网址的简单方法(必看)

    如下所示: echo 'http://'.$_SERVER['HTTP_HOST'];输出您访问网址的域名 echo $benji_ip=gethostbyname($_ENV['COMPUTERNAME']);输出服务器的ip $fangwen_ip=$_SERVER["REMOTE_ADDR"]; 输出访问者的外网ip 以上这篇php获取ip及网址的简单方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • js获取元素的偏移量offset简单方法(必看)

    前言:以前一直是看别人写的,然后学习点东西,现在也把自己的学习记录下来,给大家一个学习的机会,欢迎大家多多评论和推荐哈,共同进步.竟然还有六个人关注我了 ,哈哈 开心.我会继续写下去的.. null和undefined都代表没有,但是null是属性存在值不存在,undefined是连这个属性都不存在 //例如 document.parentNode//浏览器天生自带的一个属性:父亲节点的属性 null (因为一个页面中的document已经是最顶级元素了,它没有父亲) document.pare

  • js遍历获取表格内数据的方法(必看)

    本文将介绍如何使用js获取表格内某一单元格的内容,表格由table,tr,td等html标记组成.table表示表格,tr表示行,td表示行中列. 1.一般的表格结构如下 <table> <tr> <td>id</td> <td>name</td> </tr> <tr> <td>1</td> <td>fdipzone</td> </tr> <tr

  • SpringMVC 数据校验方法(必看篇)

    数据校验在web应用里是非常重要的功能,尤其是在表单输入中.在这里采用Hibernate-Vapdator进行校验,该方法实现了JSR-303验证框架支持注解风格的验证. 一.导入jar包 若要实现数据校验功能,需要导入必要的jar包,主要包括以下几个: classmate-1.3.1.jar hibernate-vapdator-5.4.1.Final.jar hibernate-vapdator-annotation-processor-5.4.1.Final.jar hibernate-v

  • java 获取HttpRequest Header的几种方法(必看篇)

    在开发应用程序的过程中,如果有多个应用,通常会通过一个portal 门户来集成,这个portal  是所有应用程序的入口,用户一旦在portal 登录之后,进入另外一个系统,就需要类似的单点登录(SSO). 进入各个子系统的时候,就不需要再次登录, 当然类似的功能,你可以通过专业的单点登录软件来实现,也可以自己写数据库token 等方式来实现.其实还有一个比较简单的方法,就是通过 portal 封装已经登录过的用户的消息,写到http header 之中,然后把请求forward 到各个子系统中

  • redirect_uri参数错误的解决方法(必看)

    今天做微信开发时候出现了redirect uri 参数错误.百度了一下.原来是Oauth授权域名没有填写 再授权域名中,填写自己用到的域名即可. 以上这篇redirect_uri参数错误的解决方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 使用PHPExcel实现数据批量导出为excel表格的方法(必看)

    首先需要下载PHPExecel类文件,帮助文档可以参考PHPExcel中文帮助手册|PHPExcel使用方法. 下面直接上例子,是我自己写的一个简单的批量导出数据为excel的例子 前台页面 比较简单,就是一个超链接,跳转到处理页面,超链接也可以跟一些参数(看需求)! <a href="./Process1.php" rel="external nofollow" >导出excel表格</a> 后台Process.php页面 /** * 批量

  • python 读写、创建 文件的方法(必看)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove() 删除多个目录:os.removedirs(r"c:\python") 检验给出的路径是否是一个文件:os.path.isfile() 检验给出的路径是否是一个目录:os.path.isdir() 判断是否是绝对路

随机推荐