Fork me on GitHub

JavaEE Day07 SpringMVC

Day07 SpringMVC


什么是MVC

  1. m:model 模型(处理业务)
  2. V:view 视图(展示)
  3. C:controller 控制器(控制,调配)
    -w430

什么是springMVC

表示层的MVC框架,是Spring的子框架

springMVC的运行原理

-w536

入门案例

创建web项目,导入jar(在WebContent(web)/WEB-INF/lib下.

  1. 4+1(Spring 基本框架(core,beans,context,expression) + Mybatis中的commons-logging-1.2.jar 包)
  2. spring-webmvc.jar
  3. Spring-web.jar

配置servlet

在web.xml中,新建servlet的配置:

  1. 前端控制器的class
  2. 匹配的url
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    <display-name>springmvc_01</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!-- 默认配置文件的加载路径: /WEB-INF/mvc-servlet.xml 
            指定配置文件加载路径:contextConfigLocation
    -->
    <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:springMVC.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

新建主页面

创建一个index.jsp,
使用a标签跳转到SpringMVC的后端处理器,通过url映射机制跳转到某个后端处理器上;


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="hello.do">点我</a>
</body>
</html>

新建后端控制器

  1. 在controller包中,新建后端控制器,实现控制器(controller)并覆写handlerrequest接口
  2. 新建ModelAndView对象,并向域中添加需要展示的数据 mv.addObject(name值, 数据.;
  3. 然后设置view的名称,该名称一个jsp文件的名称(展示页面,在jsp页面中使用${name值 } 调用)
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
 * 后端控制器(处理器)
 * @author Administrator
 *
 */
public class HelloController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response. throws Exception {
		// TODO Auto-generated method stub
		ModelAndView mv = new ModelAndView(.;
		// 设置数据
		mv.addObject("msg", "hello SpringMVC".;
		// 设置视图信息
		mv.setViewName("show".;
		System.out.println("接收到dao".;
		return mv;
	}
}

新建SpringMVC 配置

  1. 配置处理器映射器
  2. 配置处理器适配器
  3. 创建处理器对象,也就是后端处理器,并与url进行映射,
  4. 新建视图解析器,分为前缀和后缀,访问路径 = 前缀+后端处理器的返回值+后缀;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 1.处理器映射器 请求和处理器映射关系
            请求路径和处理器对象的name属性值一样则映射成功
    -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

    <!-- 2.处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

    <!-- 3. 创建处理器对象 -->
    <bean name="/hello.do" class="controller.HelloController"></bean>

    <!-- 4.视图解析器(根据视图名称找到物理视图) show  /show.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

新建展示页面


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	${msg }
</body>
</html>

运行即可

注解实现springMVC

创建web项目,导入jar包

  1. 4+1,Spring-web.jar,Spring-webmvc.jar
  2. jackson-all-2.8.0.jar :支持json数据的操作
  3. Spring-aop.jar

新建servlet

在web.xml中,新建servlet的配置:

  1. 前端控制器的class
  2. 匹配的url
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>springmvc_02</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
    
  <!-- 默认配置文件的加载路径: /WEB-INF/mvc-servlet.xml 
  		指定配置文件加载路径:contextConfigLocation
  -->
  <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:springMVC2.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>mvc</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

新建主页

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="login.do" method="post">
	用户名:<input type="text" name="username" />
	密码:<input type="password" name="password" />
	
	爱好:<input type="text" name="hb[0]">
	<input type="text" name="hb[1]">
	<input type="text" name="hb[2]">
	<input type="text" name="hb[3]">
	
	<input type="submit" value="登陆">
	</form>
</body>
</html>

新建pojo的实体类

List属性 用来保存页面中的列表

package pojo;

import java.util.List;

public class User {
	private String username;
	private String password;
	private List  hb;
	
	public List getHb(. {
		return hb;
	}
	public void setHb(List hb. {
		this.hb = hb;
	}
	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;
	}
	@Override
	public String toString(. {
		return "User [username=" + username + ", password=" + password + ", hb=" + hb + "]";
	}	
}

新建后端处理器

  1. 在类上使用Controller注解
  2. 在方法上使用RequestMapping, value表示匹配的url,也就是说请求这个url的数据都交给这个方法来处理
package controller;


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

import pojo.User;

/**
 * 处理所有user相关的请求
 * @author Administrator
 *
 */
@Controller
public class UserController {
	/*// 处理用户登录请求(返回值是代表视图名称)
	@RequestMapping("/login.do".
	public String login(String username,String password.{
		System.out.println(username+":"+password.;
		return "show";
	}*/
	
	
	/*// 封装对象
	@RequestMapping("/login.do".
	public String login(User user.{
		System.out.println(user.;
		return "show";
	}*/
	
	@RequestMapping("/login.do".
	public String login(User user,Model model.{
		System.out.println(user.;
		model.addAttribute("user", user.;
		return "show";
	}
	
	@RequestMapping("/first.do".
	public String first(Model model.{
		System.out.println("first".;
		model.addAttribute("msg","first".;
		// 转发
//		return "forward:second.do";
		// 重定向
		return "redirect:second.do";
	}
	
	@RequestMapping("/second.do".
	public String second(.{
		System.out.println("second".;
		return "show";
	}
	
}

新建SpringMVC配置

  1. 在src目录下
  2. 创建和管理controller(后端管理器)
  3. 自动创建 处理器映射和处理器适配器
  4. 配置视图解析器
<?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">

	<!-- 1. 创建和管理controller -->
	<context:component-scan base-package="controller"></context:component-scan>
	
	
	<!-- 2. 处理器映射和处理器适配器 -->
	<mvc:annotation-driven />
	
	
	
	<!-- 3.视图解析器(根据视图名称找到物理视图) show  /show.jsp -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

乱码问题解决

  1. get请求,默认都是utf-8;不需要设置;
  2. post请求,需要在全局的filter中配置,设置编码格式,并匹配所有的访问;
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>springmvc_02</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 过滤器  -->
  <filter>
  	<filter-name>charsetFilter</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>charsetFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  
  
  <!-- 默认配置文件的加载路径: /WEB-INF/mvc-servlet.xml 
  		指定配置文件加载路径:contextConfigLocation
  -->
  <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:springMVC2.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>mvc</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

展示页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	${msg }
	${user }
</body>
</html>

运行即可

参数封装和回显

  1. 简单类型:请求参数的name值和方法参数名称一致,
  2. 对象类型:请求参数的name值和类的属性一致
  3. 数组类型:name值和数组名称一致
  4. List/map类型:必须作为对象的属性才能封装,也就是要封装到某个特定对象的属性中;
    也就是上面例子中User类的List属性;才能刚保存checkbox的值

转发和重定向

在后端处理器类的方法中,return 后面的字符串改为以下:

  1. 转发:"forward:请求路径"
  2. 转发:"redirect:·请求路径"

参照上面的案例

整合案例 SSM

框架

  1. 表示层:SpringMVC
  2. 业务逻辑层:spring
  3. 数据持久层:mybatis

查询book数据并展示

  1. Mybatis
    1. Pojo
    2. Mapper
  2. spring和mybatis整合
    1. 配置mybatis文件加载,ssf,sqlsession,mapper对象创建和管理
    2. 事务管理和数据源
    3. service代码
  3. springMVC

步骤:

创建web项目,导入jar包:

  1. Mybatis:
    1. Mybatis.jar
    2. Mysql.jar
    3. Mybatis-spring.jar
  2. Spring:
    1. 4+1,
    2. Spring-aop
    3. Spring-aspects.jar
    4. Aopallian.jar
    5. Aspectjweaver.jar
    6. Spring-jdbc.jar
    7. spring-tx.jar Spring事务的jar包
    8. Spring-test.jar
    9. Spring-orm.jar
  3. springMVC:
    1. Spring-web.jar
    2. Spring-webmvc.jar
    3. Jackson.jar 注解需要,
    4. Jstl.jar 标签

新建配置文件目录

此目录必须是源码目录,所有的xml配置文件都放在此处
将java.properties和log4j.properties拷贝进来

java.properties

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql:///bd1808?useSSL=true
db.username=root
db.password=root

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

分包

  1. controller
  2. service
    1. impl
  3. mapper
  4. pojo

配置mybatis

创建pojo实体类

package pojo;

import java.math.BigDecimal;

public class Book {
	private int bid;
	private String bname;
	private String author;
	private BigDecimal price;
	public int getBid() {
		return bid;
	}
	public void setBid(int bid) {
		this.bid = bid;
	}
	public String getBname() {
		return bname;
	}
	public void setBname(String bname) {
		this.bname = bname;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public BigDecimal getPrice() {
		return price;
	}
	public void setPrice(BigDecimal price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Book [bid=" + bid + ", bname=" + bname + ", author=" + author + ", price=" + price + "]";
	}
}

创建mapper映射接口

使用注解的方式;直接使用sql语句;

package mapper;

import java.util.List;

import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import pojo.Book;

public interface BookMapper {
	
	@Select("select * from book")
	List<Book> queryAll();
}

配置mybatis的mybatis.xml

配置别名
配置映射配置
其他配置交给spring

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- <properties resource="jdbc.properties"></properties> -->
	
	<!-- <environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments> -->
	
	<typeAliases>
		<package name="pojo"/>
	</typeAliases>
	
	<mappers>
		<package name="mapper"/>
	</mappers>
</configuration>

创建servcie的接口 和实现类

接口

package service;

import java.util.List;

import pojo.Book;

public interface BookService {
	List<Book> queryAll();
}


实现类

package service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import mapper.BookMapper;
import pojo.Book;
import service.BookService;

@Service("bookservice")
public class BookServiceImpl implements BookService {
	
	@Autowired
	private BookMapper mapper;
	
	@Override
	public List<Book> queryAll() {
		// TODO Auto-generated method stub
		return mapper.queryAll();
	}
}

创建applicationContext.xml

  1. 将数据源交给spring
  2. ssf创建交给spring
  3. 创建和管理mapper对象
  4. 事务管理交给spring(声明式事务)
    1. 创建事务管理器
    2. 配置事务的策略
      1. Find和query read-only
      2. 增删改 propargation="Required"
    3. 织入事务
<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       		http://www.springframework.org/schema/beans 
       		http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop.xsd
			http://www.springframework.org/schema/context  
			http://www.springframework.org/schema/context/spring-context.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx.xsd">

	<context:component-scan base-package="service"></context:component-scan>
	<!-- 1.数据源管理给交spring -->
	<!-- 本地路径 前面要加classpath -->
	<context:property-placeholder location="classpath:java.properties"/>
	<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${db.driver}"></property>
		<property name="url" value="${db.url}"></property>
		<property name="username" value="${db.username}"></property>
		<property name="password" value="${db.password}"></property>
	</bean>
	
	<!-- 2.ssf创建交给spring -->
	<bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="configLocation" value="classpath:mybatis.xml"></property>
		<property name="dataSource" ref="ds"></property>
	</bean>
	<!-- 3.创建和管理mapper对象  -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="ssf"></property>
		<property name="basePackage" value="mapper"></property>
	</bean>
	<!-- 4. 事务管理交给spring(声明式事务) -->
	
		<!-- 4.1 创建事务管理器 -->
		<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="dataSource" ref="ds"></property>
		</bean>
		<!-- 4.2 配置事务的策略 -->
		<tx:advice id="txAdvice" transaction-manager="txManager">
			<tx:attributes>
				<tx:method name="query*" read-only="true"/>
				<tx:method name="find*" read-only="true"/>
				<tx:method name="insert*" propagation="REQUIRED"/>
				<tx:method name="update*" propagation="REQUIRED"/>
				<tx:method name="delete*" propagation="REQUIRED"/>
			</tx:attributes>
		</tx:advice>
		<!-- 4.3 织入事务 -->
		<aop:config>
			<aop:pointcut expression="execution(* service..*(..))" id="myPointcut"/>
			<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/>
		</aop:config>
</beans>

配置web.xml

  1. 前端控制器
  2. (最后在看此处)配置监听器,监听application域的创建,一旦创建,就加载spring的ioc框架,也就是service;
  3. 配置spring ioc框架的配置文件位置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <display-name>ssm</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    
    <!-- 加载 Spring ioc的配置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <listener>
        <!-- 项目加载时,加载applicationContext.xml 配置文件,获取Context对象并且放置在application域管理;
                默认加载配置文件路径:/WEB-INF/applicationContext.xml
        -->
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 1. 前端控制器 -->
    <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:SpringMVC.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

新建后端控制器

package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pojo.Book;
import service.BookService;

import java.util.List;

@Controller
public class BookController {

    @Autowired
    private BookService service;

    @RequestMapping("/query.do")
    public String queryAll(Model model){
        List<Book> books = service.queryAll();
        model.addAttribute("books",books);
        return "show";
    }
}

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

        <context:component-scan base-package="controller"/>
        <mvc:annotation-driven/>

        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>

</beans>
posted @ 2018-10-28 10:26  耳_东  阅读(110)  评论(0)    收藏  举报