一.介绍:

  项目依赖包:jdbc数据库包

  jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的。

  但是,jsp内容混乱,项目结构复杂时,代码会混乱

二.运行原理:

  jsp发出请求到web--

  web接收请求并匹配请求对应的servlet--

  servlet调用数据库dao层操作数据库--

  如果有数据传递,放到request或者session中

  重点:servlet会执行doService()方法来判断调用doGet()或者doPost()

三.开发步骤:

1.新建web项目

2.新建实体类  User.java

 package com.mart.bean;

 public class User {

     //属性
private Integer id;
private String uname;
private String upass;
private String tname;
private String utype;
//属性访问
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public String getUtype() {
return utype;
}
public void setUtype(String utype) {
this.utype = utype;
} //构造
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Integer id, String uname, String upass, String tname,
String utype) {
super();
this.id = id;
this.uname = uname;
this.upass = upass;
this.tname = tname;
this.utype = utype;
}
public User(String uname, String upass, String tname, String utype) {
super();
this.uname = uname;
this.upass = upass;
this.tname = tname;
this.utype = utype;
}
//更新操作改善,不加name更新
public User(Integer id, String upass, String tname, String utype) {
super();
this.id = id;
this.upass = upass;
this.tname = tname;
this.utype = utype;
} //tostring
@Override
public String toString() {
return "User [id=" + id + ", uname=" + uname + ", upass=" + upass
+ ", tname=" + tname + ", utype=" + utype + "]";
} }

3.编写操作接口  UserDao.java

package com.mart.dao;

import java.util.List;

import com.mart.bean.User;

public interface UserDao {
/**
* @param u 待添加的用户
* @return 0-添加失败 1-添加成功
*/
public Integer addUser(User u);
/**
* @param id 待删除用户编号
* @return 0-删除失败 1-删除成功
*/
public Integer delUser(Integer id);
/**
* @param u 要添加的用户
* @return 0-更新失败 1-更新成功
*/
public Integer updUser(User u);
/**
* @param id 待查找的用户编号
* @return 要查找的用户
*/
public User findUserById(Integer id);
/**
* @return 全部用户列表
*/
public List<User> FindAllUser(); }

4.编写数据库操作工具类  DBUtil.java

package com.mart.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class DBUtil { //获取oracle数据库连接
public Connection getCurrentConnection(){
//初始返回值
Connection conn = null; try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
"mart", "java"); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return conn;
}
}

5.编写接口实现  UserDaoImpl.java

