springMVC的简单入门、接收表单数据

版权声明:原创文章,未经允许不得转载 https://blog.csdn.net/Destiny_strive/article/details/82584792

关于springMVC的执行流程、配置方式和一些基本操作 ,推荐一篇帖子:https://www.cnblogs.com/tonghun/p/6914515.html

本次记录一个springmvc的简单入门小测试,和简单的接收表单数据

1.创建maven项目,点击Create from archetype,并选中maven-archetype-webapp原型。

2.构建好后,目录结构如下

3.创建源码文件夹和资源文件夹

在src/main创建好文件夹后,还需要设置java为源码文件夹,resources为存放资源的文件夹。

3.maven添加依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.0.7.RELEASE</version>
</dependency>

4.在web.xml中添加springMVC的入口

<!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>
<!--入口-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--springmvc的默认配置文件是放在WEB-INF下的,
       并且要命名为*-servlet.xml,*为servlet的name,比如现在就为"pringmvc"。
    -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

5.根据web.xml中设置的路径,添加springMVC的配置文件

5.在springmvc配置文件中添加视图定位和需要扫描的包的位置

<!--扫描指定包下的bean 交由spring管理-->
<context:component-scan base-package="com.byh.controller" />
<!--视图定位-->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>

6.创建好路径com.byh.controller,在其下创建Hello.java

/*@Controller定义一个控制器  

*@RequestMapping 定义访问路径

*/

package com.byh.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Hello {

    @RequestMapping("/hello")
    public String hello(){
        //这里因为springmvc配置文件中定义好了视图定位器,返回hello就是返回到/WEB-INF/page/hello.jsp
        return "hello"; 
    }

}

7.配置tomcat,测试。

接下来做接收表单数据的例子

1.创建好一个实体,用以接收表单数据,也可以单个接收表单数据,但是个人觉得比较麻烦

package com.byh.pojo;

public class Student {
    private int id;
    private String name;
    private String age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}

2.在WEB-INF/page下创建addStudent.jsp、showStudent.jsp

//这里之所以没有创建在webapp下是因为按照习惯只有index和login才能被直接访问。

//所以单独写一个只用于跳转的控制器,如下:

package com.byh.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PageController {

    @RequestMapping("showAdd")
    public String addStudent(){
        return "addStudent";
    }

}

(1)addStudent.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="addStudent">

        学生姓名 :<input type="text" name="name" value=""><br />
        学生年龄: <input type="text" name="age" value=""><br />

        <input type="submit" value="录入">
    </form>

</body>
</html>

(2)showStudent.jsp,这里注意添加了isELIgnored="false",不然EL表达式无法解析。

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
录入的姓名:${student.name},年龄:${student.age}
</body>
</html>

3.接下来写控制器

package com.byh.controller;

import com.byh.pojo.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class StudentController {

    @RequestMapping("addStudent")
    public String add(Student student, Model model){
        model.addAttribute("student",student);
        return "showStudent";
    }

}

4.测试。浏览器地址栏输入http://localhost:8080/showAdd

这里中文应该乱码的,但是没有,忘记为什么了,如果出现乱码,则做如下修改:

1.修改addStudent.jsp的form表单的提交方式为post

2.web.xml中添加一个解决中文乱码的filter

<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>

猜你喜欢

转载自blog.csdn.net/Destiny_strive/article/details/82584792