java框架008——MVC模式

一、Java Web 开发流程

在这里插入图片描述

二、MVC的概念

。MVC是Model-View-Controller的简称,即模型-视图-控制器。
。MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。

1、模型(Model)
模型是应用程序的主体部分,模型表示业务数据和业务逻辑
一个模型能为多个视图提供数据。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性。
2、视图(View)
视图是用户看到并与之交互的界面,作用如下:
——视图向用户显示相关的数据。
——接受用户的输入。
——不进行任何实际的业务处理。
3、控制器(Controller)
控制器接受用户的输入并调用模型和视图去完成用户的需求
控制器接收请求并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。

在这里插入图片描述

三、MVC模式的实现例子

项目结构
在这里插入图片描述
在这里插入图片描述
使用的数据库表
在这里插入图片描述

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>
  <named-config name="com.dgut.javaweb"> 
  	<!-- 配置数据库连接 -->
	<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?serverTimezone=Hongkong</property>
	<property name="user">root</property>
	<property name="password">75688</property>
	<!-- 数据库连接池的其他配置 -->
    <property name="acquireIncrement">2</property><!-- 连接数不够时,每次新增2个 -->
    <property name="initialPoolSize">2</property><!-- initial Pool Size -->
    <property name="minPoolSize">2</property><!-- min connection count -->
    <property name="maxPoolSize">10</property><!-- max connection count -->
  </named-config>