package com.mart.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.mart.bean.User;
import com.mart.dao.UserDao;
import com.mart.util.DBUtil; public class UserDaoImpl implements UserDao{ @Override
public Integer addUser(User u) {
// TODO Auto-generated method stub
int res=-1;
//连接数据库
DBUtil dbUtil = new DBUtil();
Connection conn = dbUtil.getCurrentConnection();
//添加语句
PreparedStatement ps = null;
String sql = "insert into mart_user values(seq_mart_user.nextval,?,?,?,?)"; try {
ps = conn.prepareStatement(sql);
ps.setString(1, u.getUname());
ps.setString(2, u.getUpass());
ps.setString(3, u.getTname());
ps.setString(4, u.getUtype());
//执行
res = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(ps!=null)ps.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return res;
} @Override
public Integer delUser(Integer id) {
// TODO Auto-generated method stub
int res=-1;
//连接数据库
DBUtil dbUtil = new DBUtil();
Connection conn = dbUtil.getCurrentConnection();
//删除语句
PreparedStatement ps = null;
String sql = "delete from mart_user where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
//执行
res = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(ps!=null)ps.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return res;
} @Override
public Integer updUser(User u) {
// TODO Auto-generated method stub
int res=-1;
//连接数据库
DBUtil dbUtil = new DBUtil();
Connection conn = dbUtil.getCurrentConnection();
//更新语句
PreparedStatement ps = null;
String sql = "update mart_user set upass=?,tname=?,utype=? where id=?"; try {
ps = conn.prepareStatement(sql);
// ps.setString(1, u.getUname());--完善更改,不设置名字
ps.setString(1, u.getUpass());
ps.setString(2, u.getTname());
ps.setString(3, u.getUtype());
ps.setInt(4, u.getId());
//执行
res = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(ps!=null)ps.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return res;
} @Override
public User findUserById(Integer id) {
// TODO Auto-generated method stub
User u = null;
//连接数据库
DBUtil dbUtil = new DBUtil();
Connection conn = dbUtil.getCurrentConnection();
//查找语句
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from mart_user where id=?"; try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
//获取结果
rs = ps.executeQuery();
rs.next();
u = new User(rs.getInt("id"), rs.getString("uname"), rs.getString("upass"),
rs.getString("tname"), rs.getString("utype")); } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return u;
} @Override
public List<User> FindAllUser() {
// TODO Auto-generated method stub
List<User> uList = new ArrayList<User>();
//连接数据库
DBUtil dbUtil = new DBUtil();
Connection conn = dbUtil.getCurrentConnection();
//查找语句
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from mart_user"; try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
//获取结果
while(rs.next()){
uList.add(new User(rs.getInt("id"), rs.getString("uname"), rs.getString("upass"),
rs.getString("tname"), rs.getString("utype")));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(conn!=null)conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return uList;
} }

6.编写测试文件,测试是否底层数据操作成功  UserTest.java

package com.mart.test;

import java.util.ArrayList;
import java.util.List; import com.mart.bean.User;
import com.mart.dao.impl.UserDaoImpl; public class UserTest {
//主测试
public static void main(String[] args) {
//实例化实现
UserDaoImpl udi = new UserDaoImpl(); // addTest(udi);
// delTest(udi);
// updTest(udi);
// findTest(udi);
// findAllTest(udi); } //添加测试
private static void addTest(UserDaoImpl udi){
//设置添加对象
User u = new User("wangwu", "0002", "王五", "0");
Integer res = udi.addUser(u);
if(res>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
}
//删除测试
private static void delTest(UserDaoImpl udi){
//设置删除编号
int id = 2;
int res = udi.delUser(id);
if(res>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}
//更新测试
private static void updTest(UserDaoImpl udi){
//设置更新对象
User u = new User(9, "tiqi", "123", "田七", "0");
Integer res = udi.updUser(u);
if(res>0){
System.out.println("更新成功");
}else{
System.out.println("更新失败");
}
}
//id查找测试
private static void findTest(UserDaoImpl udi){
//设置查找id
int id = 6;
User u =udi.findUserById(id);
System.out.println(u);
}
//全部查找
private static void findAllTest(UserDaoImpl udi){
//新建保存集
List<User> uList = new ArrayList<User>();
uList = udi.FindAllUser();
for (User user : uList) {
System.out.println(user);
}
} }

7.编写jsp显示界面,仅以用户显示界面为例  show.jsp

<%@page import="com.mart.bean.User"%>
<%@page import="com.mart.dao.impl.UserDaoImpl"%>
<%@page import="com.mart.dao.UserDao"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>用户显示</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head> <body>
<div class="top" style="width: 800px;height: 50px">
<h3>用户显示界面</h3>
</div>
<div class="center" style="width: 800px;height: auto;">
<table border="1">
<tr>
<th>用户编号</th>
<th>用户账户</th>
<th>用户密码</th>
<th>真实名字</th>
<th>用户类型</th>
<th>用户操作</th>
</tr>
<tr>
<%
//实例化接口
UserDao udi = new UserDaoImpl();
List<User> uList = new ArrayList<User>();
uList = udi.FindAllUser();
for(User u : uList){
%>
<tr>
<td>
<%=u.getId() %>
</td>
<td>
<%=u.getUname() %>
</td>
<td>
<%=u.getUpass() %>
</td>
<td>
<%=u.getTname() %>
</td>
<td>
<%=u.getUtype().equals("0")?"普通":"管理员" %>
</td>
<td>
<a href="upd.jsp?id=<%=u.getId() %>&uname=<%=u.getUname()%>&
upass=<%=u.getUpass() %>&tname=<%=u.getTname()%>&
utype=<%=u.getUtype() %>">更新</a>
/<a href="../del.do?id=<%=u.getId() %>">删除</a>
</td>
</tr>
<%
}
%>
</tr>
<tr>
<td colspan="6" align="center">
<a href="./add.jsp">用户添加</a>
</td>
</tr>
</table>
</div> </body>
</html>

8.编写servlet文件  ShowAction.java

package com.mart.controller;

import java.io.IOException;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.mart.bean.User;
import com.mart.dao.UserDao;
import com.mart.dao.impl.UserDaoImpl; public class ShowAction extends HttpServlet { //解析请求方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { System.out.println("用户展示界面:com.mart.controller.show");
//获取用户列表
UserDao udi = new UserDaoImpl();
List<User> uList = udi.FindAllUser();
//传递用户列表到前断
//此处用session则服务器过载
request.setAttribute("uList", uList);
//转到显示界面
//不能重定向,会丢失数据
response.sendRedirect("user/show.jsp"); } //响应请求方法
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* get和post行为相同时,直接设置内部调用即可
*/
this.doGet(request, response);
} }

8.在web.xml里注册servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>淘宝商城servlet-xml配置</display-name>
<servlet>
<description>这是我的用户显示界面,显示全部用户</description>
<display-name>user_show</display-name>
<servlet-name>ShowAction</servlet-name>
<servlet-class>com.mart.controller.ShowAction</servlet-class>
</servlet>
<servlet>
<description>这是我的用户添加界面</description>
<display-name>user_add</display-name>
<servlet-name>AddAction</servlet-name>
<servlet-class>com.mart.controller.AddAction</servlet-class>
</servlet>
<servlet>
<description>这是我的用户删除界面</description>
<display-name>user_delete</display-name>
<servlet-name>DeleteAction</servlet-name>
<servlet-class>com.mart.controller.DeleteAction</servlet-class>
</servlet>
<servlet>
<description>这是我的用户更新界面</description>
<display-name>user_update</display-name>
<servlet-name>UpdateAction</servlet-name>
<servlet-class>com.mart.controller.UpdateAction</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ShowAction</servlet-name>
<url-pattern>/show.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AddAction</servlet-name>
<url-pattern>/add.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DeleteAction</servlet-name>
<url-pattern>/del.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UpdateAction</servlet-name>
<url-pattern>/upd.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

jsp+servlet+javabean开发web项目的更多相关文章

  1. 创建jsp+Servlet+JavaBean+JDBC+MySQL项目的过程

    1 根据需求建立Mysql数据,确立数据库的表的字段.属性.主键,外键等.下面我使用的数据库名dev ,表名user,字段  name,设置为主键.用户名不能为空,字段password,密码 2 在E ...

  2. jsp+Servlet+JavaBean+JDBC+MySQL项目增删改查

    1简单的Mvc,分层建包. java resources src/mian/java (1)dao 包 JDBC连接类,连接数据库.增删改查方法,其他的方法. (2)model包 实体类,数据库字段, ...

  3. 使用Eclipse开发Web项目(JSP)——简单登录、无sql

    1.使用Eclipse开发Web项目(JSP) tomcat 2.在Eclipse中创建的Web项目: 浏览器可以直接访问webContent中的文件 例如http://localhost:8080/ ...

  4. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  5. (jsp+servlet+javabean )MVC架构

    MVC是三个单词的缩写,这三个单词分别为:模型.视图和控制. 使用的MVC的目的:在于将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如Windows系统资源管理器文件夹内容的显示方 ...

  6. MVC jsp+servlet+javabean 连接Mysql数据库測试demo

    本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...

  7. Springboot开发web项目

    当前,Spring毫无疑问已经成为java后台对象管理标准框架,除了通过IOC能够管理我们的自定义对象的生命周期之外还提供了众多功能繁复的可配置功能模块.但同时带来了复杂的配置项,这对初学者而言简直是 ...

  8. servlet+Ajax开发web工程

    前言 因为目前基本已经不会再用到servlet+jsp开发项目了,基本都是使用框架来开发:我们常用的框架都是基于servlet来封装的,该阶段只需要了解一下tomcat如何使用,servlet的生命周 ...

  9. 使用Eclipse EE开发web项目

    最近使用EclipseEE开发web项目,遇到了以下几个问题: 1. 通过tomcat启动web应用的时候,总是提示找不到包或者class. 经过排查,发现所有的jar包并没有放到WEB-INF/li ...

随机推荐

  1. Cinder组件解析

    1  Cinder架构图 Cinder是在虚拟机和具体存储设备之间引入了一层“逻辑存储卷”的抽象,Cinder本身并不是一种存储技术,只是提供一个中间的抽象层,Cinder通过调用不同存储后端类型的驱 ...

  2. 渲染、render与绘制

    渲染是抽象到具体的过程: 抽象:图片信息的描述(比如一条线:两个端点的位置.线粗.颜色等特征): 具体:依据抽象信息得到的可视图片(绘制过程). 渲染是中文翻译的问题,有种添油加醋的感觉.直意就是交与 ...

  3. 【[NOI2009]管道取珠】

    --\(shallwe\):这道题是\(noipDay2T2\)难度 好一个\(Day2T2\)难度啊,我觉得我可以退役了 平方和好像没有什么办法可以快速统计,于是考虑转化一下 我们可以将题意转化成这 ...

  4. 使用plugins让打包更便捷

    之前运行dist下的js,都是手动把index.html拷贝过去的,每次把dist文件夹删除,都需要将index.html拷贝进去,这样很麻烦,我们在webpack官方插件中找到HtmlWebpack ...

  5. 30、springboot与检索(2)

    项目中进行整合: 1.整合 新建项目加入依赖(NoSql) springboot默认使用SpringDate ElasticSearch模块进行操作   查看自动配置类: SpringBoot默认支持 ...

  6. Linux网卡别名

    网卡别名是什么 IP别名就是一张物理网卡上配置多个IP,实现类似子接口之类的功能.从网络协议的角度来讲,下层总是为上层提供服务,一块网卡的MAC地址只要一一对应上层的一个IP地址,并且这个逻辑关系是合 ...

  7. disconf实践(一)Ubuntu16.04部署disconf

    在企业中,随着公司业务的扩张,用户量的增大,单一节点应用无法支撑正常的业务逻辑,比较常见的现象是访问速度变慢,甚至超时,严重时可能会造成系统宕机.为了尽量减少宕机的风险,单一节点系统需要进行水平扩展, ...

  8. rhel install java jdk

    Linux安装JDK完整步骤 1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version "1. ...

  9. 使用 JLINK 的 RTT 功能 进行 调试打印数据

    jlink V9 时,在 SWD 接口 模式 时  ,要 接 SWO 这个引脚 ,否则导致 在 FreeRTOS的任务中不能使用,  正确的 接线方法 是  VCC,GND,SWDIO,SWCLK,S ...

  10. 仿手机iPhone QQ消息小红点动画1

    前言 偶然发现iPhone QQ 显示消息条数的小红点可以响应动作事件,也有人问我这样的动画该怎么做,这里就把实现的思路简单的描述一下.在实现的过程中,同样发现该功能并没有看到的那么简单,要做一个完备 ...