1. 前端如何向后端传值?
- get/post:“key=value&key1=value1”
- form表单:name属性
- ajax请求中:data{}属性
后台如何接收数据?
String dname = request.getParameter("dname");
//name的值与key
//批量传“A=001&A=002&A=003”
String ds[] = request.getParameterValues("A");
2. 后端如何向前端传值?
- 传统请求:通过转发或重定向或相应
//转发
request.setAttribute("ddd",depts);
request.getRequestDispatcher("/list.jsp").forward(request,response);
//重定向
response.sendRedirect("/oa/dept/list");
- 前台取?
<c:forEach items="${ddd}" var="det" varStatus="deptStatus">
<tr>
<td>${deptStatus.count}</td>
<td>${det.deptno}</td>
<td>${det.dname}</td>
<td>
<a href="javascript:void(0)" onclick="del(${det.deptno})">删除</a>
<a href="dept/detail?f=edit&deptno=${det.deptno}">修改</a>
<a href="dept/detail?f=detail&deptno=${det.deptno}">详情</a>
</td>
</tr>
</c:forEach>
- Ajax请求:(JSON传)
String jsonStr = JSON.toJSONString(listArea);
response.getWriter().print(jsonStr);
3. 何时采用POST?GET?
(邮寄) POST? “增 删 改” “登陆功能密码传递时(安全)”
(取)GET?“查”
4. 模板方法设计模式?(解决类爆炸)
一次请求对应一个Servlet----->>一个业务对应一个Servlet,一个实现方式对应一个方法
@WebServlet("*.do")
public class studentServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
System.out.println("Welcome");
String servletPath = request.getServletPath();
if ("/delete.do".equals(servletPath)) {
delete(request,response);
} else if ("/update.do".equals(servletPath)) {
update(request,response);
} else if ("/add.do".equals(servletPath)) {
add(request,response);
} else {
select(request,response);
}
}
private void update(HttpServletRequest request, HttpServletResponse response) {
}
private void add(HttpServletRequest request,
HttpServletResponse response) {
}
private void select(HttpServletRequest request, HttpServletResponse response) {
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生管理系统</title>
</head>
<body>
<h1>学生管理系统</h1>
<a href="/ex/add.do">增加学生信息</a><hr>
<a href="/ex/delete.do">删除学生信息</a><hr>
<a href="/ex/update.do">更改学生信息</a><hr>
<a href="/ex/select.do">查询学生信息</a>
</body>
</html>
5. UUID的应用?
由一组数字,字母,四个横杠组成,实际开发当中,采用UUID做数据库的主键,保证唯一性。
package test;
import java.util.UUID;
/**
* @Author zuozuo
* @Date 2022-05-30
* @Description:UUID的应用
**/
public class uuidTest {
public static void main(String[] args) {
/*UUID uuid = new UUID();*/
UUID uuid = UUID.randomUUID();
String id = uuid.toString();
System.out.println(id);
System.out.println(id.length());
String idd = id.replaceAll("-", "");
System.out.println(idd);
}
}
6.转发与重定向的区别?
转发是一次请求,重定向是两次请求。
1.使用了request域的时候,必须用请求转发。
2.当前后两个页面有数据传递时,例如查询了数据需要在页面显示时,用请求转发
3.访问站外资源的时候用重定向。
4.当没有数据传递,例如做了更新操作跳转到其他页面,就用重定向。
5.其他随意
转发(上图)与重定向(下图)