SpringMVC的两个蝴蝶飞你好的简单开发(二)上

简介: SpringMVC的两个蝴蝶飞你好的简单开发(二)

一. SpringMVC的简单开发


SpringMVC 是Spring 框架里面的一个模块,如果不了解Spring, 可以参考老蝴蝶以前写的Spring系列文章。 故jar包一般用的都是Spring的jar包。


一.一 . 导入jar 包


需要导入 spring 的jar包, 和关于springmvc的jar包。 不要忘记导入jstl.jar 和standard.jar


20190729195445592.png


一.二 在web.xml 配置前端控制器 DispatcherServlet


 <!-- 配置springmvc的前端控制器,使用默认的位置 -->
  <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--默认的位置在 WEB-INF 下面,并且名称必须是  servlet-name-servlet.xml-->
      <load-on-startup>1</load-on-startup>
  </servlet>
 <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>


springmvc 的配置文件 的位置固定,名称也必须固定。


一.三 配置 springMVC-servlet.xml 文件


因为 servlet-name 为springMVC, 故 springmvc的配置文件的名称必须为 springMVC-servlet.xml


20190729195500797.png


<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
  <!-- 配置action,前端访问路径为hello.action -->
  <bean id="helloAction" name="/hello.action" class="com.yjl.action.HelloAction"></bean>
  <!-- 处理器映射器 -->
  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
  <!-- 处理器适配器 -->
  <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
  <!-- 视图解析器 -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>


要配置相应的 映射器,适配器和 视图解析器, SpringMVC已经提供好了。 只需要引入即可。


一.四 开发Action. 要实现 Controller 接口


package com.yjl.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
@atuhor:yuejl
@Description: 类描述
*/
public class HelloActionF2 implements Controller{
  @Override
  public ModelAndView handleRequest(HttpServletRequest paramHttpServletRequest,
      HttpServletResponse paramHttpServletResponse) throws Exception {
    System.out.println("你好,两个蝴蝶飞");
    return null;
  }
}


一.五 运行测试


输入网址, 为http://localhost:8090/SpringMVC01/user.action    观察控制台:


20190729195511970.png


一个基本的SpringMVC 的程序就算是写好了。 但是,有很多需要改进的地方。


二. springmvc 配置文件位置和名称 改进


在web.xml 配置的时候, springmvc的名称和位置已经固定了,这个是不太友好的。


应该利用 contextConfigLocation 属性进行修改。


<!-- 配置前端控制器,自定义名称和位置 -->
  <servlet>
    <servlet-name>springMVC</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>
  <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>


这样,就可以进行自定义了。


其中, contextConfigLocation 属性在 其父类 FrameworkServlet 里面。


20190729195521627.png


20190729195529324.png


改变后的位置为:


20190729195537950.png


内容不变。


在HelloAction 类的方法中,进行输出,还是刚才的那个方法。


@Override
  public ModelAndView handleRequest(HttpServletRequest paramHttpServletRequest,
      HttpServletResponse paramHttpServletResponse) throws Exception {
    //System.out.println("你好,两个蝴蝶飞");
    System.out.println("你好,两个蝴蝶飞,自定义位置版本");
    return null;
  }


控制台进行输出:


20190729195548653.png


三. 非注解形式的springMVC 配置


三.一 springmvc.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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
  <!-- 配置的是非注解的 -->
  <!-- 配置前端的 -->
  <bean id="helloAction" name="/hello.action" class="com.yjl.action.HelloAction"></bean>
  <!-- 处理器映射器 -->
  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
      <props>
        <!-- 可以路径,映射到 helloAction. 用hello1.action 和hello2.action 访问均可 -->
        <prop key="/hello1.action">helloAction</prop>
        <prop key="/hello2.action">helloAction</prop>
      </props>
    </property>
  </bean>
  <!-- 处理器适配器 -->
  <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
  <!-- 视图解析器 -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>


三.二 HelloAction 类实现 HttpRequestHandler 接口。


HelloAction 中,这个时候,就不实现 Controller 接口了, 而是实现 HttpRequestHandler 的接口。


package com.yjl.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.HttpRequestHandler;
/**
@atuhor:yuejl
@Description: 类描述
*/
public class HelloActionF2 implements HttpRequestHandler{
  @Override
  public void handleRequest(HttpServletRequest request, HttpServletResponse reponse) throws ServletException, IOException {
    // TODO 自动生成的方法存根
    System.out.println("你好,两个蝴蝶飞,非注解的");
  }
}


三.三 运行测试


输入网址,hello1访问: http://localhost:8090/SpringMVC01/hello1.action

控制台输出:


2019072919561138.png


输入网址,hello2访问 : http://localhost:8090/SpringMVC01/hello2.action


20190729195617396.png


注意,这个时候是不能通过 hello.action 进行访问的。 如果以 hello.action 进行访问,这个时候 会出现问题。


404, 路径输入错误。


20190729195658324.png

相关文章
SpringMVC的两个蝴蝶飞你好的简单开发(二)下
SpringMVC的两个蝴蝶飞你好的简单开发(二)中
133 0
SpringMVC的两个蝴蝶飞你好的简单开发(二)下
|
前端开发
SpringMVC的两个蝴蝶飞你好的简单开发(二)中
SpringMVC的两个蝴蝶飞你好的简单开发(二)
SpringMVC的两个蝴蝶飞你好的简单开发(二)中
|
5月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
2月前
|
Java Apache vr&ar
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
16 0
|
7月前
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
112 0
|
10月前
|
Java Spring
springmvc中spring提供的中文乱码解决问题
可以解决浏览器的乱码问题
44 0
|
5月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
46 0
|
10月前
|
JSON 前端开发 Java
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
57 0
|
5月前
|
设计模式 前端开发 Java
8:Spring MVC-Java Spring
8:Spring MVC-Java Spring
74 0
|
9月前
|
前端开发 Java 应用服务中间件
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
SpringMVC(基于Spring 的Web 层MVC 框架)--SpingMVC 执行流程--@RequestMapping的使用
99 0