05-springmvc之乱码解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhaoliangyan/article/details/88808502

* 简单登录      

public interface UserMapper {
    User queryUser(User user);
}

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hx.ssm.dao.UserMapper">
    <select id="queryUser" parameterType="User" resultType="User">
        SELECT id,username,psw,sex
        FROM USER
        WHERE username = #{username}
          AND psw = #{psw};
    </select>
</mapper>

public class LoginOutDataVo extends BaseDataVo {
    private boolean loginStatus;

    public boolean isLoginStatus() {
        return loginStatus;
    }

    public void setLoginStatus(boolean loginStatus) {
        this.loginStatus = loginStatus;
    }

    @Override
    public String toString() {
        return "LoginOutDataVo{" +
                "loginStatus=" + loginStatus +
                ", code=" + code +
                ", result='" + result + '\'' +
                '}';
    }
}


public interface LoginService {
    LoginOutDataVo login(User user);
}


@Service
public class LoginServiceImpl implements LoginService {
    @Autowired
    private UserMapper mUserMapper;
    @Override
    public LoginOutDataVo login(User user) {
        User u = mUserMapper.queryUser(user);
        LoginOutDataVo loginOutDataVo=new LoginOutDataVo();
        loginOutDataVo.setLoginStatus(u!=null);
        return loginOutDataVo;
    }
}

@Controller
public class LoginController {
    @Autowired
    private LoginService mLoginService;

    @RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }

    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login(User user){
        System.out.println(user);
        LoginOutDataVo loginOutDataVo = mLoginService.login(user);
        if(loginOutDataVo.isLoginStatus()){
            return "redirect:/ztree2.jsp";
        }
        return "redirect:/loginfail.jsp";
    }
}

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址栏还是原来的地址
redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>欢迎登录</title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.min.css">
    <script src="${pageContext.request.contextPath}/jquery/jquery-3.3.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>

<form class="form-horizontal" role="form" action="${pageContext.request.contextPath}/login.do" method="post">
    <div class="form-group">
        <label  class="col-sm-6 control-label">账户</label>
        <div class="col-sm-3">
            <input type="text" class="form-control"  name="username"
                   placeholder="请输入账户">
        </div>
    </div>
    <div class="form-group">
        <label  class="col-sm-6 control-label">密码</label>
        <div class="col-sm-3">
            <input type="password" class="form-control"  name="psw"
                   placeholder="请输密码">
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <div class="checkbox">
                <label>
                    <input type="checkbox"> 请记住我
                </label>
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-default">登录</button>
        </div>
    </div>
</form>

</body>
</html>


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>登录失败</title>
</head>
<body>
    <h1 style="color: red">登录失败...</h1>
</body>
</html>

* 乱码的解决

    * 登录用中文测试

* 解决post乱码问题

        * 在web.xml

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

  * 解决get乱码问题

对于get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

另外一种方法对参数进行重新编码:
String userName =new 
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
在tomcat8默认编码不是ISO8859-1

猜你喜欢

转载自blog.csdn.net/linzhaoliangyan/article/details/88808502