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. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  2. springmvc基础学习3---注解简单理解

    1:@Controller 用来注解这个bean是MVC模型中的一个C 会被spring的auto-scan扫到纳入管理.Spring mvc框架中的action层注入,也就是控制层.控制器Contr ...

  3. SQL基本编程,分支语句,循环语句,存储过程,触发器

    基本编程: 定义变量 declare @变量名 数据类型 赋值 set @变量名 = 值 select @变量名 = 值 取值打印 select @变量名 print @变量名 映射到结果集 打印到消 ...

  4. echo print print_r的区别

    echo       PHP语句   效率最高    输出一个或者多个字符串 print()    函数       效率高     只能打印出简单类型变量的值(如int,string) print_ ...

  5. Linux之yum

    yum相当于是linux的本地的软件资源库,每个一段时间必须手动更新yum update

  6. js原生的轮播图

    <!DOCTYPE html>   <html>   <head>   <meta charset="UTF-8">   <t ...

  7. 【Spring】BeanFactory解析bean详解

    在该文中来讲讲Spring框架中BeanFactory解析bean的过程,该文之前在小编原文中有发表过,要看原文的可以直接点击原文查看,先来看一个在Spring中一个基本的bean定义与使用. pac ...

  8. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  9. 少走弯路——Android对话框AlertDialog.Builder使用方法简述

    android的自定义对话框,不需要通过继承的方式来实现,因为android已提供了相应的接口Dialog Builder ,下面就是 样例: new AlertDialog.Builder(this ...

  10. Angular.js学习笔记 (一)

    - angular中最重要的概念是指令(directive)- ng-model 是双向数据绑定的指令,效果就是将当前元素的value属性和模型中的[user.name]建立绑定关系### 模块(Mo ...