JSP綜合練習
模擬數據庫
package com.wu.db;
import com.wu.pojo.News;
import java.util.ArrayList;
import java.util.List;
public class NewsDB {
public static List<News> list = new ArrayList<News>();
static {
list.add(new News("7.16","學習了JSP的使用以及源碼分析"));
list.add(new News("7.14","學習了Servlet,簡單的JSP的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
list.add(new News("7.13","學習了Tomcat,Servlet的使用"));
}
}
實體類
package com.wu.pojo;
//實體類,一般放在pojo包下,【 or entity or JavaBeans】
//實體類,只有屬性,一般用來映射數據庫中的字段 ( O R M )
//私有屬性 , 無參構造,有參構造
//get/set方法
//爲了方便程序打印,建議加上toString();
public class News {
private String data;
private String content;
public News() {
}
public News(String data, String content) {
this.data = data;
this.content = content;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "News{" +
"data='" + data + '\'' +
", content='" + content + '\'' +
'}';
}
}
dao層
package com.wu.dao;
//dao包一般用來存放操作數據庫的對象類;
import com.wu.pojo.News;
import java.util.List;
public interface NewsDao {
//獲得所有的新聞
public List<News> getAllNews();
}
package com.wu.dao;
import com.wu.db.NewsDB;
import com.wu.pojo.News;
import java.util.List;
//NewsDao的實現類
public class NewsDaoImpl implements NewsDao {
@Override
public List<News> getAllNews() {
List<News> list = NewsDB.list;
return list;
}
}
service層
package com.wu.service;
import com.wu.pojo.News;
import java.util.List;
//service一般存放業務類
public interface NewsService {
//獲得所有的新聞
public List<News> getAllNews();
}
package com.wu.service;
import com.wu.dao.NewsDao;
import comwu.dao.NewsDaoImpl;
import com.wu.pojo.News;
import java.util.List;
public class NewsServiceImpl implements NewsService {
//從dao層中取出相應的操作數據庫的方法
NewsDao newsDao = new NewsDaoImpl();
@Override
public List<News> getAllNews() {
return newsDao.getAllNews();
}
}
servlet
package com.wu.servlet;
import com.wu.pojo.News;
import com.wu.service.NewsService;
import com.wu.service.NewsServiceImpl;
import org.apache.catalina.Session;
import org.junit.Test;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
public class NewsServlet extends HttpServlet {
NewsService newsService = new NewsServiceImpl();
@Test
public void test(){
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//寫代碼讀取數據存到某個地方,讓前端讀取;
List<News> allNews = newsService.getAllNews();//從業務層去獲得數據中的全部新聞
int i = 1;
for (News allNew : allNews) { //遍歷獲得每一個新聞
String data = allNew.getData();
String content = allNew.getContent();
//四大作用域
// page(不用它,代表當前頁面)
// request(一次請求中有效): 登錄註冊
// session (一次會話中存在) : 購物車
// application:本質就是Context (全局,所有會話共享) : 廣告
//這四個作用域用來存放一些內容或者對象
HttpSession session = req.getSession();
session.setAttribute("data"+i,data);
session.setAttribute("content"+i,content);
System.out.println(session.getAttribute("data"+i));
System.out.println(session.getAttribute("content"+i));
i++;//自增
}
//數據都讀取出來了,給你放到session中了,該去訪問頁面了
resp.sendRedirect("index.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?><servlet>
<servlet-name>newsServlet</servlet-name>
<servlet-class>com.wu.servlet.NewsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>newsServlet</servlet-name>
<url-pattern>/news.do</url-pattern>
</servlet-mapping>
index.jsp
<%@ page import="com.wu.db.NewsDB" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首頁</title>
<%--引入css--%>
<link rel="stylesheet" href="${pageContext.request.contextPath}/statics/layui/css/layui.css">
<%--引入靜態資源文件必須帶上項目路徑位置--%>
<Script src="${pageContext.request.contextPath}/statics/layui/layui.js"></Script>
</head>
<body>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend>常規時間線</legend>
</fieldset>
<ul class="layui-timeline">
<%
for (int i = 1; i <= NewsDB.list.size(); i++) {
%>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">
<%=request.getSession().getAttribute("data"+i)%>
<%--${sessionScope.data1}--%>
</h3>
<p>
<%--${sessionScope.content1}--%>
<%=request.getSession().getAttribute("content"+i)%>
</p>
</div>
</li>
<%
}
%>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">過去</div>
</div>
</li>
</ul>
</body>
</html>