</c3p0-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>javawebMVC</display-name>
 
  <!-- =注册initServlet,目的是加快响应数据库连接池= -->
  <servlet>
	  	<servlet-name>initServlet</servlet-name><!-- 给指定的servlet取名 -->
	  	<servlet-class>com.dgut.mvc.controller.InitServlet</servlet-class>
	  	<load-on-startup>1</load-on-startup>
  </servlet>
  
 <!-- =====使用filter过滤器解决中文问题====== -->
  <filter>
	  	<filter-name>encodingFilter</filter-name>
	  	<filter-class>com.dgut.mvc.filter.EncodingFilter</filter-class>
  </filter>
  
  <filter-mapping>
	  	<filter-name>encodingFilter</filter-name>
	  	<url-pattern>/*</url-pattern>
	  	<!-- 配置拦截request,forward请求方式 -->
	  	<dispatcher>REQUEST</dispatcher>
	  	<dispatcher>FORWARD</dispatcher>
  </filter-mapping>
</web-app>

JdbcTools

JdbcTools.java

package com.dgut.mvc.utils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcTools {

	private static ComboPooledDataSource cpds = null;

	public static Connection getConnectionFromPool() throws Exception {
		if (cpds == null)
			cpds = new ComboPooledDataSource("com.dgut.javaweb");
		return cpds.getConnection();
	}

	public static Connection getConnection() throws Exception {
//		String driverClass = "com.mysql.cj.jdbc.Driver";
//		String jdcbUrl = "jdbc:mysql://localhost:3306/jdbc?serverTimezone=Hongkong";
//		String user = "root";
//		String password = "75688";
//		Class.forName(driverClass);
//
//		Connection connection = DriverManager.getConnection(jdcbUrl, user, password);
		return getConnectionFromPool();
	}

	public static void releaseResource(Statement statement, Connection connection) {
		try {
			if (statement != null)
				statement.close();
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		try {
			if (connection != null)
				connection.close();
		} catch (Exception e2) {
			e2.printStackTrace();
		}
	}

	public static void releaseResource(ResultSet rs, Statement statement, Connection connection) {
		try {
			if (rs != null)
				rs.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			if (statement != null)
				statement.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			if (connection != null)
				connection.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

Bean

Member.java

在这里插入图片描述

MemberSearchCondition.java

在这里插入图片描述

Dao

DAO.java

package com.dgut.mvc.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public interface DAO<T> {

	// 查询一个
	public T fetch(Connection connection, String sql, Object... objects) throws SQLException;

	// 查询一组
	public List<T> fetchList(Connection connection, String sql, Object... objects) throws SQLException;

	// 增删改
	public void update(Connection connection, String sql, Object... objects) throws SQLException;

	// 查询一个分量
	public <E> E fetchScaler(Connection connection, String sql, Object... objects) throws SQLException;

}

MemberDao.java

package com.dgut.mvc.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.dgut.mvc.bean.Member;
import com.dgut.mvc.bean.MemberSearchCondition;

public interface MemberDao {

	public void addMember(Connection connection, Member member) throws SQLException;

	public void deleteMember(Connection connection, int id) throws SQLException;

	public void updateMember(Connection connection, Member member) throws SQLException;

	public Member searchMemberById(Connection connection, int id) throws SQLException;

	public List<Member> fetchAllMembers(Connection connection) throws SQLException;

	public List<Member> searchMemberByCondition(Connection connection, MemberSearchCondition conditions)
			throws SQLException;
}

DAOImpl

DAOJdbcImpl.java

package com.dgut.mvc.daoImpl;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.dgut.mvc.dao.DAO;

public class DAOJdbcImpl<T> implements DAO<T> {
	private QueryRunner queryRunner;
	private Class<T> type;

	@SuppressWarnings("unchecked")
	public DAOJdbcImpl() {
		queryRunner = new QueryRunner();
		type = getSuperClassGenricType(getClass(), 0);
	}

	@SuppressWarnings("rawtypes")
	private Class getSuperClassGenricType(Class clazz, int index) {
		Type genType = clazz.getGenericSuperclass();
		if (!(genType instanceof ParameterizedType)) {
			return Object.class;
		}
		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
		if (index >= params.length || index < 0) {
			return Object.class;
		}
		if (!(params[index] instanceof Class)) {
			return Object.class;
		}
		return (Class) params[index];
	}

	public T fetch(Connection connection, String sql, Object... objects) throws SQLException {
		BeanHandler<T> rsh = new BeanHandler<T>(type);
		return queryRunner.query(connection, sql, rsh, objects);
	}

	public List<T> fetchList(Connection connection, String sql, Object... objects) throws SQLException {
		BeanListHandler<T> rsh = new BeanListHandler<T>(type);
		return queryRunner.query(connection, sql, rsh, objects);
	}

	public void update(Connection connection, String sql, Object... objects) throws SQLException {
		queryRunner.update(connection, sql, objects);
	}

	public <E> E fetchScaler(Connection connection, String sql, Object... objects) throws SQLException {
		ScalarHandler<E> rsh = new ScalarHandler<E>();
		return (E) queryRunner.query(connection, sql, rsh, objects);
	}

}

MemberDaoJdbcImpl.java

package com.dgut.mvc.daoImpl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.dgut.mvc.bean.Member;
import com.dgut.mvc.bean.MemberSearchCondition;
import com.dgut.mvc.dao.MemberDao;

public class MemberDaoJdbcImpl extends DAOJdbcImpl<Member> implements MemberDao {

	public void addMember(Connection connection, Member member) throws SQLException {
		String sql = "INSERT INTO member (name,Idcard, phone, credits) VALUES (?, ?, ?, ?)";
		Object[] objs = { member.getName(), member.getIdCard(), member.getPhone(), member.getCredits() };
		update(connection, sql, objs);
	}

	public void deleteMember(Connection connection, int id) throws SQLException {
		String sql = "DELETE FROM member WHERE memberId=?";
		update(connection, sql, id);
	}

	public void updateMember(Connection connection, Member member) throws SQLException {
		String sql = "UPDATE member set name=?, idCard=?, phone=?, credits=? WHERE memberId=?";
		Object[] objs = { member.getName(), member.getIdCard(), member.getPhone(), member.getCredits(),
				member.getId() };
		update(connection, sql, objs);
	}

	public Member searchMemberById(Connection connection, int id) throws SQLException {
		String sql = "SELECT memberId id,name,idCard,phone,credits FROM member WHERE memberId=?";
		return fetch(connection, sql, id);
	}

	public List<Member> fetchAllMembers(Connection connection) throws SQLException {
		String sql = "SELECT memberId id,name,idCard,phone,credits FROM member";
		return fetchList(connection, sql);
	}

	@Override
	public List<Member> searchMemberByCondition(Connection connection, MemberSearchCondition conditions)
			throws SQLException {
		String sql = "SELECT memberId id,name,idCard,phone,credits FROM member "
				+ "WHERE name like ? AND idCard like ? AND phone like ? ";
		Object[] objs = { conditions.getName(), conditions.getIdCard(), conditions.getPhone() };
		return fetchList(connection, sql, objs);
	}

}

TestDao

TestMemberDao.java

package com.dgut.mvc.test;

import java.sql.Connection;
import java.util.List;

import org.junit.jupiter.api.Test;

import com.dgut.mvc.bean.Member;
import com.dgut.mvc.dao.MemberDao;
import com.dgut.mvc.daoImpl.MemberDaoJdbcImpl;
import com.dgut.mvc.utils.JdbcTools;

class TestMemberDao {

	@Test
	public void testGetAll() {
		MemberDao dao = new MemberDaoJdbcImpl();
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			List<Member> members = dao.fetchAllMembers(connection);
			System.out.println(members);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	@Test
	public void testGetById() {
		int id = 10;
		MemberDao dao = new MemberDaoJdbcImpl();
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			Member member = dao.searchMemberById(connection, id);
			System.out.println(member);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}

	}

	@Test
	public void testUpdateMember() {
		Member member = new Member(7, "heihei", "20201001", "13920201001", 200);
		MemberDao dao = new MemberDaoJdbcImpl();
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			dao.updateMember(connection, member);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	@Test
	public void testDeleteMember() {
		int id = 13;
		MemberDao dao = new MemberDaoJdbcImpl();
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			dao.deleteMember(connection, id);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	@Test
	public void testAddMember() {
		Member member = new Member(null, "CCC", "2020002", "1392020002", 100);
		MemberDao dao = new MemberDaoJdbcImpl();
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			dao.addMember(connection, member);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}
}

Servlet

InitServlet.java

package com.dgut.mvc.controller;

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.dgut.mvc.utils.JdbcTools;

public class InitServlet implements Servlet {

	@Override
	public void destroy() {
	}

	@Override
	public ServletConfig getServletConfig() {
		return null;
	}

	@Override
	public String getServletInfo() {
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {

	}

}

MemberServlet.java

package com.dgut.mvc.controller;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dgut.mvc.bean.Member;
import com.dgut.mvc.bean.MemberSearchCondition;
import com.dgut.mvc.service.MemberService;

@WebServlet("*.do") // 响应所有以.do结尾的请求
public class MemberServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private MemberService memberService;

	public MemberServlet() {
		super();
		this.memberService = new MemberService();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String servletpath = request.getServletPath();// 获取请求路径
		String methodName = servletpath.substring(1, servletpath.length() - 3);// 提取路径中“.do”前的名字
		System.out.println("servletpath==" + servletpath);
		System.out.println("methodName==" + methodName);

		// 使用反射机制,即通过上面取得的方法名,自动去调用下面具体的方法,
		// 例如请求为listMember.do的路径,将调用listMember()方法
		try {
			Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,
					HttpServletResponse.class);
			method.invoke(this, request, response);// 调用Method类代表的方法。可以实现动态调用,例如可以动态的传人参数,可以把方法参数化。
		} catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException
				| InvocationTargetException e) {
			e.printStackTrace();
		}
	}

	// 查询所有
	public void listMember(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		List<Member> members = memberService.getAllMembers();

		request.setAttribute("members", members);
		request.getRequestDispatcher("/WEB-INF/views/memberList.jsp").forward(request, response);
	}

	// 删除
	public void deleteMember(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int id = Integer.parseInt(request.getParameter("id"));
		memberService.deleteMembers(id);
		// 回到listMember页面,显示所有信息
		listMember(request, response);

	}

	// 转到添加页面
	public void toInputMember(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getRequestDispatcher("/WEB-INF/views/inputMember.jsp").forward(request, response);
	}

	// 添加
	public void inputMember(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = request.getParameter("name");
		String idCard = request.getParameter("idCard");
		String phone = request.getParameter("phone");
		int credits = Integer.parseInt(request.getParameter("credits"));

		Member member = new Member(null, name, idCard, phone, credits);

		boolean res = memberService.inputMembers(member);

		if (res) {
			request.setAttribute("SucceedMessage", "添加成功");
			request.getRequestDispatcher("/WEB-INF/views/succeed.jsp").forward(request, response);
		} else {
			request.setAttribute("ErrorMessage", "添加失败,IdCard已存在");
			request.getRequestDispatcher("/WEB-INF/views/inputMember.jsp").forward(request, response);
		}
	}

	// 转到编辑页面
	public void editMember(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int id = Integer.parseInt(request.getParameter("id"));

		Member member = memberService.getMembers(id);

		request.setAttribute("member", member);

		request.getRequestDispatcher("/WEB-INF/views/updateMember.jsp").forward(request, response);

	}

	// 编辑
	public void updateMember(HttpServletRequest request, HttpServletResponse response) throws Exception, IOException {
		int id = Integer.parseInt(request.getParameter("id"));
		String name = request.getParameter("name");
		String idCard = request.getParameter("idCard");
		String phone = request.getParameter("phone");
		int credits = Integer.parseInt(request.getParameter("credits"));

		Member member = new Member(id, name, idCard, phone, credits);

		memberService.updateMember(member);

		request.setAttribute("SucceedMessage", "编辑成功");
		request.getRequestDispatcher("/WEB-INF/views/succeed.jsp").forward(request, response);

	}

	// 模糊查询
	public void searchMember(HttpServletRequest request, HttpServletResponse response) throws Exception, IOException {
		String name = request.getParameter("name");
		String idCard = request.getParameter("idCard");
		String phone = request.getParameter("phone");

		MemberSearchCondition sc = new MemberSearchCondition(name, idCard, phone);

		List<Member> members = memberService.searchMemberByCondition(sc);

		request.setAttribute("members", members);
		request.getRequestDispatcher("/WEB-INF/views/memberList.jsp").forward(request, response);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

Service

MemberService.java

package com.dgut.mvc.service;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import com.dgut.mvc.bean.Member;
import com.dgut.mvc.bean.MemberSearchCondition;
import com.dgut.mvc.dao.MemberDao;
import com.dgut.mvc.daoImpl.MemberDaoJdbcImpl;
import com.dgut.mvc.utils.JdbcTools;

public class MemberService {
	private MemberDao dao;

	public MemberService() {
		this.dao = new MemberDaoJdbcImpl();
	}

	// 获取所有
	public List<Member> getAllMembers() {
		Connection connection = null;
		List<Member> memberms = new ArrayList<Member>();
		try {
			connection = JdbcTools.getConnection();
			memberms = dao.fetchAllMembers(connection);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
		return memberms;
	}

	// 删除
	public void deleteMembers(int id) {
		Connection connection = null;

		try {
			connection = JdbcTools.getConnection();
			dao.deleteMember(connection, id);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	// 添加
	public boolean inputMembers(Member member) {
		boolean result = false;
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			dao.addMember(connection, member);
			result = true;// 添加成功,则为true
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
		return result;
	}

	// 查找
	public Member getMembers(int id) {
		Connection connection = null;
		Member member = new Member();
		try {
			connection = JdbcTools.getConnection();
			member = dao.searchMemberById(connection, id);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
		return member;
	}

	// 编辑
	public void updateMember(Member member) {
		Connection connection = null;
		try {
			connection = JdbcTools.getConnection();
			dao.updateMember(connection, member);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
	}

	// 模糊查询
	public List<Member> searchMemberByCondition(MemberSearchCondition conditions) {
		Connection connection = null;
		List<Member> memberms = new ArrayList<Member>();
		try {
			connection = JdbcTools.getConnection();
			memberms = dao.searchMemberByCondition(connection, conditions);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcTools.releaseResource(null, connection);
		}
		return memberms;
	}

}

EncodingFilter.java

package com.dgut.mvc.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		request.setCharacterEncoding("utf-8");
		chain.doFilter(request, response);
	}

}

view

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath }/listMember.do">Member Manager</a>
</body>
</html>

memberList.jsp

<%@page import="com.dgut.mvc.bean.Member"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page import="java.util.List,java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>显示所有界面</h3>
	<hr>
		<form action="${pageContext.request.contextPath }/searchMember.do" method="post">
			Name:<input type="text"  name="name" value="${param.name }"><br>
			IdCard:<input type="text"  name="idCard" value="${param.idCard }"><br>
			Phone:<input type="text"  name="phone" value="${param.phone }"><br>
			<input type="submit" value="模糊查询">
		</form>
	<hr>
	<%
		List<Member> members = (List<Member>) request.getAttribute("members");
	%>
	<a href="${pageContext.request.contextPath }/toInputMember.do">Add Member</a>
	<table border="1" cellspacing="0" cellpadding="5">
		<tr>
			<th>Name</th>
			<th>IdCard</th>
			<th>Phone</th>
			<th>Credits</th>
			<th>update</th>
			<th>delete</th>
		</tr>
		<%
		if(members!=null){
			for(Member member:members){
		%>
		
		<tr>
			<td><%=member.getName() %></td>
			<td><%=member.getIdCard() %></td>
			<td><%=member.getPhone() %></td>
			<td><%=member.getCredits() %></td>
			<td><a href="${pageContext.request.contextPath }/editMember.do?id=<%=member.getId() %>">Update</a></td>
			<td><a href="${pageContext.request.contextPath }/deleteMember.do?id=<%=member.getId() %>">Delete</a></td>
		</tr>
		<%
			}
			
		}
		 %>
	</table>
	
	<h1>use jstl</h1>
	<table border="1" cellspacing="0" cellpadding="5">
		<tr>
			<th>Name</th>
			<th>IdCard</th>
			<th>Phone</th>
			<th>Credits</th>
			<th>update</th>
			<th>delete</th>
		</tr>
		<c:if test="${!empty requestScope.members}">
			<c:forEach items="${requestScope.members}" var="member">
				<tr>
					<td>${member.name}</td> 
					<td>${member.idCard}</td> 
					<td>${member.phone}</td>
					<td>${member.credits}</td>
					<td><a href="${pageContext.request.contextPath }/editMember.do?id=${member.id }">Update</a></td>
					<td><a href="${pageContext.request.contextPath }/deleteMember.do?id=${member.id}">Delete</a></td>
				</tr>
			</c:forEach>
		</c:if>
	</table>
</body>
</html>

succeed.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h4>${requestScope.SucceedMessage }</h4>
	<a href="${pageContext.request.contextPath }/listMember.do">Member Manager</a>
</body>
</html>

inputMember.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h3>添加界面</h3>
	<h4>${requestScope.ErrorMessage }</h4>


	<!-- 以post方式提交到inputMember的servlet -->
	<!--  value="${param.name}"消息回显 -->
	<form action="${pageContext.request.contextPath }/inputMember.do" method="post">
		Name:<input type="text" name="name" value="${param.name}"><br>
		IdCard:<input type="text" name="idCard" value="${param.idCard}"><br>
		Phone:<input type="text" name="phone" value="${param.phone}"><br>
		Credits:<input type="text" name="credits" value="${param.credits}"><br>
		<input type="submit" value="添加">
		<a href="${pageContext.request.contextPath }/listMember.do">Member Manager</a>
	</form>
</body>
</html>

updateMember.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h3>编辑界面</h3>
	<h4>${requestScope.ErrorMessage }</h4>

	<!-- 以post方式提交到inputMember的servlet -->
	<!-- value="${requestScope.member.name}"消息回显 -->
	<form action="${pageContext.request.contextPath }/updateMember.do" method="post">
		<input type="hidden"  name="idCard" value="${requestScope.member.idCard}"><br>
		<input type="hidden"  name="id" value="${requestScope.member.id}"><br>
		
		Name:<input type="text" name="name" value="${requestScope.member.name}"><br>
		IdCard:<input type="text" disabled="disabled" name="idCard" value="${requestScope.member.idCard}"><br>
		Phone:<input type="text" name="phone" value="${requestScope.member.phone}"><br>
		Credits:<input type="text" name="credits" value="${requestScope.member.credits}"><br>
		<input type="submit" value="确定编辑">
		<a href="${pageContext.request.contextPath }/listMember.do">Member Manager</a>
	</form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值