javaweb学习4——HttpServletRequest的使用
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转
本文链接:https://www.cnblogs.com/xdp-gacl/p/3798347.html
getParameter(String)方法(常用)
getParameterValues(String name)方法(常用)
MessageFormat.format(String pattern, Object... arguments)// 替换字符串内的占位符
提交中文数据乱码问题总结:
1、如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding("UTF-8"))
2、如果提交方式为get,设置request对象的编码是无效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再手工转换,步骤如下:
1).获取获取客户端提交上来的数据,得到的是乱码字符串,data="???è?????"
String data = request.getParameter("paramName");
2).查找ISO8859-1码表,得到客户机提交的原始数据的字节数组
byte[] source = data.getBytes("ISO8859-1");
3).通过字节数组以指定的编码构建字符串,解决乱码
data = new String(source, "UTF-8");
通过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, "GB2312"),如果是UTF-8,那么就设置成data = new String(source, "UTF-8")
转发:
①:request.getRequestDispatcher("/test.jsp").forward(request, response);
②: RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher("/test.jsp"); reqDispatcher.forward(request, response);
重定向:
response.sendRedirect("/servlet/xxx.java");
转发应用:
// 后台
String data="大家好"; /** * 将数据存放到request对象中,此时把request对象当作一个Map容器来使用 */ request.setAttribute("data", data); //客户端访问RequestDemo06这个Servlet后,RequestDemo06通知服务器将请求转发(forward)到test.jsp页面进行处理 request.getRequestDispatcher("/test.jsp").forward(request, response);
//前台
使用普通方式取出存储在request对象中的数据: <h3 style="color:red;"><%=(String)request.getAttribute("data")%></h3> 使用EL表达式取出存储在request对象中的数据: <h3 style="color:red;">${data}</h3>
java正则使用:
// 获取用户名 String username = request.getParameter("username"); Pattern pat = Pattern.compile("^[\u4e00-\u9fa5]"); Matcher matcher = pat.matcher(username); if (matcher.find()){ return; }