MVC模式
M:Model,即模型,对于JavaBean
V:View,即试图,对应JSP页面
C:Controller,即控制器,对应Servlet
1.以下为MVC实现一个简单的增删改查功能
1>显示记录
2>增加一条记录
3>修改一条记录
4>删除一条记录
程序源代码:
M层:模型层
1.封装一条信息的所有属性JavaBean.java ,即VO package muta.bean;
/**
* @author help
*封装一条信息的所有属性
*/
public class JavaBean {
private int id;
private String name;
private String password;
private String sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
https://www.wendangku.net/doc/bb2074432.html, = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) { this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.封装数据库连接以及操作JavaBean所用到的方法,即DAO
package muta.bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* @author help
*操作数据库的方法
*/
public class SqlBean {
Connection con;
PreparedStatement pre;
ResultSet rs;
public SqlBean()
{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/MyServlet","root","1 22828");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @author help
*
*插入新的一条记录
* @return
*/
public int getInsert(String sql,JavaBean jBean)
{
int count =0;
try {
pre = con.prepareStatement(sql);
pre.setString(1,jBean.getName());
pre.setString(2,jBean.getPassword());
pre.setString(3,jBean.getSex());
pre.setInt(4,jBean.getAge());
count=pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
try {
pre.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return count;
}
/**
* @author help
*
*删除一条记录
* @return
*/
public int getDelete(String sql,int id)
{
int count =0;
try {
pre = con.prepareStatement(sql);
pre.setInt(1, id);
count=pre.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally
{
try {
pre.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return count;
}
/**
* @author help
*
*根据ID查询某一条记录
* @return
*/
public JavaBean getSearchById(String sql,int id)
{
JavaBean jBean = new JavaBean();
try {
pre = con.prepareStatement(sql);
pre.setInt(1, id);
rs=pre.executeQuery();
while(rs.next())
{
jBean.setId(rs.getInt("id"));
jBean.setName(rs.getString("name"));
jBean.setPassword(rs.getString("password"));
jBean.setSex(rs.getString("sex"));
jBean.setAge(rs.getInt("age"));
}
} catch (SQLException e)
{
e.printStackTrace();
}
return jBean;
}
/**
* @author help
*
*更新某一条记录
* @return
*/
public int getUpdate(String sql,JavaBean jBean)
{
int count =0;
try {
pre = con.prepareStatement(sql);
pre.setInt(5,jBean.getId());
pre.setString(1,jBean.getName());
pre.setString(2,jBean.getPassword());
pre.setString(3,jBean.getSex());
pre.setInt(4,jBean.getAge());
count = pre.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
pre.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return count;
}
/**
* @author help
*
*显示所有记录
* @return
*/
public List getSearch(String sql)
{
List list = new ArrayList();
//获取prepareStatement对象
try {
pre = con.prepareStatement(sql);
rs=pre.executeQuery();
while(rs.next())
{
JavaBean jBean =new JavaBean();
jBean.setId(rs.getInt("id"));
jBean.setName(rs.getString("name"));
jBean.setPassword(rs.getString("password"));
jBean.setSex(rs.getString("sex"));
jBean.setAge(rs.getInt("age"));
list.add(jBean);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
pre.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
}
V层:试图层
1.显示记录集的页面 SearchList.jsp
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
学生信息如下:
ID | 姓名 | 密码 | 性别 | 年龄 | |
<%=jBean.getId() %> | <%=jBean.getName() %> | <%=jBean.getPassword() %> | <%=jBean.getSex() %> | <%=jBean.getAge() %> |
2.插入页面Insert.jsp
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%> <%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort( )+path+"/";
%>
学生管理页面
3.更新页面Update.jsp
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
学生管理页面
4.出错页面Error.jsp
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
对不起!您<%=request.getAttribute("error") %>失败
C层:控制层—Servlet
1.显示记录集的Servlet----SearchById.java
package muta.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import muta.bean.JavaBean;
import muta.bean.SqlBean;
public class SearchById extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取用户ID
String sid = request.getParameter("id");
int id =Integer.parseInt(sid);
String sql ="select * from student where id=?";
SqlBean sBean = new SqlBean();
JavaBean jBean = sBean.getSearchById(sql, id);
//用户ID
request.setAttribute("id",jBean.getId());
//用户姓名
request.setAttribute("name",jBean.getName());
//用户密码
request.setAttribute("password",jBean.getPassword());
//用户性别
String sex="";
String man="";
String woman="";
if(jBean.getSex()!=null)
{
sex=jBean.getSex().trim();
if(sex.equals("男"))
{
man ="checked";
}
else
{
woman ="checked";
}
}
request.setAttribute("man",man);
request.setAttribute("woman",woman);
//用户年龄
request.setAttribute("age",jBean.getAge());
//转发
request.getRequestDispatcher("Update.jsp").forward(request, response);
}
}
2.增加记录的Servlet----Insert.java
package muta.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import muta.bean.SqlBean;
import muta.bean.JavaBean;
public class Insert extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取前台页面数据
String name =request.getParameter("name");
String password =request.getParameter("password");
String sex =request.getParameter("sex");
String sage = request.getParameter("age");
int age =Integer.parseInt(sage);
//封装到JavaBean对象中去
JavaBean jBean = new JavaBean();
jBean.setName(name);
jBean.setPassword(password);
jBean.setSex(sex);
jBean.setAge(age);
//调用模型层
String sql = "insert into student(name,password,sex,age) values(?,?,?,?)";
SqlBean sBean = new SqlBean();
int count =sBean.getInsert(sql,jBean);
String url="";
if(count>0)
{
url="SearchList.jsp";
}
else
{
url ="error.jsp";
request.setAttribute("error", "");
}
//转发
request.getRequestDispatcher("SearchList.jsp").forward(request, response);
}
}
3.更新记录的Servlet----Updated.java
package muta.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import muta.bean.JavaBean;
import muta.bean.SqlBean;
public class Update extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获得前台表单信息
String sid = request.getParameter("id");
i nt id =Integer.parseInt(sid);
String name =request.getParameter("name");
String password =request.getParameter("password");
String sex =request.getParameter("sex");
String sage = request.getParameter("age");
int age =Integer.parseInt(sage);
//封装到JavaBean对象中去
JavaBean jBean = new JavaBean();
jBean.setId(id);
jBean.setName(name);
jBean.setPassword(password);
jBean.setSex(sex);
jBean.setAge(age);
String sql ="update student set name=?,password=?,sex=?,age=? where id=?";
SqlBean sBean = new SqlBean();
int count =sBean.getUpdate(sql,jBean);
String url="";
if(count>0)
{
url="SearchList.jsp";
}
else
{
url ="error.jsp";
request.setAttribute("error", "更新");
}
request.getRequestDispatcher("SearchList.jsp").forward(request, response);
}
}
4.删除记录的Servlet----Delete.java
package muta.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import muta.bean.SqlBean;
public class Delete extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
//获取超链接传来的数据
String sId = request.getParameter("id");
int id =Integer.parseInt(sId);
//调用模型层删除方法
String sql = "delete from student where id=?";
SqlBean sBean = new SqlBean();
int count =sBean.getDelete(sql, id);
String url="";
if(count>0)
{
url="SearchList.jsp";
}
else
{
url ="error.jsp";
request.setAttribute("error", "删除");
}
//转发
request.getRequestDispatcher(url).forward(request, response);
}
}
XML文件
xmlns="https://www.wendangku.net/doc/bb2074432.html,/xml/ns/javaee" xmlns:xsi="https://www.wendangku.net/doc/bb2074432.html,/2001/XMLSchema-instance" xsi:schemaLocation="https://www.wendangku.net/doc/bb2074432.html,/xml/ns/javaee https://www.wendangku.net/doc/bb2074432.html,/xml/ns/javaee/web-app_2_5.xsd">
应用Servlet实现购物车 具体实现过程 1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean; public class GoodsSingle { private String name; //保存商品名称 private float price; //保存商品价格 private int num; //保存商品购买数量public String getName() { return name; } public void setName(String name) { https://www.wendangku.net/doc/bb2074432.html, = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }
public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 2、创建工具JavaBean-------- MyTools 实现字符型数据转 换为整型及乱码处理 package com.yxq.toolbean; import java.io.UnsupportedEncodingException; public class MyTools { public static int strToint(String str){ //将String型数据转换为int型数据的方法 if(str==null||str.equals("")) str="0"; int i=0; try{ i=Integer.parseInt(str); //把str 转换成
用Servlet 进行文件上传的原理和实现 Servlet 是用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。使用 Servlet 可以方便地处理在 HTML 页面表单中提交的数据,但 Servlet 的 API 没有提供对以 mutilpart/form-data 形式编码的表单进行解码的支持,因而对日常应用中经常涉及到到文件上传等事务无能为力。 如何用 Servlet 进行文件的上传,必须编程实现。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。 浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户提交请求后,将文件数据和其他表单信息编码并上传至服务器端,服务器端(通常是一个 cgi 程序)将上传的内容进行解码了,提取出 HTML 表单中的信息,将文件数据存入磁盘或数据库。 二、各过程详解 A)填写表单并提交
通过表单提交数据的方法有两种,一种是 GET 方法,另一种是 POST 方法,前者通常用于提交少量的数据,而在上传文件或大量数据时,应该选用 POST 方法。在 HTML 代码中,在