开发需求:把 http request 对象的数据保存到数据库中

第一步:编写 RequestInfoService 类,保存方法名是 saveRequestInfo

    // 保存request信息
public void saveRequestInfo(HttpServletRequest request){
Connection conn = null;
PreparedStatement pstmt = null; BaseDao baseDao = new BaseDao();
try {
conn = baseDao.dbConnection();
} catch (SQLException e1) {
e1.printStackTrace();
} StringBuffer sqlBf = new StringBuffer();
sqlBf.setLength(0); sqlBf.append("INSERT INTO REQUEST_INFO (REQUEST_INFO_SEQ \n");
sqlBf.append(" , CHARACTER_ENCODING \n");
sqlBf.append(" , CONTENT_TYPE \n");
sqlBf.append(" , CONTEXT_PATH \n");
sqlBf.append(" , LOCAL_ADDR \n");
sqlBf.append(" , LOCAL_NAME \n");
sqlBf.append(" , LOCAL_PORT \n");
sqlBf.append(" , METHOD \n");
sqlBf.append(" , REMOTE_ADDR \n");
sqlBf.append(" , REMOTE_HOST \n");
sqlBf.append(" , REMOTE_PORT \n");
sqlBf.append(" , REMOTE_USER \n");
sqlBf.append(" , REQUEST_URI \n");
sqlBf.append(" , REQUESTED_SESSION_ID \n");
sqlBf.append(" , LOCALE \n");
sqlBf.append(" , REGI_DT) \n");
sqlBf.append("VALUES(SEQ_REQUEST_INFO.NEXTVAL \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , ? \n");
sqlBf.append(" , SYSDATE) \n"); System.out.println(sqlBf.toString()); try {
pstmt = conn.prepareStatement(sqlBf.toString());
idx = 1;
pstmt.setString(idx++, request.getCharacterEncoding());
pstmt.setString(idx++, request.getContentType());
pstmt.setString(idx++, request.getContextPath());
pstmt.setString(idx++, request.getLocalAddr());
pstmt.setString(idx++, request.getLocalName());
pstmt.setInt(idx++, request.getLocalPort());
pstmt.setString(idx++, request.getMethod());
pstmt.setString(idx++, request.getRemoteAddr());
pstmt.setString(idx++, request.getRemoteHost());
pstmt.setInt(idx++, request.getRemotePort());
pstmt.setString(idx++, request.getRemoteUser());
pstmt.setString(idx++, request.getRequestURI());
pstmt.setString(idx++, request.getRequestedSessionId());
pstmt.setString(idx++, request.getLocale().toString()); int i = pstmt.executeUpdate();
if (i == 1) {
System.out.println("##### save request success \n");
} else {
System.out.println("##### save request fail \n");
}
} catch (SQLException e) {
e.printStackTrace();
} try {
baseDao.dbDisconnection();
} catch (SQLException e) {
e.printStackTrace();
}
}

第二步:Oracle 建表语句

CREATE TABLE SCOTT.REQUEST_INFO
(
REQUEST_INFO_SEQ NUMBER NOT NULL,
CHARACTER_ENCODING VARCHAR2 (10),
CONTENT_TYPE VARCHAR2 (10),
CONTEXT_PATH VARCHAR2 (50),
LOCAL_ADDR VARCHAR2 (50),
LOCAL_NAME VARCHAR2 (50),
LOCAL_PORT NUMBER,
METHOD VARCHAR2 (10),
REMOTE_ADDR VARCHAR2 (20),
REMOTE_HOST VARCHAR2 (20),
REMOTE_PORT NUMBER,
REMOTE_USER VARCHAR2 (20),
REGI_DT DATE,
REQUEST_URI VARCHAR2 (50),
REQUESTED_SESSION_ID VARCHAR2 (100),
LOCALE VARCHAR2 (20)
) ALTER TABLE SCOTT.REQUEST_INFO ADD(
CONSTRAINT PK_REQUEST_INFO_SEQ PRIMARY KEY (REQUEST_INFO_SEQ));

第三步:在访问页面的servlet中调用此service

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

        RequestInfoService ris = new RequestInfoService();
