package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import dao.EmployeeDAO;
import entity.Employee; public class ActionServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置解码所使用的字符集,注意要与客户端保持一致
request.setCharacterEncoding("utf-8");
// 告诉浏览器,服务器返回的数据类型
// (通过设置content-type消息头的值)
response.setContentType("text/html;charset=utf-8");
String uri = request.getRequestURI();
String action = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
System.out.println(action);
if ("/list".equals(action)) {
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// 访问数据库,获取所有员工信息
EmployeeDAO dao = new EmployeeDAO();
try {
List<Employee> employees = dao.findAll();
// 依据查询到的员工信息,输出表格
// 因为servlet不擅长生成页面,我们使用转发
// 交给JSP来生成页面
// 1.将处理结果绑定到request
request.setAttribute("employees", employees);
// 2.获取转发器
RequestDispatcher rd = request.getRequestDispatcher("listEmp.jsp");
// 3.转发
rd.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}
// 可以不调用close方法,容器会自动调用close方法。
out.close();
} else if ("/add".equals(action)) {
PrintWriter out = response.getWriter();
// 调用request对象提供的方法来读取请求参数值
String name = request.getParameter("name");
String salary = request.getParameter("salary");
String age = request.getParameter("age"); // 一般来说,服务器端应该对请求参数值做一些
// 合法性检查,比如检查姓名是否为空,这儿
// 暂时不做。 // 将员工信息插入到数据库
EmployeeDAO dao = new EmployeeDAO();
Employee e = new Employee();
e.setName(name);
e.setSalary(Double.parseDouble(salary));
e.setAge(Integer.parseInt(age));
try {
dao.save(e);
// 重定向
out.println("插入成功");
response.sendRedirect("list.do"); } catch (Exception e1) {
e1.printStackTrace();
out.println("<h1>系统繁忙,稍后重试</h1>");
}
// 关闭流。
out.close();
} else if ("/del".equals(action)) {
// 读取要删除员工的id
String id = request.getParameter("id");
EmployeeDAO dao = new EmployeeDAO();
PrintWriter pw = response.getWriter();
try {
dao.del(Integer.parseInt(id));
response.sendRedirect("list.do");
} catch (NumberFormatException e) {
e.printStackTrace();
pw.println("系统繁忙,稍后重试");
}
} else if ("/load".equals(action)) {
PrintWriter out = response.getWriter();
// 读取员工的id
String id = request.getParameter("id");
// 依据id访问数据库,获取员工信息
EmployeeDAO dao = new EmployeeDAO();
try {
Employee e = dao.findById(Integer.parseInt(id));
// 依据查询到的员工信息,生成表单
request.setAttribute("e", e);
request.getRequestDispatcher("updateEmp.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
out.println("系统繁忙,稍后再试!");
}
} else if ("/modify".equals(action)) {
PrintWriter writer = response.getWriter();
// 读取要修改的员工信息
String id = request.getParameter("id");
String name = request.getParameter("name");
String salary = request.getParameter("salary");
String age = request.getParameter("age");
Employee e = new Employee();
EmployeeDAO dao = new EmployeeDAO();
e.setId(Integer.parseInt(id));
e.setName(name);
e.setSalary(Double.parseDouble(salary));
e.setAge(Integer.parseInt(age)); try {
dao.modify(e);
response.sendRedirect("list.do");
} catch (Exception e1) {
e1.printStackTrace();
writer.println("系统繁忙,稍后在式");
}
}
}
} //properties

# connection parameters
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=system
password=123456
# datasouce parameters
initSize=1
maxSize=2

 

JSP动态员工登陆案例的更多相关文章

  1. SSM整合Dubbo登陆案例

    登陆案例 一.创建Service项目存放共同数据 1.1  创建实体类 private long id; private String loginName; private String userNa ...

  2. 09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例

    根据08_android入门_android-async-http开源项目介绍及使用方法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习 ...

  3. C#基础练习(事件登陆案例)

    Form1的后台代码: namespace _08事件登陆案例 {     public partial class Form1 : Form     {         public Form1() ...

  4. android 登陆案例_最终版本 sharedpreference

    xml  与之前的登陆案例相同 java代码: package com.itheima.login; import java.util.Map; import com.itheima.login.ut ...

  5. JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)

    链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...

  6. 09_android入门_採用android-async-http开源项目的GET方式或POST方式实现登陆案例

    依据08_android入门_android-async-http开源项目介绍及用法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习an ...

  7. JSP制作简单登陆

    JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...

  8. 编写jsp动态网页

    默认情况下,jsp网页必须保存在TOMCAT_HOME/webapps 目录下才能被客户请求. JSP网页的主题仍然是html标签,在需要显示动态数据的地方添加<%%>标记,在其中编写合法 ...

  9. jsp动态图片页面基础

    1. 什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 注意:在静态网页中插入flash ,虽然flash是在动的,但是并不是说这个网页就是动态 ...

随机推荐

  1. 队列工厂之RedisMQ

    本次和大家分享的是RedisMQ队列的用法,前两篇文章队列工厂之(MSMQ)和队列工厂之RabbitMQ分别简单介绍对应队列环境的搭建和常用方法的使用,加上本篇分享的RedisMQ那么就完成了咋们队列 ...

  2. TCP协议设计原理

    TCP协议设计原理 最近去了解TCP协议,发现这是一个特别值得深思的协议.在本篇博客中,不会长篇大论的给大家介绍TCP协议特点.包头格式以及TCP的连接和断开等基本原理,而是会带大家深入理解为什么要这 ...

  3. 用ListView实现对数据库的内容显示

    用ListView实现对数据库的内容显示 创建一个触发机制 ---------(作用)将数据读入ArrayList集合中 MyBase base = new MyBase(); SQLiteDatab ...

  4. Spark(开课吧笔记)

    2016.07.14 1-Spark实战演练:Spark概述及生态环境 2.Spark实战演练:Spark vs Hadoop MapReduce     任意一条边有方向且不存在环路的图,一次执行所 ...

  5. 当Node.js遇见Docker

    Node.js Best Practices - How to Become a Better Developer in 2017提到的几点,我们Fundebug深有同感: 使用ES6 使用Promi ...

  6. String 类的实现(3)引用计数实现String类

    我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N的值主要用于析 ...

  7. Python之路-Linux命令基础(3)

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) 2)将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加) 3)将/1.txt./2 ...

  8. es6编写reactjs事件处理函数绑定this三种方式

    第一种:官方推荐的: class LoginControl extends React.Component { constructor(props) { super(props); this.hand ...

  9. js面向对象二级菜单

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  10. CSS3——复杂选择器

    今天把视频里的CSS3复杂选择器部分看完了,来整理一下学到的知识点. 1.兄弟选择器:同一位置级别,可称为兄弟元素 a.相邻兄弟选择器:next紧紧跟在[当前元素之后的](一个),指定选择器的元素   ...