By GokiSoft.com|
19:24 07/09/2020|
JSP Servlet
[Share Code] Source Code - Quản lý tin tức - JSP/Servlet
create table news (
id int primary key auto_increment,
title varchar(100) not null,
thumbnail varchar(200),
content text,
created_at datetime,
updated_at datetime
)
Chuc Add
- Servlet: AddServlet
- Route: /add
- JSP: add.jsp
#web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>AddServlet</servlet-name>
<servlet-class>servlet.AddServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ListServlet</servlet-name>
<servlet-class>servlet.ListServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ListServlet</servlet-name>
<url-pattern>/list</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
#add.jsp
<%--
Document : add
Created on : Sep 7, 2020, 6:56:29 PM
Author : teacher
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Add News</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="text-center">Add News</h2>
</div>
<div class="panel-body">
<form method="post">
<div class="form-group">
<label for="usr">Title:</label>
<input type="id" value="${news.id}" class="form-control" id="usr" name="id" style="display: none"/>
<input required="true" type="text" value="${news.title}" class="form-control" id="usr" name="title"/>
</div>
<div class="form-group">
<label for="thumbnail">Thumbnail: </label>
<input required="true" type="text" class="form-control" value="${news.thumbnail}" id="thumbnail" name="thumbnail"/>
</div>
<div class="form-group">
<label for="content">Content: </label>
<textarea class="form-control" id="content" name="content">${news.content}</textarea>
</div>
<button class="btn btn-success">Register</button>
</form>
</div>
</div>
</div>
</body>
</html>
#list.jsp
<%--
Document : add
Created on : Sep 7, 2020, 6:56:29 PM
Author : teacher
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Add News</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="text-center">List News</h2>
</div>
<div class="panel-body">
<table class="table table-bordered">
<thead>
<tr>
<th>STT</th>
<th>Hinh Anh</th>
<th>Tieu De</th>
<th>Noi Dung</th>
<th>Ngay Tao</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<c:forEach items="${newsList}" var="item" varStatus="loop">
<tr>
<td>${loop.index + 1}</td>
<td><img src="${item.thumbnail}" style="width: 100px"/></td>
<td>${item.title}</td>
<td>${item.content}</td>
<td>${item.createdAt}</td>
<td>
<form method="get" action="add">
<input type="text" value="${item.id}" name="id" style="display: none"/>
<button class="btn btn-warning">Edit</button>
</form>
</td>
<td>
<form method="post">
<input type="text" value="${item.id}" name="id" style="display: none"/>
<button class="btn btn-danger" name="action" value="delete">Delete</button>
</form>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
#persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="BT1817PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>entities.News</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/quanlytintuc?serverTimezone=UTC"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value=""/>
</properties>
</persistence-unit>
</persistence>
#News.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package entities;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author teacher
*/
@Entity
@Table(name = "news")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "News.findAll", query = "SELECT n FROM News n")
, @NamedQuery(name = "News.findById", query = "SELECT n FROM News n WHERE n.id = :id")
, @NamedQuery(name = "News.findByTitle", query = "SELECT n FROM News n WHERE n.title = :title")
, @NamedQuery(name = "News.findByThumbnail", query = "SELECT n FROM News n WHERE n.thumbnail = :thumbnail")
, @NamedQuery(name = "News.findByCreatedAt", query = "SELECT n FROM News n WHERE n.createdAt = :createdAt")
, @NamedQuery(name = "News.findByUpdatedAt", query = "SELECT n FROM News n WHERE n.updatedAt = :updatedAt")})
public class News implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "title")
private String title;
@Size(max = 200)
@Column(name = "thumbnail")
private String thumbnail;
@Lob
@Size(max = 65535)
@Column(name = "content")
private String content;
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
public News() {
}
public News(Integer id) {
this.id = id;
}
public News(Integer id, String title) {
this.id = id;
this.title = title;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getThumbnail() {
return thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof News)) {
return false;
}
News other = (News) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entities.News[ id=" + id + " ]";
}
}
#AddServlet.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package servlet;
import entities.News;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author teacher
*/
public class AddServlet extends HttpServlet {
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
News news = null;
if(request.getParameter("id") != null) {
int id = Integer.parseInt(request.getParameter("id"));
//Insert into database
EntityManagerFactory factory = Persistence.createEntityManagerFactory("BT1817PU");
EntityManager em = factory.createEntityManager();
news = em.find(News.class, id);
} else {
news = new News();
}
request.setAttribute("news", news);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/add.jsp");
dispatcher.forward(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String content = request.getParameter("content");
String title = request.getParameter("title");
String thumbnail = request.getParameter("thumbnail");
int id = Integer.parseInt(request.getParameter("id"));
//Insert into database
EntityManagerFactory factory = Persistence.createEntityManagerFactory("BT1817PU");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
if(id > 0) {
News n = em.find(News.class, id);
n.setContent(content);
n.setTitle(title);
n.setThumbnail(thumbnail);
n.setUpdatedAt(new Date());
} else {
News news = new News();
news.setContent(content);
news.setThumbnail(thumbnail);
news.setTitle(title);
news.setCreatedAt(new Date());
news.setUpdatedAt(new Date());
em.persist(news);
}
em.getTransaction().commit();
response.sendRedirect("list");
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
#ListServlet.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package servlet;
import entities.News;
import java.io.IOException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author teacher
*/
public class ListServlet extends HttpServlet {
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Insert into database
EntityManagerFactory factory = Persistence.createEntityManagerFactory("BT1817PU");
EntityManager em = factory.createEntityManager();
Query q = em.createNamedQuery("News.findAll", News.class);
List<News> list = q.getResultList();
request.setAttribute("newsList", list);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/list.jsp");
dispatcher.forward(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
int id = Integer.parseInt(request.getParameter("id"));
if(action.equalsIgnoreCase("delete") && id > 0) {
//Insert into database
EntityManagerFactory factory = Persistence.createEntityManagerFactory("BT1817PU");
EntityManager em = factory.createEntityManager();
News news = em.find(News.class, id);
if(news != null) {
em.getTransaction().begin();
em.remove(news);
em.getTransaction().commit();
}
}
response.sendRedirect("list");
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)