我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于Servlet实现技术问答网站系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于Servlet实现技术问答网站系统

这一篇博客将详细介绍一个基于Servlet的问答网站的实现,有详细的代码。

可能篇幅较长,以代码为主,有兴趣的童鞋看完可以尝试动手搭建一个属于自己的问答社区。

工具:Eclipse,数据库用到了MySQL,这次项目中未使用jsp,全部以Servlet注解的方式连接HTML和Servlet,JDK最好使用1.8,tomcat使用8.0。(注解方式为JDK1.5后的特性,最低要求1.5+,本项目使用JDK1.8)。

在这篇博客中可以学习到:

1,Servlet中关于注解的使用,本项目没有使用到传统的Servlet配置web.xml,全部使用注解的形式。

2,了解Font Awesome这一矢量图标库的使用,他基本提供了项目中所要使用到的所有图标,方便,快捷。

3,了解simditor这一富文本编辑器的使用,网站中直接嵌入富文本编辑器,再也不用为读取出来的文字格式不对发愁了。

4,关于项目中如何加入验证码,数据库查询之前先进行验证码验证。

5,关于MVC框架显示层——Velocity技术的使用。

先看一下大体项目图(由于主要做后台,前台可能略丑,大家可以自行找网站模板)

登录界面:

基于Servlet实现技术问答网站系统

注册界面:

基于Servlet实现技术问答网站系统

首页,展示了大家的提问:

基于Servlet实现技术问答网站系统

解答界面,点击别人的提问后进入解答界面,使用了富文本编辑器。

基于Servlet实现技术问答网站系统

我的解答界面,展示了我回答的历史:

基于Servlet实现技术问答网站系统

我的提问界面,展示了我提问的所有问题:

基于Servlet实现技术问答网站系统

提问界面:进入网站点击我要提问,加入当前页编辑问题:

基于Servlet实现技术问答网站系统

下面介绍主要代码(代码中加入了详细注释,所以不再做说明)

主页列表Servlet:

