Web开发基础_Servlet学习_0009_Servlet开发案例改进

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Coder_Boy_/article/details/82317484

使用一个Servlet处理多个请求

案例演示:

工程案例目录结构

 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.study</groupId>
  <artifactId>Servlet02</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
  		<groupId>javaee</groupId>
  		<artifactId>javaee-api</artifactId>
  		<version>5</version>
  	</dependency>
  </dependencies>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>EmpManager_v3</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>main</servlet-name>
  	<servlet-class>web.MainServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>main</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  <!-- <servlet>
  	<servlet-name>findEmp</servlet-name>
  	<servlet-class>web.FindEmpServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>findEmp</servlet-name>
  	<url-pattern>/findEmp</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>addEmp</servlet-name>
  	<servlet-class>web.AddEmpServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>addEmp</servlet-name>
  	<url-pattern>/addEmp</url-pattern>
  </servlet-mapping> -->
</web-app>

Emp

package entity;

import java.io.Serializable;

public class Emp implements Serializable {

	private Integer empno;
	private String name;
	private String job;
	private Double sal;
	
	public Integer getEmpno() {
		return empno;
	}
	public void setEmpno(Integer empno) {
		this.empno = empno;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public Double getSal() {
		return sal;
	}
	public void setSal(Double sal) {
		this.sal = sal;
	}
	
	
	
}

EmpDao

package dao;

import java.util.ArrayList;
import java.util.List;

import entity.Emp;

public class EmpDao {
	
	public void save(Emp e) {
		System.out.println(
			"向DB插入员工数据:" + e);
	}

	public List<Emp> findAll() {
		List<Emp> list = new ArrayList<Emp>();
		
		Emp e1 = new Emp();
		e1.setEmpno(1);
		e1.setName("唐僧");
		e1.setJob("领导");
		e1.setSal(9000.0);
		list.add(e1);
		
		Emp e2 = new Emp();
		e2.setEmpno(2);
		e2.setName("悟空");
		e2.setJob("保镖");
		e2.setSal(6000.0);
		list.add(e2);
		
		Emp e3 = new Emp();
		e3.setEmpno(3);
		e3.setName("八戒");
		e3.setJob("徒弟");
		e3.setSal(7000.0);
		list.add(e3);
		
		return list;
	}
	
}


MainServlet

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

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

import dao.EmpDao;
import entity.Emp;
/**
 * 1.先规范
 * 	查询员工:/findEmp.do
 *  增加员工:/addEmp.do
 * @author Cher_du
 *
 */
public class MainServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, 
			HttpServletResponse res) throws ServletException, IOException {
			
		//2.再判断
		String path = req.getServletPath();
		if("/findEmp.do".equals(path)){
			//查询员工
			findEmp(req,res);System.out.println("findEmp.do");
		}else if("/addEmp.do".equals(path)){
			//增加员工
			addEmp(req,res);System.out.println("addEmp.do");
		}else{
			//所以规范之外的路径都是错的
			throw new RuntimeException("没有这个页面。");
		}
		
	}

	protected void addEmp(HttpServletRequest req, 
			HttpServletResponse res) throws ServletException,IOException {
		req.setCharacterEncoding("utf-8");
		//接收表单传入的员工数据
		String name = req.getParameter("name");
		String job = req.getParameter("job");
		String sal = req.getParameter("sal");
		//存储数据
		Emp e = new Emp();
		e.setName(name);
		e.setJob(job);
		e.setSal(new Double(sal));
		EmpDao dao = new EmpDao();
		dao.save(e);
		//重定向到查询:
		//1.重定向不是直接调用目标;
		//2.而是告诉浏览器要访问哪个目标;
		//3.由浏览器自己去访问它;
		//4.重定向是web中一种特殊的跳转方式;
		//当前:/EmpManager/addEmp.do
		//目标:/EmpManager/findEmp.do
		res.sendRedirect("findEmp.do");

		
	}

	protected void findEmp(HttpServletRequest req, 
			HttpServletResponse res) throws ServletException,IOException {
		//1.接收请求数据
		//无参数,略
		//2.处理业务数据
		//查询全部员工
		EmpDao dao = new EmpDao();
		List<Emp> list = dao.findAll();
		//3.输出响应数据
		res.setContentType(
			"text/html;charset=utf-8");
		PrintWriter w = res.getWriter();
		
		w.println("<input type='button' value='增加' onclick='location.href=\"add_emp.html\"'/>");
		w.println("<table border='1' width='40%' cellspacing='0'>");
		//标题行
		w.println("	<tr>");
		w.println("   <td>编号</td>");
		w.println("   <td>姓名</td>");
		w.println("   <td>职位</td>");
		w.println("   <td>工资</td>");
		w.println("	</tr>");
		//数据行
		for(Emp e : list) {
			w.println("	<tr>");
			w.println("   <td>"+e.getEmpno()+"</td>");
			w.println("   <td>"+e.getName()+"</td>");
			w.println("   <td>"+e.getJob()+"</td>");
			w.println("   <td>"+e.getSal()+"</td>");
			w.println("	</tr>");
		}
		w.println("</table>");
		
		w.close();
		
	}
	
	

}

add_emp.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>增加员工</title>
	</head>
	<body>
		<!-- 
			当前:/EmpManager/add_emp.html
			目标:/EmpManager/addEmp.do
		 -->
		 <form action="addEmp.do" method="post">
		 	<p>
		 		姓名:<input type="text" name="name"/>
		 	</p>
		 	<p>
		 		职位:<input type="text" name="job"/>
		 	</p>
		 	<p>
		 		工资:<input type="text" name="sal"/>
		 	</p>
		 	<p>
		 		<input type="submit" value="保存"/>
		 	</p>
		 </form>
	
	</body>

</html>

将EmpManager工程部署到Tomcat上,运行Tomcat启动案例工程,

浏览器录入http://localhost:8080/EmpManager_v3//findEmp.do即可:如果没有错误,最终页面展示效果应如下图:

猜你喜欢

转载自blog.csdn.net/Coder_Boy_/article/details/82317484