SpringMVC_ basado en el desarrollo de anotaciones

1. Desarrollo de anotaciones SpringMVC
1.1 Crear proyecto
1.2 Mejorar el proyecto
1.3 Importar dependencia
1.4 Configurar 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>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>dispatcherServle</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>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServle</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

1.5 Configurar el archivo de configuración SpringMVC

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--配置自动扫描包-->
    <context:component-scan base-package="com.wangxing.springmvc.controller"></context:component-scan>
    <!--配置视图解析器-->
    <!--org.springframework.web.servlet.view.InternalResourceViewResolver-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix"  value=""></property>
    </bean>
</beans>

1.6 Crear un controlador

package com.wangxing.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
    @RequestMapping("/test1.do")
    public ModelAndView  testRequest(){
        ModelAndView  mav=new ModelAndView();
        mav.addObject("info","hello,网星软件");
        mav.setViewName("test.jsp");
        return  mav;
    }
}

1.7 Crear jsp
1.8 Configurar proyecto de implementación de servicios
1.9 Probar http: // localhost: 8080 / spingmvc2 / test1.do

2. @Controller annotation
@ Controller: indica que la clase java que hemos escrito es una clase de controlador que procesa solicitudes.
Solo se puede usar en clases de Java.
En el programa javaweb, está en capas. Para el nombre de la tabla, la clase java es un controlador, usamos @Controller
@Controller contiene @Component.
@Controller y @Service y @Repository que aprendimos en Spring marcan la aplicación como capas diferentes.
Capa de acceso a datos ------ @
Capa de acceso empresarial al repositorio ------ @
Capa web de servicio 【Capa de control】 ---- @
Aplicación web del controlador ------------ Recurso estático
3 . @ RequestMapping
establece la ruta de acceso de la clase de controlador / método de procesamiento de solicitudes.
@RequestMapping se puede usar en la clase java para indicar la configuración de la ruta de acceso de esta clase java;

package com.wangxing.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/hello")
public class HelloController{
    @RequestMapping("/test1.do")
    public ModelAndView  testRequest(){
        ModelAndView  mav=new ModelAndView();
        mav.addObject("info","hello,网星软件");
        mav.setViewName("test.jsp");
        return  mav;
    }
}

http: // localhost: 8080 / spingmvc2 / hello / test1.do
Si no hay @RequestMapping ("/ hello") en la clase del controlador, entonces podemos usar directamente el método de procesamiento de solicitudes @RequestMapping ("/ ruta de acceso de prueba1 .hacer").

package com.wangxing.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController{
    @RequestMapping("/test1.do")
    public ModelAndView  testRequest(){
        ModelAndView  mav=new ModelAndView();
        mav.addObject("info","hello,网星软件");
        mav.setViewName("test.jsp");
        return  mav;
    }
}

http: // localhost: 8080 / spingmvc2 / test1.do
@RequestMapping también puede actuar sobre el método de procesamiento de solicitudes, lo que significa configurar la ruta de acceso del método de procesamiento de solicitudes.
Atributos de uso común de @RequestMapping
1.valor significa establecer la ruta de acceso [se puede omitir]

@RequestMapping(value = "/test1.do")

Puede ser omitido

@RequestMapping("/test1.do")