ris.saveRequestInfo(request); EmpService es = new EmpService();
EmpBean eb = new EmpBean(); eb.setEname(request.getParameter("searchTxt"));
ArrayList<EmpBean> empBean = es.getEmpList(eb); request.setAttribute("empBean", empBean);
request.getRequestDispatcher("/view/empList.jsp").forward(request, response);
}

第四步:测试

访问 http://localhost:8081/web01/view/empList.jsp 页面进行测试。正常时每次点击 search 按钮,插入一条记录到数据库中

保存 http request 的数据到数据库表的更多相关文章

  1. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  2. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  3. Oracle sqlldr 在DOS窗口导入多列数据到数据库表

    sqlldr 用法详见:https://www.cnblogs.com/rootq/archive/2009/03/01/1401061.html 测试内容: 1.创建数据库表: create tab ...

  4. Excel表数据导入数据库表中

    ***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...

  5. SQL语句完成Excel数据导入数据库表中流程方法及注意事项

    第一步:先查看数据库是否安装AccessDatabaseEngine_X64.exe, 如下图查看: 如果未安装先下载脚本之家下载地址 https://www.jb51.net/softs/29150 ...

  6. oralce 超过1亿条数据的数据库表清理实践

    2018-08-18 16:58 无腿鸟 阅读(331) 评论(0) 编辑 收藏 问题:当一个表的数据量超过一亿条,要删除其中的5000w条,如何处理. 如果直接使用delete语句,会涉及到到大量的 ...

  7. 导入数据到数据库表,报错[Err] [Row1] [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    # 在数据库新增查询,执行如下命令即可: show VARIABLES like '%max_allowed_packet%'; set global max_allowed_packet = 2*1 ...

  8. java实现excel表格导入数据库表

    导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...

  9. Activiti工作流数据库表结构

    Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*: ...

随机推荐

  1. CSS:CSS 颜色

    ylbtech-CSS:CSS 颜色 1.返回顶部 1. 颜色是通过对红.绿和蓝光的组合来显示的. 颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光 ...

  2. Ubuntu 安装indicator-sysmonitor

    之前就像安装一个软件用来查看Ubuntu的CPU, 内存, 网速情况, 终于让我碰到了--indicator-sysmonitor 仅需三条命令, 你值得拥有: sudo add-apt-reposi ...

  3. 屏蔽iframe中超链接

    <style type="text/css"> .mask { position: absolute; width: 290px; height: 96px; z-in ...

  4. SpannableStringBuilder 用法浅析以及仿陌陌表情

    SpannableStringBuilder  官方文档解释:这个类可以使文本的内容和标记都可以改变.当我们要为TextView或者Edittext里面的文字加入加入一些效果,如下划线,颜色标 识,超 ...

  5. 4-1数据类型转换的基本概念 & 4-2 & 4-3数据类型转换案例 & 4-4习题

    4-1数据类型转换的基本概念 253是int类型的,赋值给长整型的n 这种就是强制的类型转换 自动类型转换又叫做饮食类型转换,因为他的转换我们是看不到的 实线表示无数据丢失的 虚线在转换时, doub ...

  6. Math对象产生随机数一个小应用

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

  7. HDU2087【KMP-next】

    思路: 利用next[]的转化. //#include <bits/stdc++.h> #include<cstdio> #include<string.h> #i ...

  8. 【Unity3D】3D角色换装++ Advance

    http://www.cnblogs.com/dosomething/archive/2012/12/15/2818897.html 本文在之前的文章Unity3D角色换装的原理 基础上做一个补充 给 ...

  9. 3DMAX 如何将删去的面补回来

    1.例如下面长方体被删除一个面 2.点击主键盘区数字键[3] ,进入[边界]修改模式 ,使用鼠标点击 被删除面的边界,并点击[修改面板]---[封口],例如下图:

  10. C++两个类相互引用错误留影

    java中类相互引用很方便,c++中有编译顺序的问题 c++声明作用,告诉编译器,我声明的东西你要是找不到,那就跳过去吧,等全编译完你就可以找到了. C1.h #pragma once #includ ...