Struts1 增删改查

文章说明

本篇文章介绍如何使用Struts1进行增删改查,仅是对自己学习的记录,并没有深入分析每个模块(不重复造轮子O(∩_∩)O~)。

Tomcat

开源的Web应用服务器,apache-tomcat-8.0.35-windows-x64.zip仅有10.3M。启动服务:bin-startup.bat。

Struts1 增删改查_第1张图片

数据库

MySQL

建立数据库test,并在其中建立表users

CREATE DATABASE test
USE test
CREATE TABLE users (
  id int(10) NOT NULL AUTO_INCREMENT,
  name varchar(10) NOT NULL,
  sex varchar(2) NOT NULL,
  phone varchar(11) DEFAULT NULL,
  address varchar(50) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;

查看表users

DESC users

Struts1 增删改查_第2张图片

数据库管理工具-Navicat

Struts1 增删改查_第3张图片

JDBC

Struts1 增删改查_第4张图片

Struts 1

采用Java Servlet/JSP,实现了基于Java Web应用的MVC框架,是MVC的经典产品。

MVC

Struts1 增删改查_第5张图片

  1. 模型(Model):DB
  2. 视图(View):JSP
  3. 控制器(Controller):ActionServlet

Struts框架

Struts1 增删改查_第6张图片

struts-config.xml:声明和映射Struts组件。

安装 Struts 1

将lib目录下,所有的jar包复制到工程目录WEB-INF的lib目录中。

Struts1 增删改查_第7张图片

配置 Struts 1

在web.xml DD配置文件中,加入

    
        action
        org.apache.struts.action.ActionServlet
    

    
        action
        *.do
    

add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


"Content-Type" content="text/html; charset=UTF-8">



增加用户界面



    
"add.do?action=submit" method="post">
name: "text" name="name">
sex:
phone: "text" name="phone">
address: "text" name="address">
"button" value="add" onclick="validate(this.form);">

Struts1 增删改查_第8张图片

AddAction.java

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import model.DBHelperL;

public class AddAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String phone = request.getParameter("phone");
        String address = request.getParameter("address");
        String action = request.getParameter("action");

        if ("submit".equals(action)) {
            if (name == null || name.length() <= 0) {

            } else {
                // 数据库增加操作
                DBHelperL db = new DBHelperL();
                db.add(name, sex, phone, address);
                db.close();
                // 重定向,防止刷新时重复提交表单!
                response.sendRedirect("show.do");
            }
        }

        return mapping.getInputForward();
    }
}

DB add

    public void add(String name, String sex, String phone, String address) throws SQLException {

        String sql = "INSERT INTO users (name, sex, phone, address) VALUES(?,?,?,?)";

        if (pstm == null) {
            pstm = conn.prepareStatement(sql);
        }

        pstm.setString(1, name);
        pstm.setString(2, sex);
        pstm.setString(3, phone);
        pstm.setString(4, address);

        pstm.execute();
    }

struts-config.xml DD配置

中,添加action。

    "/add" type="action.AddAction" input="/pages/add.jsp">
        "success" path="/show.do">
    

show.jsp


    <%
        DBHelperL db = new DBHelperL();
        List> lists = db.queryAll();
        db.close();

        request.setAttribute("lists", lists);
    %>

    
"show.do" method="post"> "center"> "list" items="${lists}" varStatus="status">
users表的所有数据
count id name sex phone address delete update
${status.count} ${list.get(0)} ${list.get(1)} ${list.get(2)} ${list.get(3)} ${list.get(4)} "show.do?deleteID=${list.get(0)}">删除 "update.do?updateID=${list.get(0)}">修改

"add.do">增加用户

Struts1 增删改查_第9张图片

DB queryByID

    public List queryByID(String ID) throws SQLException {

        List list = new ArrayList<>();

        String sql = "SELECT * FROM users WHERE id = ?";

        pstm = conn.prepareStatement(sql);
        pstm.setString(1, ID);
        ResultSet rs = pstm.executeQuery();

        while (rs.next()) {
            // 将结果顺序存放到一个list中,作为结果返回
            list.add(rs.getString(2));
            list.add(rs.getString(3));
            list.add(rs.getString(4));
            list.add(rs.getString(5));
        }
        return list;
    }

struts-config.xml DD配置

    "/show" type="action.DeleteAction" input="/pages/show.jsp"
        forward="/pages/show.jsp">

DeleteAction.java

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import model.DBHelperL;

public class DeleteAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String ID = request.getParameter("deleteID");

        DBHelperL db = new DBHelperL();
        db.deleteByID(ID);
        db.close();

        return mapping.getInputForward();
    }
}

DB deleteByID

    public boolean deleteByID(String ID) throws SQLException {

        String sql = "DELETE FROM users WHERE id = ?";

        pstm = conn.prepareStatement(sql);

        pstm.setString(1, ID);

        return pstm.execute();
    }

name和sex不能修改,根据ID更新数据。

update.jsp

    
"update.do?action=submit&updateID=<%=request.getAttribute("updateID")%>" method="post">
name: "text" name="name" value=<%=request.getAttribute("name")%> readonly="readonly">
sex: "text" name="sex" value=<%=request.getAttribute("sex")%> readonly="readonly">
phone: "text" name="phone_new" value=<%=request.getAttribute("phone_old")%>>
address: "text" name="address_new" value=<%=request.getAttribute("address_old")%>>
"submit" value="update">

UpdateAction.java

package action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import model.DBHelperL;

public class UpdateAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String ID = request.getParameter("updateID");
        String action = request.getParameter("action");

        DBHelperL db = new DBHelperL();

        List list = db.queryByID(ID);
        if (!list.isEmpty()) {
            request.setAttribute("updateID", ID);
            request.setAttribute("name", list.get(0));
            request.setAttribute("sex", list.get(1));
            request.setAttribute("phone_old", list.get(2));
            request.setAttribute("address_old", list.get(3));
        }

        if ("submit".equals(action)) {
            if (ID != null && ID.length() > 0) {
                String phone_new = request.getParameter("phone_new");
                String address_new = request.getParameter("address_new");
                db.updateByID(ID, phone_new, address_new);
                db.close();
                response.sendRedirect("show.do");
            }
        }

        db.close();

        return mapping.getInputForward();
    }
}

struts-config.xml

    "/update" type="action.UpdateAction" input="/pages/update.jsp">
        "success" path="/show.do">
    

Struts1 增删改查_第10张图片

中文乱码

Filter

package filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {

    String encoding = null;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

        encoding = filterConfig.getInitParameter("encoding");

        if (encoding == null || encoding.length() <= 0) {
            encoding = "UTF-8";
        }
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        request.setCharacterEncoding(encoding);
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }

}

web.xml DD中配置

    
        Set Character Encoding
        filters.SetCharacterEncodingFilter
        
            encoding
            UTF-8
        
    

    
        Set Character Encoding
        /*
    

其它问题

防止刷新-重复提交表单

response.sendRedirect("show.do");

表单验证-JavaScript

button替代submit,在JavaScript中满足条件时,调用form.submit()

"button" value="add" onclick="validate(this.form);">

JavaScript代码:

首页跳转到.do

在默认的jsp文件中,转发到指定的URL。

"show.do">

DEMO 下载链接

http://pan.baidu.com/s/1i5rX6fz

你可能感兴趣的:(Java-Web,struts,web应用,数据库,tomcat,mysql)