springmvc存取参数

一。导入配置文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xingxue.springmvc</groupId>
    <artifactId>springmvc-day1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>


    <dependencies>
        <!-- spring 相关的依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>
        <!-- spring web 模块提供了启动 spring 容器的 监听器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>


        <!--还导入其他相关的依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.2.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <path>/</path>
                    <port>80</port>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

</project>

二。配置resources》》applicationContext-mvc.xml

<?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: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.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="com.xingxue"/>
    <!--要在容器中配置该标签,配置后 @RequestMapping 该注解才生效-->
    <mvc:annotation-driven/>
    <!--配置该标签后,web.xml 中配置的前端控制器拦截为/ ,可以处理静态资源了-->
    <mvc:default-servlet-handler/>

    <!--配置 内部资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/"/>  //这是return 返回的路径  最后将他拼起来
        <property name="suffix" value=".jsp"/>
     </bean>


</beans>

三  WEB-INF\jsps下面的文件包     springmvcday1\src\main\webapp\WEB-INF\jsps

C:\Users\Administrator\Desktop\springmvcday1\src\main\webapp\WEB-INF\jsps\index\index.jsp
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/4/24
  Time: 14:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>欢迎${user.logname} 来到主页</h1>
</body>
</html>

C:\Users\Administrator\Desktop\springmvcday1\src\main\webapp\WEB-INF\jsps\ok.jsp
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/4/24
  Time: 9:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>ok!</h1>
</body>
</html>

三  配置 WEB-INF下面的web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>

  <!--配置 springmvc 的前端 控制器
        DispatcherServlet
   -->

  <!-- 引入spring 提供的 POST 提交方式的中文乱码过滤器 :注意一点 提供的 中文乱码过滤器只能处理 POST ;所以前面提交的方式改为post-->
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>//这个标签标示 在加载这个的时候就开始执行
  </servlet>

  <servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <!--如果这里配置的 / ,web应用无法处理静态资源 css html 要到前面controller里面去配置处理静态资源-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

四、登录页面demo.jsp 对应DemoController

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"//这个一定要配置,否则不能呢解析 %>
<html>
<head>
    <title>demo</title>
</head>
<body>

    <a href="${pageContext.request.contextPath}/demo1?name=zhangsan&password=123">点我,访问controller</a>

    <form action="${pageContext.request.contextPath}/demo3" method="post">
        <input name="logname"/><br/>
        <input name="password"/><<br/>
        <input type="submit" value="点我,表单请求controller"/>
    </form>

    <a href="${pageContext.request.contextPath}/demo3?logname=zhangsan&password=123">点我,访问controller</a>

    <%--springmvc 还提供了 url 方式来传递参数
         参数作为了 url 的组成部分
    --%>

    <a href="${pageContext.request.contextPath}/demo4/122333/zhangsan">url组成部分作为参数传递</a>


    <a href="${pageContext.request.contextPath}/demo5">转发重定向</a>
</body>
</html>

  登录页面  login.jsp 对应DemoController2

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/4/24
  Time: 14:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/login3" method="post"//提交方式 为post 否则不能处理乱码请求>
        <input name="logname"/><br/>
        <input name="password"/><<br/>
        <input type="submit" value="登录"/>
    </form>
</body>
</html>

五。如果提交的参数多的话,为了不显得繁琐,我们对他进行封装

package com.xingxue.springmvc.model;

public class UserModel {
    private String logname;
    private String password;


    public String getLogname() {
        return logname;
    }

    public void setLogname(String logname) {
        this.logname = logname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserModel{" +
                "logname='" + logname + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

六  controller页面提交过来对应的方法 controller.java    

package com.xingxue.springmvc.web.controller;


import com.xingxue.springmvc.model.UserModel;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class DemoController {

    @RequestMapping(value = "demo1")
    //RequestMapping 注解中的 value 属性用于 映射 uri 地址,uri地址映射 demo1 方法
    //                      method 属性用于 映射 请求方式,如果不配,默认支持 get post 都支持

    // @RequestParam 注解 用于 提交的参数的名称跟 映射的方法的变量不一致的时候,使用 value 属性来映射请求参数,当然如果提交过来的
    // 参数的名称跟 方法的 属性名称一致,可以不写 @RequestParam 注解
    public String demo1(@RequestParam(value = "name") String name1,String password){
        System.out.println(name1);
        System.out.println(password);
        System.out.println("demo1方法执行了....");
        return "ok";  //返回的字符串也是 逻辑视图名称
    }


    @RequestMapping(value = "demo2",method = RequestMethod.POST)//这里规定了请求方式 那么前端页面也要明确请求方式
    public String demo2(){
        System.out.println("demo2方法执行了...");
        return  "ok";
    }

    @RequestMapping(value = "demo3")
    public String demo3(UserModel model){
        System.out.println(model);
        return "ok";
    }
    //    /demo4/122333
    @RequestMapping(value = "demo4/{id}/{name}")//这里的{id}/{name}是可以随便写的,就是代表前对页面的路径地址,要相对应

    // PathVariable 注解用于取 url 组成部分作为参数  这个属性是一定要有的@PathVariable

    public String demo4(@PathVariable(value = "id") String id,@PathVariable("name") String name){
        System.out.println(id);
        System.out.println(name);
        return "ok";
    }
    @RequestMapping(value = "demo5")
    //redirect 重定向指令
    // forward 转发指令
    public String demo5(){

        return "redirect:/main.jsp";
    }

}

七  取数据的方式 DemoController2.java

package com.xingxue.springmvc.web.controller;

import com.xingxue.springmvc.model.UserModel;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;


// 控制器方法 创建方式有三种:1.返回类型为 String(这种返回类型,他的底层会自动创建ModelAndView。所以他的return  不能再是ModelAndView

)  2. 返回类型为void  3. 返回类型 ModelAndView
@Controller
public class DemoController2 {

    @RequestMapping(value = "login",method = RequestMethod.POST)
    public String login(UserModel model, Map map, ModelMap modelMap, Model mm, ModelAndView modelAndView){

        /*model对象保存到 web中级 学的 三个域对象之一中,页面采用 el 表达式就可以取出来*/

        //request.setAttribute("user",model);  数据放入 请求域中

       // request.getSession().setAttribute("user",model); 数据放入 session 域

       // request.getServletContext().setAttribute("user",model);  数据放入  application域

       map.put("user",model); //map 放入的数据自动放到请求域中  这里的user 是后面取El表达式相对应的值

       // modelMap.addAttribute("user",model);//modelMap 放入的数据自动放到请求域中

       // mm.addAttribute("user",model);//mm 放入的数据自动放到请求域中

        //modelAndView.addObject("user",model); //modelAndView 放入的数据自动放到请求域中

        return "index/index";  // 逻辑视图名称  当前面WEB-INF/JSPS  下面多了一层index文件,那么我们这里先约定好,不然后面拼串的时候找不到这个
    }
    @RequestMapping(value = "login2",method = RequestMethod.POST)
    public ModelAndView login2(UserModel model,ModelAndView modelAndView){

        //1.放数据
        modelAndView.addObject("user",model);
        //2.放逻辑视图名称
        modelAndView.setViewName("index/index");


        return modelAndView;
    }
    @RequestMapping(value = "login3",method = RequestMethod.POST)
    public void  login3(UserModel userModel, HttpServletResponse response) throws IOException {

            如果输入中文出现乱码,设置setContentType
             response.setCharacterEncoding ("UTF-8");
            response.setContentType ("");
response.getWriter().write("hello,sb!" + userModel.getLogname()); }}

猜你喜欢

转载自blog.csdn.net/nt19931231/article/details/80064825