1.前后端传、接收数据,参数
(1)servlet接收前端:
request.getParameter("check");
(2)servlet传值给前端(序列化用ObjecMapper)
/**
* 直接将传入的对象序列化为json,并且写回客户端
* @param obj
*/
public void writeValue(Object obj,HttpServletResponse response) throws IOException {
ObjectMapper mapper = new ObjectMapper();
response.setContentType("application/json;charset=utf-8");
mapper.writeValue(response.getOutputStream(),obj);
}
/**
* 将传入的对象序列化为json,返回
* @param obj
* @return
*/
public String writeValueAsString(Object obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(obj);
}
(3) 前端接收servlet的值,与发送参数给后端:
ajax请求:pb为后端返回来的,rname为前端传的值
$.get("route/pageQuery",{cid:cid, currentPage:currentPage,rname:rname},function (pb){}
2.解决乱码问题
后端响应给前端:
Response.setContentType("text/html;charset=utf-8");
后端接收前端(过滤器请求所有的解决所有)
/**
* 解决全站乱码问题,处理所有的请求
*/
@WebFilter("/*")
public class CharchaterFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse rep, FilterChain filterChain) throws IOException, ServletException {
//将父接口转为子接口
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) rep;
//获取请求方法
String method = request.getMethod();
//解决post请求中文数据乱码问题
if(method.equalsIgnoreCase("post")){
request.setCharacterEncoding("utf-8");
}
//处理响应乱码
response.setContentType("text/html;charset=utf-8");
filterChain.doFilter(request,response);
}
@Override
public void destroy() {
tomcat8以下版本解决的get请求数据乱码问题
rname=newString(rname.getBytes("iso-8859-1"),"utf-8");
3. 前端一个网页获取另一个网页的参数(封装getParameter)
//根据传递过来的参数name获取对应的值
function getParameter(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
var r = location.search.substr(1).match(reg);
if (r!=null) return (r[2]); return null;
}
如果一个页面想要获得rid=3,只需要var rid=getParameter(“rid”);
4.javaBean对象
JavaBean是一种遵循开发规范的一种类。在JavaWeb开发中,经常用来存储实体信息,比如用户实体信息,实体信息不应该是散乱的,它应该是一个整体(就好像从数据库取出一个用户的年龄,id,手机等数据,这些数据应该归属于一个对象,而不应该用某个单纯变量来存储),所以才需要javabean。而为了规范开发,以及规范使用规则,所以需要按照一定规则来定义JavaBean。
只有符合以下规则的才是一个javabean:
必须要有一个无参构造函数【一些地方的javabean的使用需要利用反射,所以需要无参构造函数】
所有属性必须私有化【私有规则】
私有化的属性必须提供public类型的getter、setter方法,对于boolean类型的可以使用isXxx来代替。【getXxx()和setXxx()中的属性名首字母要大写(这是一种规则,不然的话,一些例如jsp中的使用“对象.属性名”将无法获取,因为调用的是对应的getter函数)】
5. BeanUtils帮助封装对象
BeanUtils可以帮助我们把属性封装到javabean对象的对应属性中,比如可以把提交的表单数据封装到一个实体对象中。
封装时要求参数名称和javabean的属性名相同
下面的代码为form表单提交的数据:
Map<String, String[]> map = request.getParameterMap();
//封装user对象
User user = new User();
try {
BeanUtils.populate(user, map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
上面的代码中,BeanUtils.populate(user, map);自动把map中的同名的属性key 存储到对象user中。
6.产生UUID随机字符串工具类
UUID具有唯一性
public final class UuidUtil {
private UuidUtil(){}
public static String getUuid(){
return UUID.randomUUID().toString().replace("-","");
}
}