Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现

一、系统概述

本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息,客户端通过WAP浏览器访问WML页面。系统支持信息分类查询、关键词搜索、信息发布与管理等功能,为移动设备用户提供便捷的信息获取渠道。

二、系统架构设计

1. 技术选型

  • 前端:WML (Wireless Markup Language)
  • 后端:Java Servlet、JSP
  • 数据库:MySQL
  • 开发工具:Eclipse、Tomcat

2. 系统架构

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── wmlsystem
│   │   │           ├── controller (控制器层)
│   │   │           ├── model (模型层)
│   │   │           ├── dao (数据访问层)
│   │   │           └── utils (工具类)
│   │   ├── webapp
│   │   │   ├── WEB-INF
│   │   │   │   ├── web.xml
│   │   │   │   └── views (JSP页面)
│   │   │   └── wml (WML页面)

三、核心代码实现

1. WML页面设计





    
        

信息查询系统

分类查询
关键词搜索
管理入口

信息分类

新闻资讯
产品信息
活动通知
常见问题
返回首页

2. 数据库连接工具

// DBConnectionUtil.java
public class DBConnectionUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/wmlsystem";
    private static final String USER = "root";
    private static final String PASSWORD = "password";
    
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
    
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) rs.close();
            if (stmt != null) stmt.close();
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3. 信息管理DAO

// InfoDAO.java
public class InfoDAO {
    // 获取分类信息列表
    public List<Info> getInfoListByCategory(String category, int page, int pageSize) {
        List<Info> infoList = new ArrayList<>();
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        
        try {
            conn = DBConnectionUtil.getConnection();
            String sql = "SELECT * FROM information WHERE category = ? " +
                         "ORDER BY publish_time DESC LIMIT ? OFFSET ?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, category);
            stmt.setInt(2, pageSize);
            stmt.setInt(3, (page - 1) * pageSize);
            
            rs = stmt.executeQuery();
            
            while (rs.next()) {
                Info info = new Info();
                info.setId(rs.getInt("id"));
                info.setTitle(rs.getString("title"));
                info.setContent(rs.getString("content"));
                info.setCategory(rs.getString("category"));
                info.setPublishTime(rs.getTimestamp("publish_time"));
                infoList.add(info);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBConnectionUtil.close(conn, stmt, rs);
        }
        
        return infoList;
    }
    
    // 根据关键词搜索信息
    public List<Info> searchInfo(String keyword, int page, int pageSize) {
        List<Info> infoList = new ArrayList<>();
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        
        try {
            conn = DBConnectionUtil.getConnection();
            String sql = "SELECT * FROM information WHERE title LIKE ? OR content LIKE ? " +
                         "ORDER BY publish_time DESC LIMIT ? OFFSET ?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, "%" + keyword + "%");
            stmt.setString(2, "%" + keyword + "%");
            stmt.setInt(3, pageSize);
            stmt.setInt(4, (page - 1) * pageSize);
            
            rs = stmt.executeQuery();
            
            while (rs.next()) {
                Info info = new Info();
                info.setId(rs.getInt("id"));
                info.setTitle(rs.getString("title"));
                info.setContent(rs.getString("content"));
                info.setCategory(rs.getString("category"));
                info.setPublishTime(rs.getTimestamp("publish_time"));
                infoList.add(info);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBConnectionUtil.close(conn, stmt, rs);
        }
        
        return infoList;
    }
    
    // 发布新信息
    public int publishInfo(Info info) {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        int id = -1;
        
        try {
            conn = DBConnectionUtil.getConnection();
            String sql = "INSERT INTO information (title, content, category, publish_time) " +
                         "VALUES (?, ?, ?, NOW())";
            stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            stmt.setString(1, info.getTitle());
            stmt.setString(2, info.getContent());
            stmt.setString(3, info.getCategory());
            
            int rows = stmt.executeUpdate();
            
            if (rows > 0) {
                rs = stmt.getGeneratedKeys();
                if (rs.next()) {
                    id = rs.getInt(1);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBConnectionUtil.close(conn, stmt, rs);
        }
        
        return id;
    }
    
    // 其他方法省略...
}

4. Servlet控制器

// InfoListServlet.java
@WebServlet("/list.wml")
public class InfoListServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private InfoDAO infoDAO = new InfoDAO();
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/vnd.wap.wml;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String category = request.getParameter("category");
        int page = Integer.parseInt(request.getParameter("page"));
        int pageSize = 10;
        
        List<Info> infoList = infoDAO.getInfoListByCategory(category, page, pageSize);
        
        out.println("");
        out.println("");
        out.println("");
        out.println(" + category + "列表\">");
        out.println("

"); out.println("" + category + "列表
"); out.println("

"
); if (infoList.isEmpty()) { out.println("

暂无信息

"
); } else { out.println("

"); for (Info info : infoList) { out.println(" + info.getId() + "\">" + info.getTitle() + "
"
); } out.println("

"
); // 分页导航 out.println("

"); if (page > 1) { out.println(" + category + "&page=" + (page - 1) + "\">上一页 "); } if (infoList.size() == pageSize) { out.println(" + category + "&page=" + (page + 1) + "\">下一页"); } out.println("

"
); } out.println("

"); out.println("返回分类
"
); out.println("返回首页"); out.println("

"
); out.println("
"
); out.println(""); } } // PublishServlet.java @WebServlet("/publish.do") public class PublishServlet extends HttpServlet { private static final long serialVersionUID = 1L; private InfoDAO infoDAO = new InfoDAO(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String title = request.getParameter("title"); String content = request.getParameter("content"); String category = request.getParameter("category"); Info info = new Info(); info.setTitle(title); info.setContent(content); info.setCategory(category); int result = infoDAO.publishInfo(info); response.setContentType("text/vnd.wap.wml;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(""); out.println(""); if (result > 0) { out.println("

