return "/pages/front/success.jsp";

return "/pages/front/fail.jsp";

这两句的结构是: 前缀(prefix)+变化值+ 后缀(suffix)

前缀是/pages/front/。后缀是.jsp

在springmvc.xml配置文件里用视图解析器配置前缀后缀,使return里只有变化值: return "success";

 

视图解析器只对转发有效,对重定向无效。

springmvc.xml:

按住ctrl shift h,搜索internalResourceViewResolver,然后右键copy qualified name。粘贴到class中。

<?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-4.2.xsd 
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
    
    <!-- 配置包扫描 -->        
    <context:component-scan base-package="cn.java.controller"></context:component-scan>
        
    <!-- 加入springmvc特有的注解驱动 -->    
    <mvc:annotation-driven></mvc:annotation-driven>    
    
    <!-- 视图解析器 -->
    <!-- prefix:前缀-->
    <!-- suffix:后缀-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/front/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    
</beans>

java:

    @RequestMapping(value="test1")
    public String test1(String username,String password) {
        
        if("admin".equals(username)&&"123".equals(password)) { //登录成功
            return "success";
        }
        else { //登录失败
            System.out.println(username);
            return "fail";
        }
        
    }  

这里实际return的就是/pages/front/success.jsp

 

 

解决在jsp页面输入中文传入后台就乱码问题:

过去做法就是:创建一个包:cn.java.Filters,创建EncodingFilter.java。这是一个过滤器,先把乱码转成utf-8再放行。同时也要在web.xml配置过滤器。

过去servlet处理乱码方法:

EncodingFilter.java

package cn.java.filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        chain.doFilter(request, response); //放行
        
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }
    
}

web.xml

  <!-- 配置过滤器,要放在servlet前面,因为是先拦截 -->
  <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>cn.java.filters.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

 

 

而springmvc简化了的方法:

不用再写EncodingFilter.java了,springmvc有写好的方法:CharacterEncodingFilter

 ctrl+shift+h搜索CharacterEncodingFilter,右键copy quality name,粘贴到filter-class中

web.xml

  <filter>
      <filter-name>encodingFilter</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>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

 

posted on 2018-05-28 13:52  lonske  阅读(314)  评论(0编辑  收藏  举报