javaweb 新闻发布系统

java新闻发布系统

该博客只是记录学习过程中的思路,页面较为简陋,请大佬包涵,若有想法,请私聊,不喜勿喷!!!
IDEA 构建一个最简单的JavaWeb项目,引用链接如下:

https://zhuanlan.zhihu.com/p/333010524

DbHandle.java文件

数据库连接、查询功能、增删改查、数据库数据转换为List

package com.example.demo_news;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DbHandle {

    // 数据库连接对象,若对象为null表示连接失败
    Connection conn=null;

   //  执行sql语句的对象
    Statement st=null;

    // 存放查询结果的对象
    ResultSet rs=null;

    //  数据库连接(mysql)
    public void getConnection(){
    	// 数据库驱动
        final String DRIVERNAME = "com.mysql.cj.jdbc.Driver";
        // 设置编码,放置中文乱码,设置时区为UTC
        final String URL =
                "jdbc:mysql://localhost:3306/demo_news?serverTimezone=UTC&characterEncoding=utf8";
         // 数据库的账号和密码
        final String LOGIN = "root";
        final String PASSWORD = "root";
        try {
            // 第一步:加载驱动程序
            Class.forName(DRIVERNAME);
            // 第二步:创建一个数据库连接
            conn=DriverManager.getConnection(URL,LOGIN,PASSWORD);
        }catch(Exception e){
            System.out.println("执行getConnection()方法出错:");
            e.printStackTrace();
        }
    }

    // 数据库查询
    public ResultSet executeQuery(String sql){
        try{
            if(conn==null){
                getConnection();
            }
            if(st==null)
            {
                st=conn.createStatement();
            }
            rs=st.executeQuery(sql);
        }catch(Exception e){
            System.out.println("执行executeQuery(String sql)方法出错:"+sql);
            e.printStackTrace();
        }
        return rs;
    }


    // 数据转换,ResultSet转换为List
    public List getResult(ResultSet rs) throws Exception{
        List r=new ArrayList<>();
        ResultSetMetaData metaData = rs.getMetaData();
        while (rs.next()){
            Map temp=new HashMap();
            for (int i=1;i<=metaData.getColumnCount();i++){
                temp.put(metaData.getColumnName(i),rs.getObject(i));

            }
            r.add(temp);
        }
        return r;
    }

    // 数据库增加/删除/修改
    public int executeUpdate(String sql){
        int ret;
        try{
            if(conn==null){
                getConnection();
            }
            if(st==null)
            {
                st=conn.createStatement();
            }
            ret=st.executeUpdate(sql);
        }catch(Exception e){
            System.out.println("执行executeUpdate(sql)方法出错:"+sql);
            e.printStackTrace();
            ret= -1;
        }

        return ret;
    }

    // 数据库关闭
    public void close(){
        try {
            if (rs!=null){
                rs.close();
            }
            if (st!=null){
                st.close();
            }
            if (conn!=null){
                conn.close();
            }}
        catch(Exception e){
            System.out.println("执行close()方法出错:");
            e.printStackTrace();
        }
    }
}

另一种DbHandle写法

package com.example.demo3.util;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Dbutil {
    private Connection connection;
    private PreparedStatement statement;

    // 加载驱动
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    private void initConnection() throws SQLException {
        if (this.connection == null){
            String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=GMT%2B8&characterEncoding=utf8";
            this.connection = DriverManager.getConnection(url,"root", "root");
        }
    }

    public Dbutil(String sql) throws SQLException {
        initConnection();
        this.statement = this.connection.prepareStatement(sql);
    }

    public int executeUpdate(ArrayList<Object> args) throws SQLException {
        for (int i = 0; i < args.size(); i++) {
            statement.setObject(i+1, args.get(i));
        }

        return statement.executeUpdate();
    }

    public List<Map<Object, Object>> executeQuery(ArrayList<Object> args) throws SQLException {
        for (int i = 0; i < args.size(); i++) {
            statement.setObject(i+1, args.get(i));
        }

        ResultSet resultSet;
        resultSet = statement.executeQuery();

        List<Map<Object, Object>> ret_ary = new ArrayList<>();
        ResultSetMetaData meta = resultSet.getMetaData();

        while (resultSet.next()){
            Map<Object, Object> temp = new HashMap<>();
            for (int i = 1; i < meta.getColumnCount() + 1; i++) {
                String key = meta.getColumnName(i);
                Object val = resultSet.getObject(i);
                temp.put(key, val);
            }
            ret_ary.add(temp);
        }
        return ret_ary;
    }

    public void close(){
            try{
                this.statement.close();
                this.connection.close();
            }catch (NullPointerException | SQLException exception){
                exception.printStackTrace();
            }finally {
                this.statement = null;
                this.connection = null;
            }
    }

    public boolean isClosed() throws SQLException{
        return this.connection == null || this.connection.isClosed();
    }

    public boolean isValid() throws SQLException {
        return this.connection == null || this.connection.isValid(3);
    }
}

