Java EE课程大作业 JavaBean + Servlet+jsp+MySQL实现留言板

一 序言

JavaEE我也是第一次接触,课堂学习想必大家都知道什么情况,我就不说了,基本上都是靠自学,本次大作业,作者也是面向搜索引擎编程加上个人的学习经验写出来的,所以部分代码可能与网上某答主有相似的地方,若有侵权请立即联系作者,马上删除相关代码。

由于篇幅原因,以下提供的代码均为部分代码,如若需要导包,IDE会提示,按照IDE提示添加即可。

二 项目结构

我的大作业取名为家庭留言板,采用了Java EE传统的MVC模式,以下是项目结构
在这里插入图片描述

三 环境

IDE:
作者本身不是学Java web开发出身的,所以为了应对考核,就选择了《Java EE编程技术(第二版)》中提到的Netbeans作为集成开发环境,该软件包含了丰富的功能,还自带tomcat,可以说非常棒了

Mysql
用的8.0.17

JDK
1.8

四 代码

jsp主要代码–View层

login.jsp
登录界面:

以下代码是为了保持状态添加的session判断语句(看个人需要,添加到jsp的代码中)

   <%
    if((String)session.getAttribute("username")!=null)
        response.sendRedirect("message.jsp");
     %>

以下是登录的表单

 <form action="LoginServlet" method="post">
        <table cellpadding="10px" style="border-style:none;">
            <tr><th></th>                     
                <th></th></tr>    
            
            <tr><td>用户名:</td>
                <td><input type="text" name="username" value=""></td></tr>  
            
            <tr><td>密码:</td>
            <td><input type="password" name="password" value=""></td></tr>
            <tr><td><input type="submit" value="登录"></td></tr>
        </table>
      
    </form>

message.jsp
这里是留言板主要功能界面,包含了留言、删除留言的实现
以下代码是留言板的展示、删除的页面功能代码

  <table cellpadding="10px" style="border-style:none;">
                    <caption><h2>欢迎使用家庭留言板</h2></caption>
                    <tr><th>留言人</th>                     
                        <th>留言标题</th>
                        <th>留言时间</th>
                        <th>留言内容</th>
                        <th>操作</th></tr>
  		<%
  			List<Message> msgs=(List)session.getAttribute("msgs");
                       
  			if(msgs!=null){
  				Iterator iter=msgs.iterator();
  				while(iter.hasNext()){
                                    Message msg=(Message)iter.next();
                                    String nickname=new UserDao().selectUserByUsername(msg.getUsername()).getNickname();
                                    int age=new UserDao().selectUserByUsername(msg.getUsername()).getAge();
  		%>
                    <tr style="height:30px;"><td><a href="#" style="text-decoration:none;" title="<%=nickname%>   年龄:<%=age%>"><%= msg.getUsername() %></a></td>
                            <td><%= msg.getTitle() %></td>
                            <td><%= msg.getDatetimestamp()%></td>                         
                            <td><%= msg.getMessage() %></td>
                            <td>
                                <% if(msg.getUsername().equals((String)session.getAttribute("username"))){%>
                                <a href="DeleteMessageServlet?datetimestamp=<%= msg.getDatetimestamp() %>">删除</a>
                            <%
                          ; }
                            %>
                            </td>
                        </tr>
  		<% 
                           
  			}
  			}
  		 %>
  		</table>

以下是提交留言表单

<form action="MessageServlet" method="post">
            <table border="1">
            <caption>填写留言信息</caption>
            <tr><td>留言标题</td>
                    <td><input type="text" name="title"/></td></tr>
            <tr><td>留言内容</td>
                    <td><textarea name="message" rows="5" cols="35"></textarea></td>
            </tr>
            </table>
  		<input type="submit" value="提 交"/>
  		<input type="reset" value="清 空"/>
  	</form>

Dao部分

messageDao.java
与数据库交互的代码,这里只贴了Message的,但功能齐全

public class MessageDao {
  
     public List<Message> getAllMessage(){  
            List<Message> list = new ArrayList<Message>();  
            Connection conn = DbHelper.getConnection();
            String sql  = "select * from message";  
            try {
                PreparedStatement pst = conn.prepareStatement(sql);
                ResultSet rst = pst.executeQuery();
                while (rst.next()) {
                    Message userMessage = new Message();
                    userMessage.setTitle(rst.getString("title"));
                    userMessage.setUsername(rst.getString("username"));
                     userMessage.setMessage(rst.getString("message"));
                    userMessage.setDatetimestamp(rst.getString("datetimestamp"));
                    list.add(userMessage);
                }
                rst.close();  
                pst.close();  
               
                
            } catch (SQLException e) {
                System.out.println(e);
            }
              return list;
        }
 
