EmpServlet案例--使用重定向和路径匹配访问路径(一个Servlet处理多个请求)

来源:互联网 发布:php 九九乘法表 表格 编辑:程序博客网 时间:2024/06/04 01:23

主要代码如下:

package web;import java.io.IOException;import java.io.PrintWriter;import java.sql.Date;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;/** * 使用一个Servlet处理多个请求(重写EmpServlet案例) * 路径规范:查询员工    /findEmp.do *     增加员工   /addEmp.do * */public class MainServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//获取请求路径String path = req.getServletPath();if("/findEmp.do".equals(path)){//注意避免空指针异常findEmp(req,res);}else if("/addEmp.do".equals(path)){addEmp(req,res);}else{//该异常抛给服务器,由服务器统一处理异常throw new RuntimeException("查无此页");}}//查询员工    /findEmp.doprotected void findEmp(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//接收参数(此处没有)//查询8-12三条记录(处理业务)res.setContentType("text/html;charset=utf-8");List<Emp> list = new EmpDao().findAll();//输出响应PrintWriter out = res.getWriter();out.println("<a href='add_emp.html'>增加</a>");out.println("<table border='1' cellspacing='0' width='40%'>");out.println("  <tr>");out.println("    <td>编号</td><td>姓名</td><td>职位</td><td>工资</td><td>入职日期</td>");out.println("  </tr>");if(list != null){for(Emp e : list){out.println("<tr>");out.println("  <td>"+e.getEmpno()+"</td>");out.println("  <td>"+e.getEname()+"</td>");out.println("  <td>"+e.getJob()+"</td>");out.println("  <td>"+e.getSal()+"</td>");out.println("  <td>"+e.getHiredate()+"</td>");out.println("</tr>");}}out.println("</table>");out.close();}//增加员工    /addEmp.doprotected void addEmp(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//接收数据req.setCharacterEncoding("utf-8");String ename = req.getParameter("ename");String job = req.getParameter("job");Double sal = Double.parseDouble(req.getParameter("sal"));Date hiredate = Date.valueOf(req.getParameter("hiredate"));//处理业务Emp e = new Emp();e.setEname(ename);e.setJob(job);e.setSal(sal);e.setHiredate(hiredate);new EmpDao().save(e);//此处输出一句话//输出响应(重定向到查询页面--就是建议浏览器去访问查询页面)//当前:/servlet1/addEmp.do//目标:/servlet1/findEmp.dores.sendRedirect("findEmp.do");}}
配置文件:

<!-- 使用一个Servlet处理多个请求(重写EmpServlet案例) -->  <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>

静态网页代码:

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




0 0
原创粉丝点击