信息发布成功!

"
); } else { out.println("

信息发布失败!

"
); } out.println("

"); out.println("返回管理页面
"
); out.println("

"
); out.println(""); out.println(""); } }

5. 信息管理页面





    
        

标题:

分类:

内容:

发布
返回

四、系统界面设计

1. 前端WML页面设计

系统的前端使用WML语言设计,包括以下主要页面:

  • 首页:提供分类查询、关键词搜索和管理入口
  • 分类列表页:显示特定分类的信息列表
  • 信息详情页:显示信息的详细内容
  • 搜索页:提供关键词搜索功能
  • 管理页:管理员登录后可进行信息发布、编辑和删除

2. 后端管理界面

后端管理界面使用JSP和Servlet实现,包括:

  • 管理员登录页面
  • 信息发布页面
  • 信息管理页面
  • 分类管理页面

3. 界面交互逻辑

// 生成WML页面的辅助方法
private void generateWMLInfoList(PrintWriter out, List<Info> infoList, String category, int page) {
    out.println("");
    out.println("");
    out.println("");
    out.println(" + category + "列表\">");
    out.println("

"); out.println("" + category + "列表
"); out.println("

"
); if (infoList.isEmpty()) { out.println("

暂无信息

"
); } else { out.println("

"); for (Info info : infoList) { // 截断过长的标题 String shortTitle = info.getTitle(); if (shortTitle.length() > 20) { shortTitle = shortTitle.substring(0, 20) + "..."; } out.println(" + info.getId() + "\">" + shortTitle + "
"
); } out.println("

"
); // 分页导航 out.println("

"); if (page > 1) { out.println(" + category + "&page=" + (page - 1) + "\">上一页 "); } if (infoList.size() == 10) { out.println(" + category + "&page=" + (page + 1) + "\">下一页"); } out.println("

"
); } out.println("

"); out.println("返回分类
"
); out.println("返回首页"); out.println("

"
); out.println("
"
); out.println(""); }

五、系统部署与测试

1. 环境要求

  • JDK 1.8+
  • Apache Tomcat 8+
  • MySQL 5.7+
  • WAP模拟器或支持WAP的手机

2. 部署步骤

  1. 创建数据库并导入表结构
  2. 配置数据库连接信息
  3. 将项目部署到Tomcat服务器
  4. 使用WAP模拟器或手机访问系统

3. 测试用例

// InfoDAOTest.java
public class InfoDAOTest {
    private InfoDAO infoDAO = new InfoDAO();
    
    @Test
    public void testPublishInfo() {
        Info info = new Info();
        info.setTitle("测试信息");
        info.setContent("这是一条测试信息,用于测试信息发布功能。");
        info.setCategory("news");
        
        int result = infoDAO.publishInfo(info);
        assertTrue(result > 0);
    }
    
    @Test
    public void testGetInfoListByCategory() {
        List<Info> infoList = infoDAO.getInfoListByCategory("news", 1, 10);
        assertNotNull(infoList);
    }
    
    @Test
    public void testSearchInfo() {
        List<Info> infoList = infoDAO.searchInfo("测试", 1, 10);
        assertNotNull(infoList);
    }
}

六、毕业设计文档框架

1. 论文框架

  1. 引言
  2. 相关技术综述
  3. 系统需求分析
  4. 系统设计
  5. 系统实现
  6. 系统测试
  7. 总结与展望

七、总结

本系统基于Java和WML技术实现了移动设备上的信息查询与后端信息发布功能,采用B/S架构,具有良好的可扩展性和可维护性。系统支持信息的分类查询、关键词搜索和后台管理,为移动设备用户提供了便捷的信息获取渠道。通过本项目的开发,深入掌握了Java Web开发技术和WML页面设计。

你可能感兴趣的:(文末下载资源,java,课程设计,开发语言)