新闻列表展示,未使用Servlet处理数据,在jsp文件处理,并展示

<%@ page import="com.example.demo_news.DbHandle" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.ResultSetMetaData" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>新闻发布系统</title>
</head>
<body>

<jsp:include page="base.jsp"></jsp:include>

<div>
    <%-- 连接数据库,查询数据,转换类型   --%>
    <%
    	// 设置编码
        request.setCharacterEncoding("UTF-8");
		
        DbHandle dbh=new DbHandle();

        String sql = "select * from news";
        // 连接数据库,并运行sql语句
        ResultSet rs = dbh.executeQuery(sql);
		// 数据转换
        List result = dbh.getResult(rs);

    %>

    <table border="1">
        <tr>
            <td>id</td>
            <td>作者</td>
            <td>标题</td>
            <td>修改时间</td>
        </tr>
        <%
            // 获取数据
            for (int i=0;i<result.size();i++){
                Map news = (Map) result.get(i);
                int id = (int)news.get("id");
                String author = (String) news.get("authorId");
                String title = (String) news.get("title");
                String last_update_time = (String) news.get("last_update_time").toString();

        %>

        <tr>
            <td><%=id%></td>
            <td><%=author%></td>
            <td><%=title%></td>
            <td><%=last_update_time%></td>
            <td>
                <a href="new_detail.jsp?title=<%=title%>">查看</a>
                <a href="news_modify.jsp?id=<%=id%>">修改</a>
                <a href="news_delete.jsp?id=<%=id%>">删除</a>
            </td>
        </tr>

        <%}%>

    </table>
</div>

</body>
</html>

使用Servlet处理登录、注册、数据库的增、删、改。

登录页面

login.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/6/11
  Time: 10:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<html>
<head>
    <title>登录</title>
</head>
<body>

<div style="height: 50px;width: 200px">
    <a href="login.jsp">登录</a>
    <a href="regist.jsp">注册</a>
</div>

<FORM action="lgServlet" method= "post" >
    <TABLE>
        <tr>
            <td>用户名:</td>
            <td><INPUT type="text" name="username" ></td>
        </tr>
        <tr>
            <td>密    码:</td>
            <td><INPUT type="password" name="password" ></td>
        </tr>
        <tr>
            <td><INPUT TYPE="submit" value="提交" name="submit"></td>
            <td><INPUT TYPE="reset"  value="重置" name="reset"></td>
        </tr>
    </TABLE>
</FORM>
</body>
</html>

web.xml路由注册

    <!--  登录  -->
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.example.demo_news.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/lgServlet</url-pattern>
    </servlet-mapping>

    <!-- 注册 -->

LoginServlet.java
针对表单提交数据,负责页面跳转

package com.example.demo_news;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public LoginServlet() {
        super();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try{
            // 实例化
            Login Login=new Login();
            response.setCharacterEncoding("UTF-8");

            // 登录验证
            if(Login.execute(request)){
                response.sendRedirect("index.jsp");
            }else{
                response.sendRedirect("login.jsp");
            }
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("执行出错了");
        }
    }
}

Login.java
负责逻辑结构,登录验证,如果该条数据存在于数据库,则返回true

package com.example.demo_news;

import java.sql.ResultSet;
import javax.servlet.http.HttpServletRequest;
import com.example.demo_news.DbHandle;

public class Login {
    private String username;
    private String password;

    public boolean execute(HttpServletRequest request){

        try {
            request.setCharacterEncoding("UTF-8");
            username=request.getParameter("username");
            password=request.getParameter("password");
            DbHandle dbh=new DbHandle();

            // 登录验证
            String sql="select * from userinfo where username='"+
                    username +"' and password = '" + password + "'";
            ResultSet rs=dbh.executeQuery(sql);

            if(rs.next()){
                return true;
            }else{
                return false;
            }

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}


  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野人秋桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值