JavaWeb同步学习笔记之三十四、JavaWeb_MVC案例之小结(1)

JavaWeb_MVC案例之小结(1)

MVC案例之小结(1)

  • 1.整体的架构:MVC设计模式到底如何落地。
    整体的架构
  • 2.多个请求对应一个Servlet
     1)Servlet映射为*.do:可以接受一切.do结尾的请求。
<servlet-mapping>
    <servlet-name>CustomerServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

.
   2)在Servlet的doGet和都Post方法中:

		//1.获取ServletPath:/update.do 或 /add.do
		String servletPath = request.getServletPath();
		//2.去除 / 和 do,得到类似于update或do这样的字符串
		String methodName = servletPath.substring(1);
		methodName = methodName.substring(0,methodName.length() - 3);
		
		try {
			//3.利用反射获取methodName对应的方法
			Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
			//4.利用反射调用对应的方法
			method.invoke(this, request, response);
		} catch (Exception e) {
			//若调用的方法不存在,响应一个error.jsp。
			response.sendRedirect("error.jsp");
		}
  • 3.查询:MVC的整个流程
    query.do --> doPost --> query --> JSP
    调用CustomerDAO的getForListWithCriteriaCustomer()得到Customer的集合。
		//1.调用CustomerDAO的getForListWithCriteriaCustomer(cc)得到Customer的集合。
		List<Customer> customers = customerDAO.getForListWithCriteriaCustomer(cc);
		//2.把Customer的集合放入request中。
		request.setAttribute("customer", customers);
		//3.转发页面到index.jsp(不能使用重定向)。
		request.getRequestDispatcher("/index.jsp").forward(request, response);

JSP:获取request中的customers属性,遍历显示。

	<%
		List<Customer> customers = (List<Customer>)request.getAttribute("customer");
	%>
		<%
			for(Customer customer: customers) {
		%>
		<tr>
			<td><%= customer.getName() %></td>
			<td><%= customer.getAddress() %></td>
			<td><%= customer.getPhone() %></td>
			<td><a href="">Edit</a></td>
			<td><a class="delete" href="delete.do?id=<%= customer.getId()%>">Delete</a></td>
		</tr>
		<%
			}
		%>
  • 4.模糊查询:
     1)正常的SQL:
String sql = "SELECT id, name, address, phone FROM customers WHERE name LIKE ? AND address LIKE ? AND phone LIKE ?";

.
   2)填充占位符的技巧:以name属性为例:若name字段为null,则返回“%%”,若不为null,返回“%” + “%”。

	public String getName() {
		if (name == null) 
			name = "%%";
		else 
			name = "%" + name + "%";
		return name;
	}

.
   3)把查询条件封装为一个JavaBean。

public class CriteriaCustomer {
	
	private String name;
	
	private String address;
	
	private String phone;
	
	//...

猜你喜欢

转载自blog.csdn.net/baidu_38688346/article/details/88370172