@WebServlet( "/list.do" ) public class ListServlet extends HttpServlet {  private static final long serialVersionUID = 810339694607399128L;  @Override  protected void service( HttpServletRequest request , HttpServletResponse response )    throws ServletException, IOException {  String question=request.getParameter("quest");  System.out.println(question);  if(StringHelper.notEmpty(question)){   final String SQL = "SELECT id , title ,content, publish_time , publish_ip , user_id FROM t_topic where title =? " ;   ResultSet rs = JdbcHelper.query( SQL,question );    // 创建一个 List 对象,用来保存一批 Topic 对象   final List<Topic> topics = new ArrayList<>();   try {    // 每循环一次,光标下移一行,如果该行有数据返回 true    while( rs.next() ){     Topic t = new Topic(); // 创建对象     t.setId( rs.getInt( 1 ) ); // 将 结果集 中的 该行数据 封装到 t 对象的 id 属性中     t.setTitle( rs.getString( 2 ) );     t.setContent(rs.getString(3));     t.setPublishTime( rs.getTimestamp( 4 ));     t.setPublishIp( rs.getString( 5 ) );     User u = new User(); // 创建 一个 User 对象     u.setId( rs.getInt( 6 ) ); // 将 t_topic 表中的 user_id 放入到 User 对象的 id 属性中     t.setUser( u ); // 将 User 对象 设置到 Topic 对象上          topics.add( t );     }    } catch (SQLException e) {     e.printStackTrace();    }    JdbcHelper.release( rs ); // 关闭 结果集,释放相关的资源        //for( int i = 0 ; i < topics.size() ; i++ ){    for( int i = 0 , len = topics.size() ; i < len ; i++ ){     Topic t = topics.get( i ) ; // 获得 题目     User u = t.getUser(); // 获得当前题目的User对象 ( 该对象中只有 id 没有其它数据 )     // 根据 用户对象的 id 来查询 用户的信息     String querySQL = "SELECT id , username , password FROM t_user WHERE id = ? " ;     ResultSet userRs = JdbcHelper.query( querySQL , u.getId() );     try {      if( userRs.next() ) { // 如果查询到用户信息       // 注意,这里应该使用 userRs       u.setUsername( userRs.getString( 2 ) ); // 将 username 列的值设置到 用户对象的 username 属性中       u.setPassword( userRs.getString( 3 )); // 将 password 列的值设置到 用户对象的 password 属性中      }     } catch (SQLException e) {      e.printStackTrace();     }     JdbcHelper.release( userRs ); // 关闭 结果集,释放相关的资源    }    ServletContext application = request.getServletContext();        application.setAttribute( "topics" , topics );    System.out.println( "问题列表: " + topics );    // 去 list.html 页面    response.sendRedirect( request.getContextPath() + "/list.html");   }else{        final String SQL = "SELECT id , title ,content ,publish_time , publish_ip , user_id FROM t_topic ORDER BY publish_time DESC" ;    ResultSet rs = JdbcHelper.query( SQL );    // 创建一个 List 对象,用来保存一批 Topic 对象    final List<Topic> topics = new ArrayList<>();    try {     // 每循环一次,光标下移一行,如果该行有数据返回 true     while( rs.next() ){      Topic t = new Topic(); // 创建对象      t.setId( rs.getInt( 1 ) ); // 将 结果集 中的 该行数据 封装到 t 对象的 id 属性中      t.setTitle( rs.getString( 2 ) );      t.setContent(rs.getString(3));      t.setPublishTime( rs.getTimestamp( 4 ));      t.setPublishIp( rs.getString( 5 ) );      User u = new User(); // 创建 一个 User 对象      u.setId( rs.getInt( 6) ); // 将 t_topic 表中的 user_id 放入到 User 对象的 id 属性中      t.setUser( u ); // 将 User 对象 设置到 Topic 对象上            topics.add( t );     }    } catch (SQLException e) {     e.printStackTrace();    }    JdbcHelper.release( rs ); // 关闭 结果集,释放相关的资源        //for( int i = 0 ; i < topics.size() ; i++ ){    for( int i = 0 , len = topics.size() ; i < len ; i++ ){     Topic t = topics.get( i ) ; // 获得 题目     User u = t.getUser(); // 获得当前题目的User对象 ( 该对象中只有 id 没有其它数据 )     // 根据 用户对象的 id 来查询 用户的信息     String querySQL = "SELECT id , username , password FROM t_user WHERE id = ? " ;     ResultSet userRs = JdbcHelper.query( querySQL , u.getId() );     try {      if( userRs.next() ) { // 如果查询到用户信息       // 注意,这里应该使用 userRs       u.setUsername( userRs.getString( 2 ) ); // 将 username 列的值设置到 用户对象的 username 属性中       u.setPassword( userRs.getString( 3 )); // 将 password 列的值设置到 用户对象的 password 属性中      }     } catch (SQLException e) {      e.printStackTrace();     }     JdbcHelper.release( userRs ); // 关闭 结果集,释放相关的资源    }    ServletContext application = request.getServletContext();        application.setAttribute( "topics" , topics );    System.out.println( "问题列表: " + topics );    // 去 list.html 页面    response.sendRedirect( request.getContextPath() + "/list.html");  }  } } 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于Servlet实现技术问答网站系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于Servlet实现技术问答网站系统

这一篇博客将详细介绍一个基于Servlet的问答网站的实现,有详细的代码。可能篇幅较长,以代码为主,有兴趣的童鞋看完可以尝试动手搭建一个属于自己的问答社区。工具:Eclipse,数据库用到了MySQL,这次项目中未使用jsp,全部以Serv
2023-05-31

基于Java+Servlet+Mysql的人才招聘网站的设计与实现(附源码 调试 文档)

基于Servlet人才招聘网站的设计与实现 一、引言二、国内外研究现状三、系统需求分析四、系统设计五、系统实现六、系统测试与评估七、结论与展望八、界面展示九、源码获取 摘要 本文介绍了一种基于Servlet人才招聘网站的设计与
基于Java+Servlet+Mysql的人才招聘网站的设计与实现(附源码 调试 文档)
2023-12-23

基于Java怎么实现简易的局域网对话系统

基于Java怎么实现简易的局域网对话系统,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先说一下写的确实比较一般,别喷为什么呢,疫情原因,学校提前两周期末考试,时间也不太充足,将
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录