¿Se pueden establecer comodines al configurar la ruta de acceso
? : Coincide con cualquier carácter individual
Por ejemplo: @RequestMapping ("/? Hello.test")
http: // localhost: 8080 / spingmvc2 / atest1.do
http: // localhost: 8080 / spingmvc2 / test1.do // error
http: / /localhost:8080/spingmvc2/hhhtest1.do // Error
*: coincide con cualquier número de caracteres
Por ejemplo: @RequestMapping ("/ hello.test")
http: // localhost: 8080 / spingmvc2 / test1.do
http: // localhost: 8080 / spingmvc2 / wtest1.do
http: // localhost: 8080 / spingmvc2 / wwwtest1.do
Por ejemplo: @RequestMapping ("/
/hello.test")
http: // localhost: 8080 / spingmvc2 / w / test1. hacer
http: //localhost:8080/spingmvc2/www/test1.do
http: // localhost: 8080 / spingmvc2 / test1.do // error
http: // localhost: 8080 / spingmvc2 / hhhh / www / test1.do / / error
**: coincide con varias rutas
Por ejemplo: @RequestMapping ("/ ** / hello.test")
http: // localhost: 8080 / spingmvc2 / test1.do
http: // localhost: 8080 / spingmvc2 / w / test1.do
http: // localhost: 8080 /spingmvc2/www/test1.do
http: // localhost: 8080 / spingmvc2 / hhh / www / test1.do 2.
método: restringe el método de acceso de la solicitud [GET, POST ...]
Forma de expresión: @RequestMapping (valor = “/ login.do”, método = RequestMethod.POST)
Index.jsp

<%@page language="java" pageEncoding="UTF-8" %>
<html>
<body>
  <form action="test1.do" method="get">
    <input type="submit" value="测试Method属性"/>
  </form>
</body>
</html>
package com.wangxing.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController{
    @RequestMapping(value = "/test1.do",method = RequestMethod.POST)
    public ModelAndView  testRequest(){
        ModelAndView  mav=new ModelAndView();
        mav.addObject("info","hello,网星软件");
        mav.setViewName("test.jsp");
        return  mav;
    }
}

Modifique la radiación de envío de formularios en la página index.jsp para que la publicación tenga éxito.
4. El método de procesamiento de solicitudes recibe el valor del parámetro de solicitud
1. @PathVariable define el método para obtener los datos del parámetro en la ruta de la URL de solicitud.
Por ejemplo: el
método de procesamiento de solicitudes:

@RequestMapping(value = "/get1/{username}/{password}",method = RequestMethod.GET)
public ModelAndView  getReqParam1(@PathVariable("username")String name,
@PathVariable("password")String pass){
    ModelAndView  mav=new ModelAndView();
    mav.addObject("username",name);
    mav.addObject("password",pass);
    mav.setViewName("test.jsp");
    return  mav;
}

solicitud http: http: // localhost: 8080 / spingmvc2 / get1 / zhangsan / 123456
Nota: El control central del archivo web.xml /
2. @ RequestParam se define en el método y los parámetros se pasan en la solicitud a través de key = se obtienen los datos,
p. ej.
, método de procesamiento de solicitudes

@RequestMapping(value = "/get2",method = RequestMethod.GET)
public ModelAndView  getReqParam2(@RequestParam("username")String name, @RequestParam("password")String pass){
    ModelAndView  mav=new ModelAndView();
    mav.addObject("username",name);
    mav.addObject("password",pass);
    mav.setViewName("test.jsp");
    return  mav;
}

http 请求: http: // localhost: 8080 / spingmvc2 / get2?

username = lisi & password = 000000
El
método de procesamiento de solicitudes * .do del controlador central del archivo web.xml : @RequestMapping(value = "/get2.do",method = RequestMethod.GET)
solicitud http: http: // localhost: 8080 / spingmvc2 / get2.do? username = lisi & password = 000000
3. getParameter del HttpServletRequest object () Método para recibir datos
Por ejemplo:
método de procesamiento de solicitudes

@RequestMapping(value = "/get3.do",method = RequestMethod.GET)
public ModelAndView  getReqParam3(HttpServletRequest  request){
    String name=request.getParameter("username");
    String pass=request.getParameter("password");
    ModelAndView  mav=new ModelAndView();
    mav.addObject("username",name);
    mav.addObject("password",pass);
    mav.setViewName("test.jsp");
    return  mav;
}

http 请求: http: // localhost: 8080 / spingmvc2 / get3.do?

nombre de usuario = wangwu y contraseña = 111111

4. Defina la variable de parámetro correspondiente en el método de procesamiento de la solicitud. El nombre de la variable de parámetro es el mismo
que el valor del atributo de nombre del elemento de página. Por ejemplo:
login.jsp

<%@page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<body>
<form action="get4.do" method="post">
    用户名:<input type="text" name="username"/><br>
    密码:<input type="password" name="password"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

Método de procesamiento de solicitudes

@RequestMapping(value = "/get4.do",method = RequestMethod.POST)
public ModelAndView  getReqParam4(String username,String password){
    ModelAndView  mav=new ModelAndView();
    mav.addObject("username",username);
    mav.addObject("password",password);
    mav.setViewName("test.jsp");
    return  mav;
}

5. Encapsule el valor del parámetro de solicitud que debe enviarse en el objeto java [El nombre de la variable miembro del objeto java debe ser el mismo que el valor del atributo de nombre del elemento de página]
Por ejemplo:
register.jsp

<%@page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<body>
<form action="get5.do" method="post">
    用户名:<input type="text" name="username"/><br>
    密码:<input type="password" name="password"/><br>
    年龄:<input type="text" name="age"/><br>
    地址:<input type="text" name="address"/><br>
    日期:<input type="text" name="day"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

PersonBean.java

package com.wangxing.springmvc.bean;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class PersonBean {
    private  String username;
    private  String password;
    private  Integer age;
    private  String address;
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date day;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Date getDay() {
        return day;
    }
    public void setDay(Date day) {
        this.day = day;
    }
}

Método de procesamiento de solicitudes:

@RequestMapping(value = "/get5.do",method = RequestMethod.POST)
public ModelAndView  getReqParam5(PersonBean personBean){
    ModelAndView  mav=new ModelAndView();
    mav.addObject("personBean",personBean);
    mav.setViewName("test.jsp");
    return  mav;
}

Nota: El nombre de la variable miembro del objeto java debe ser el mismo que el valor del atributo de nombre del elemento de la página.
6. Organice los parámetros de la solicitud enviada en datos json [se describe más adelante]
SpringMVC accede a recursos estáticos
Cuando usamos SPringMVC para acceder Archivos HTML, aparece un error 404, porque SpringMVC no admite el acceso a recursos estáticos [.html / .js / .css /.jpg ...]
Opción 1: Activar el servidor predeterminado de Tomcat para procesar archivos estáticos [web.xml]

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

Escriba delante de DispatcherServlet, deje que defaultServlet intercepte primero, esto no entrará en Spring, creo que el rendimiento es el mejor.
Opción 2: mvc: los recursos se proporcionan en Spring 3.0.4 y versiones posteriores

<!--对静态资源文件的访问-->
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />

Supongo que te gusta

Origin blog.csdn.net/guoguo0717/article/details/110225495
Recomendado
Clasificación