        public boolean addMessage(Message message){ 
            String sql = "INSERT INTO message(message,username,title,datetimestamp) VALUES (?,?,?,?)";  
            Connection conn = DbHelper.getConnection();
            try {
                PreparedStatement pst = conn.prepareStatement(sql);
                pst.setString(1, message.getMessage());
                pst.setString(2, message.getUsername());
                pst.setString(3, message.getTitle());
                pst.setString(4, message.getDatetimestamp());
                int count = pst.executeUpdate();
                pst.close();
                
                return count>0; 
            } catch (SQLException e) {
                System.out.println(e);
            }
            return false;
        }
 
        public boolean deleteMessage(String username,String datetimestamp){  
            String sql = "delete from message where username = ? and datetimestamp=?"; 
            Connection conn = DbHelper.getConnection();
            try {
                PreparedStatement pst = conn.prepareStatement(sql);
                pst.setString(1, username);
                pst.setString(2, datetimestamp);
                int count = pst.executeUpdate();
                pst.close();
                return count>0;  
            } catch (SQLException e) {
                System.out.println(e);
            }
            return false;
        }
     
        public List<Message> selectMessagesByUsername(String username ){ 
              List<Message> list = new ArrayList<Message>();  
            Connection conn = DbHelper.getConnection();
            String sql  = "select * from message where username = "+username;
            Message message = null;
            try {
                PreparedStatement pst = conn.prepareStatement(sql);
                ResultSet rst = pst.executeQuery();
                while (rst.next()) {
                    message = new Message();
                    message.setUsername(rst.getString("username"));
                    message.setTitle(rst.getString("title"));
                    message.setMessage(rst.getString("message"));
                    message.setDatetimestamp(rst.getString("datetimestamp"));
                }
                rst.close();
                pst.close();
            } catch (SQLException e) {
             System.out.println(e);
            }
            return list;  
        }
        public static void main(String[] args) { //测试
//            List<Message> list;
//            MessageDao dao =new MessageDao();
//         list = dao.getAllMessage();
//            for(Message m:list)
//            System.out.println(m.getUsername());
//            Message message=new Message();
//            message.setMessage("123");
//             Date date = new Date();
//                SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                String datetime = dateFormat.format(date);
//            message.setDatetimestamp(datetime);
//            message.setTitle("222");
//            message.setUsername("123");
//          System.out.println(new MessageDao().addMessage(message));
    }
}

Helper

连接数据库的帮助代码,主要用于连接数据库

public class DbHelper {

    private static Connection conn = null;
    private DbHelper(){}
    
    public static Connection getConnection(){
        if(null == conn){
            try {
                
                Class.forName("com.mysql.cj.jdbc.Driver");
                conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/这里填数据库名?	useUnicode=true&characterEncoding=utf-8", "root", "这里填密码");
            } catch (Exception e) {
            System.out.println(e);
            }
        }
        return conn;
    }
     
    public static void main(String[] args) {  
    }
}

javabean --Model

这里是model层的实体对象,这里只贴了Message的代码,其他的,请看官自行根据需要编写

public class Message {
   
    private String username;
    private String title;
    private String message;
    private String datetimestamp;
    
  
    public String getUsername(){
        return username;
    }
    
    public void setUsername(String username){
        this.username=username;
    }
    
    public String getTitle(){
        return title;
    }
    public void setTitle(String title){
        this.title=title;
    }
    
    public String getMessage(){
        return message;
    }
    public void setMessage(String message){
        this.message=message;
    }
    
     public String getDatetimestamp(){
        return datetimestamp;
    }
   
    public void setDatetimestamp(String datetime){
        this.datetimestamp=datetime;
    }
    public Message(){}
}

Servlet部分 --Controller

loginServlet.java

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
                request.setCharacterEncoding("utf-8");      
		response.setContentType("utf-8");          
		      
                HttpSession session=request.getSession();
                String username=request.getParameter("username").toString();
                String password=request.getParameter("password").toString();
                String login=(String)session.getAttribute("username");
		if(new UserDao().checkLogin(username,password)){
                    if(login==null)
                        session.setAttribute("username",username);
                    List<Message> msgs=new MessageDao().getAllMessage();
                    session.setAttribute("msgs", msgs);
                    response.sendRedirect("message.jsp");  
                    }	
                else
                    response.sendRedirect("login.jsp");  
    }

messageServlet.java

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                
//                String title=new String(request.getParameter("title").getBytes("iso-8859-1"),"utf-8");            
//                String message=new String(request.getParameter("message").getBytes("iso-8859-1"),"utf-8");
                String title=request.getParameter("title");
                String message=request.getParameter("message");
                
                HttpSession session=request.getSession();
                String username= (String)session.getAttribute("username");
                
                Message msg=new Message();                
                Date date = new Date();
                SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String datetime = dateFormat.format(date);
                
                msg.setUsername(username);
                msg.setDatetimestamp(datetime);
                msg.setTitle(title);
                msg.setMessage(message);
                if(new MessageDao().addMessage(msg)){
                //添加留言到session
                    List<Message> msgs=new MessageDao().getAllMessage();
                    session.setAttribute("msgs", msgs);
                    response.sendRedirect("message.jsp");
                }
                else
                    response.sendRedirect("login.jsp");
                

}

五 实验结果

在这里插入图片描述

在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值