Javawbe的实战案例
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
目錄
文章目錄
一、maven的一些注意事項?
?二、servlet
1.構建一個空maven項目,刪掉src文件,重新導入依賴,建立一個新的module
1.1? 子類
?1.2 父類
?二、子類的web.xml配置最新的版本自帶的有點舊
?2.1 定義一個java類
2.1、編寫servlet映射
2.2 /*IDEA的Tomcat出現亂碼問題解決如下*/?編輯
2.3?
?2.4 Servlet
2.5mapping 問題?
?*.bug問題
Element ‘web-app‘ cannot have character [children], because the type‘s content type is element-only.
2.6? servletcontext對象
2.7讀取資源類
properties
?2.8HttpServletsponse
?2.9? 實現重定向
?3.0 HttpServletRequest (重要)
一、maven的一些注意事項?
1.配置問題?
1.Tomcar閃退
??
2.每次重復配置maven?
?
?3.配置好的pom.xml字段含義
?4.maven下main文件下的改變
5. Tomcat官方例子源代碼
?
?6.導入官方依賴
(1)去官網找到需要的依賴
(2) 放到</dependencies> </dependencies>里,再刷新下
?二、servlet
(1).是sun公司開發的動態web技術
(2).servlet是sun公司下的一個API接口,實現的話只要Java類部署到web中、編寫一個類,實現接口
把實現的servlet的Java程序叫servlet
1.構建一個空maven項目,刪掉src文件,重新導入依賴,建立一個新的module
1.1? 子類
//子類有的的依賴 <parent><artifactId>untitled2-maven1</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent>?1.2 父類
<modules><module>selvert01</module></modules>?二、子類的web.xml配置最新的版本自帶的有點舊
<?xml version="1.0" encoding="UTF-8"?> <web-app 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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"> </web-app>?2.1 定義一個java類
package com.bilibili.servlet;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;public class selverts extends HttpServlet {//由于get或者post只是請求實現的不同的方式,可以互相調用@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.print("hello,,serverr");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }2.1、編寫servlet映射
因為編寫的Java程序是要通過瀏覽器訪問的,而瀏覽器是要連接web服務器,所以需要注冊servlet
給一個訪問路徑。
<servlet><servlet-name>hellotya</servlet-name><servlet-class>com.bilibili.servlet.selverts</servlet-class> </servlet> <!--selvert請求--><servlet-mapping><servlet-name>hellotya</servlet-name><url-pattern>hellotya</url-pattern></servlet-mapping>2.2 /*IDEA的Tomcat出現亂碼問題解決如下*/
2.3? </注冊名>
?
?2.4 Servlet
2.5mapping 問題?
1.一個servlet可以指定一條映射路徑?
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>2.一個servlet可以指定多條映射路徑
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello1</url-pattern></servlet-mapping><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello2</url-pattern></servlet-mapping>3.一個servlet可以指定通用映射路徑??
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello2/*</url-pattern></servlet-mapping>4.一個servlet可以指定默認映射路徑(首頁會被擠掉)
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/*</url-pattern></servlet-mapping>5.也可以自定義
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/*.do</url-pattern></servlet-mapping>6.優先級
指定好的映射路徑級別最高,如果沒有舊走默認路徑
<servlet><servlet-name>mxx</servlet-name><servlet-class>com.bilibili.servlet.ErrorServlet</servlet-class></servlet><servlet-mapping><servlet-name>mxx</servlet-name><url-pattern>/mxx</url-pattern></servlet-mapping>?*.bug問題
Element ‘web-app‘ cannot have character [children], because the type‘s content type is element-only.
看代碼注釋有沒有規定符號
2.6? servletcontext對象
我們可以把ServletContext當成一個公用的空間,可以被所有的客戶訪問,如上圖,A、B、C三個客戶端都可以訪問。WEB容器在啟動時,它會為每個Web應用程序都創建一個對應的ServletContext,它代表當前Web應用,并且它被所有客戶端共享。
2.6.1
servlet1方法
package com.bilibili;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class mxx extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String usesrname = "元首";context.setAttribute("usernaem",usesrname);//System.out.println("人事如潮人如水,不甚今朝一場醉");}}?2.6.2?servlet2方法
package com.bilibili;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class getmxx extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = this.getServletContext();String username = (String)context.getAttribute("username");resp.setContentType("text/html");resp.setCharacterEncoding("utf-8");resp.getWriter().print("名字"+username);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }?3.web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app 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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><servlet><servlet-name>nazi</servlet-name><servlet-class>com.bilibili.mxx</servlet-class></servlet><servlet-mapping><servlet-name>nazi</servlet-name><url-pattern>/*</url-pattern></servlet-mapping><servlet><servlet-name>getb</servlet-name><servlet-class>com.bilibili.getmxx</servlet-class></servlet><servlet-mapping><servlet-name>getb</servlet-name><url-pattern>/getc</url-pattern></servlet-mapping></web-app>?用servlet2方法去取servlet1方法里面的名字,用web.xml編程映射路徑,Tomcat啟動,就行了,
加了一個公交車原理,方法都可以去上他。
2.7讀取資源類
properties
在Java目錄、resource下新建的目錄,都被打包到同一路徑下,這一路徑稱為classpath
獲得db.proprites的表內的內容以及輸出
package com.bilibili;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.Properties;public class Serlvetdemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {InputStream is = this.getServletContext().getResourceAsStream("/target/classes/com/bilibili/mxx");Properties pro = new Properties();pro.load(is);String user =pro.getProperty("username");String pwd =pro.getProperty("password");resp.getWriter().print(user+pwd);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} }配置web.xml文件?
<servlet><servlet-name>s5</servlet-name><servlet-class>com.bilibili.ServletDemo2</servlet-class></servlet><servlet-mapping><servlet-name>s5</servlet-name><url-pattern>/s5</url-pattern></servlet-mapping><servlet><servlet-name>s6</servlet-name><servlet-class>com.bilibili.Serlvetdemo3</servlet-class></servlet><servlet-mapping><servlet-name>s6</servlet-name><url-pattern>/s6</url-pattern></servlet-mapping>?2.8HttpServletsponse
HttpServletsponse應用
2.8.1下載文件
設置參數
package Demo;import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder;public class demo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1.獲取下載路徑String resultpath = "E:\\ecn_bews_project\\untitled2-maven1\\response\\src\\main\\resources\\醫智諾.png";System.out.println("下載文件路徑"+resultpath); // 2.下載文件名resultpath.substring(resultpath.lastIndexOf("\\")+1); // 3. 設置瀏覽器支持下載resp.setHeader("Content-disposition","attachment;filename"+ URLEncoder.encode("GBK")); // 4.下載文件的輸入流FileInputStream in = new FileInputStream(resultpath); // 5.創建緩沖區int len = 0;byte[] buffer = new byte[1024]; // 7.獲取OutputStream對象ServletOutputStream out = resp.getOutputStream(); // 8.把FileOutputStream流寫入buffer緩沖區9.使用OutputStream將緩沖區中的數據輸出到客戶端while ((len =in.read(buffer))>0){out.write(buffer,0,len);}in.close();out.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app 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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><servlet><servlet-name>file</servlet-name><servlet-class>Demo.demo1</servlet-class></servlet><servlet-mapping><servlet-name>file</servlet-name><url-pattern>/down</url-pattern></servlet-mapping></web-app>2.8.2 瀏覽器刷新驗證
package Demo;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;public class demo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//如何讓瀏覽器刷新五秒鐘每次resp.setHeader("refresh","3");//在內存中創建圖片BufferedImage image = new BufferedImage(80, 80, BufferedImage.TYPE_INT_RGB);//得到圖片Graphics2D p = (Graphics2D) image.getGraphics();//Java的2d畫筆//設置圖片背景顏色p.setColor(Color.blue);p.fillRect(0,0,80,20);//給圖片寫數據p.setColor(Color.pink);p.setFont(new Font(null,Font.BOLD,20));p.drawString(makenum(),0,20);//告訴瀏覽器,這個請求用圖片打開resp.setContentType("image/jpeg");//網站存在緩存,不讓瀏覽器緩存resp.setDateHeader("exprise",-1);resp.setHeader("Cache-Control","no-cache");resp.setHeader("Prama","no-cache");//把圖片寫給瀏覽器ImageIO.write(image,"jpg",resp.getOutputStream());}//生成隨機數private String makenum(){Random num = new Random();String i = num.nextInt(999999)+"";StringBuffer sg = new StringBuffer();for (int j = 0; j <6-i.length() ; j++) {sg.append("0");}String s = sg.toString() + i;return i;}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} } <?xml version="1.0" encoding="UTF-8"?> <web-app 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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><servlet><servlet-name>image</servlet-name><servlet-class>Demo.demo2</servlet-class></servlet><servlet-mapping><servlet-name>image</servlet-name><url-pattern>/images</url-pattern></servlet-mapping></web-app>?2.9? 實現重定向
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.sendRedirect("/re/img"); //重定向}重定向和轉發的區別
相同:都會跳轉web網頁
不同:重定向的url地址會變, 轉發不會?
重定向案例代碼實現輸入賬號密碼就跳轉到"成功"頁面
web.xml
<servlet><servlet-name>Request</servlet-name><servlet-class>Demo.demo4</servlet-class></servlet><servlet-mapping><servlet-name>Request</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>?success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h1>haihaihiaa</h1></body> </html>index.jsp
<html> <body> <h2>Hello World!</h2><%--這里提交的路徑,在尋找項目的路徑--%> <%--${pageContext.request.contextPath}代表當前的項目--%> <form action="${pageContext.request.contextPath}/login" method="get">用戶名:<input type="text" name="username"><br>密碼:<input type="password" name="password"><br><input type="submit"> </form></body> </html>demo4.java?
package Demo;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class demo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//處理請求String username = req.getParameter("username");String password = req.getParameter("password");System.out.println(username+";"+password);resp.sendRedirect("/re/success.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }?3.0 HttpServletRequest (重要)
?HttpServletRequest代表客戶端的請求,用戶通過http協議訪問服務器,http請求中的所有信息會被封裝到HttpServletRequest,通過HttpServletRequest方法,獲得客戶端所有的響應
?web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app 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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><servlet><servlet-name>loginselvert</servlet-name><servlet-class>ppackage.demo1</servlet-class></servlet><servlet-mapping><servlet-name>loginselvert</servlet-name><url-pattern>/loginsel</url-pattern></servlet-mapping> </web-app>?demo1.java
package ppackage;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays;public class demo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//后臺接收到亂碼問題req接收設置成GBKreq.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");String username = req.getParameter("username");String password = req.getParameter("password");String[] hobbies = req.getParameterValues("hobbies");System.out.println(username);System.out.println(password);System.out.println(Arrays.toString(hobbies));//通過請求轉發System.out.println(req.getContextPath());req.getRequestDispatcher(req.getContextPath()+"/succ.jsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }succ.jsp?
<%--Created by IntelliJ IDEA.User: ecnDate: 2022/8/12Time: 16:31To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h1>success</h1></body> </html>index.jsp?
<%--Created by IntelliJ IDEA.User: ecnDate: 2022/8/12Time: 16:06To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>登錄</title> </head> <body> <h1>登錄</h1> <div style="text-align: center"><%--以post表單提交到loginsel請求--%><form action="${pageContext.request.contextPath}/loginsel" method="post">username:<input type="text"name="username"><br>passoword:<input type="password"name="p"><br>hobby:<input type="checkbox"name="hobbies" value="唱">唱<input type="checkbox"name="hobbies" value="跳">跳<input type="checkbox"name="hobbies" value="rap">rap<input type="checkbox"name="hobbies" value="籃球">籃球<input type="checkbox"name="hobbies" value="說唱">說唱<br><input type="submit"></form> </div></body> </html>3.1、cookie 和session
3.1.1、會話:用戶打開一個瀏覽器,點擊很多超鏈接,訪問很多web資源,關閉瀏覽器,這個過程稱為會話
cookie:服務端給客戶一個信件,客戶端下次訪問服務端帶上信件就可以,客戶端技術
session:服務器已經登記你的來到,下次來時直接匹配,服務器技術,可以保存信息
3.12 cookie?
//cookie,服務器端從客戶端獲取Cookie[] cookies = req.getCookies();//這里返回數組。說明Cookie有多個存在cookie.getValue()//獲得cookie的valuecookie.getName()//獲得cookie的keynew Cookie("lastloginTime", System.currentTimeMillis()+"");//新建一個cookiecookie.setMaxAge(24*60*60);//設置cookie的有效期resp.addCookie(cookie);//響應給客戶端一個cookieURLEncode.encode("嘻嘻嘻","UTF-8");//編碼URLDecoder.decode(cookie.getValue(),"UTF-8") //解碼 兩個都用于中文亂碼3.13、session
//得到sessionHttpSession session = req.getSession();demo1s name = (demo1s) session.getAttribute("name");System.out.println(demo1s.toString());}//手動注銷session.invalidate();web.xml 會話自動配置
<!--設置session默認的失效時間--><session-config><!--1分鐘后session自動失效,以分鐘為單位--><session-timeout>1</session-timeout></session-config>3.14、JSP?
java Server pages :java服務器端頁面,用于開發動態技術
與HTML的區別:
? ?1.HTML只給用戶通過靜態的數據? 2.jsp可以嵌入Java代碼,為用戶提供動態數據
JSP本質就是一個Selvert類 ,用戶通過網絡上的web容器將jsp頁面轉換為xxx.class文件,所以用戶最后訪問到的是class文件還是一個selvert類。
<%--jsp表達式作用用來將程序輸出到客戶端<%=表達式或變量%>--%><%=new java.util.Date()%><hr><%--jsp腳本片段--%><%int sum =0;for (int i = 0; i < 100; i++) {sum=+i;}out.println(sum);%><%--在代碼中嵌入HTML元素--%><%for (int i = 0; i < 5; i++) {%><h1>大叔大嬸市場撒 <%=i%></h1><%}%>3.14.1 jsp聲明?
<%!static {System.out.println("localstatcia selvert");}private int gdsa =0;public void kkk(){System.out.println("進入了方法");} %>?/***/bug
<%--如果圖片不顯示出來就取這樣寫--%> <img src="./img/11.png"alt="500">3.14.2jsp指令將兩個頁面合二為一?
<%@include file="common/head.jsp"%> <h1>網頁主體</h1> <%@include file="common/foot.jsp"%>?4.九大內置對象
?
<%pageContext.setAttribute("name1","大廈1"); //保存的數據只在一個頁面有效request.setAttribute("name2","大廈2");//保存的數據只在一次請求有效,請求轉發會攜帶session.setAttribute("name3","大廈3"); //保存的數據在一次會話中有效application.setAttribute("name4","大廈4");//保存的數據只會在服務器有效,從打開服務器到關閉服務器 %><%String name1 = (String) pageContext.findAttribute("name1");String name2 = (String) pageContext.findAttribute("name2");String name3 = (String) pageContext.findAttribute("name3");String name4 = (String) pageContext.findAttribute("name4");%><h1>取出的值:</h1> <h1>${name1}</h1> <h1>${name2}</h1> <h1>${name3}</h1> <h1>${name4}</h1>?
?4.1 EL 標簽 、jsp標簽 、JSTL標簽
4.1.1 EL標簽 :獲取數據、執行運算、獲取web開發的常用對象
依賴的包
<!--jstl表達式的依賴--><!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api --><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!--standard依賴--><!-- https://mvnrepository.com/artifact/taglibs/standard --><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>jsp標簽?
<jsp:forward page="/jsptag-EL.jsp"> <jsp:param name="name" value="value11"></jsp:param>> <jsp:param name="age" value="vlaue222"></jsp:param> </jsp:forward>?4.1.2 jstl表達式
就是用來彌補HTML標簽的不足,可以自定義標簽,并且與java語言相同
核心標簽:
使用前要導入taglib。
在TOmcat中也要導入jstl包,standard的包才能使用,如果沒有導入就會跳轉不到那個頁面
?/** Ctrl + alt +L 對齊代碼
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--c = core 核心--%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head><title>Title</title> </head> <body> <h4>if測試</h4><hr> <form action="coreif.jsp" method="get"><input type="text" name="username" value="${param.username}"><input type="submit" value="登錄"> </form> <%--判斷提交管理員是否,是的話輸出歡迎--%> <c:if test="${param.username=='adimin'}" var="isAdmin"><c:out value="管理員welcome"/> </c:if> <c:out value="${isAdmin}"/></body> </html><c:when>?
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <c:set var="score" value="95"/><c:choose><c:when test="${score>=90}">優秀</c:when><c:when test="${score>=85}">良好</c:when><c:when test="${score>=80}">一般</c:when></c:choose></body> </html>?<c:foreach>?
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="java.util.ArrayList" %><%--Created by IntelliJ IDEA.User: ecnDate: 2022/8/16Time: 11:17To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <%ArrayList<String> objects = new ArrayList<>();objects.add(0, "22成都市");objects.add(1, "23額溫槍所");objects.add(2, "24委屈");objects.add(3, "25大廈");objects.add(4, "22額溫槍");request.setAttribute("list", objects); %> <%-- var:遍歷出來的變量 items,遍歷的對象 begin 哪里開始 end 哪里結束 step 結束 --%> <c:forEach var="objects" items="${list}"><c:out value="${objects}"/><br></c:forEach><hr><c:forEach var="objects" items="${list}" begin="1" end="3" step="2"><c:out value="${objects}"/><br> </c:forEach></body> </html>?<c:when>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <c:set var="score" value="95"/><c:choose><c:when test="${score>=90}">優秀</c:when><c:when test="${score>=85}">良好</c:when><c:when test="${score>=80}">一般</c:when></c:choose></body> </html>?5、Javabean
用法都和之前的表達式有異曲同工之處所以直接上代碼
?javabean.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Javabean</title> </head> <body><jsp:useBean id="people" class="pojo.people" scope="page"/><jsp:setProperty name="people" property="id" value="18"/> <jsp:setProperty name="people" property="plane" value="腓特烈"/> <jsp:setProperty name="people" property="tanks" value="Z23"/>坦克:<jsp:getProperty name="people" property="tanks"/> 飛機:<jsp:getProperty name="people" property="plane"/> id:<jsp:getProperty name="people" property="id"/></body> </html>?people。java
package pojo;public class people {//實體類一般與數據庫表一一對應public people(int id, String tanks, String plane) {this.id = id;this.tanks=tanks;this.plane = plane;}private int id;private String tanks;private String plane;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTanks() {return tanks;}public void setTanks(String tanks) {this.tanks = tanks;}public String getPlane() {return plane;}public void setPlane(String plane) {this.plane = plane;}@Overridepublic String toString() {return "people{" +"id=" + id +", tanks='" + tanks + '\'' +", plane='" + plane + '\'' +'}';} }?6.MVC
?7.Filter
?
?和Selvert一樣,只是接口不同,多了chain
filter.java
package com.filter;import javax.servlet.*; import java.io.IOException; //初始化 public class filters implements Filter {//執行前@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("filter執行前");}//chain/** 1.過濾器中的所有代碼,在過濾特定請求時會執行* 2. 必須讓過濾器繼續同行*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("gbk");servletResponse.setCharacterEncoding("gbk");servletResponse.setContentType("text/html;charset=GBK");System.out.println("filter執行前");filterChain.doFilter(servletRequest,servletResponse);System.out.println("filter執行后");}//銷毀@Overridepublic void destroy() {System.out.println("filter銷毀!");} }web.xml配置filter
<filter><filter-name>filters</filter-name><filter-class>com.filter.filters</filter-class></filter><filter-mapping><filter-name>filters</filter-name><url-pattern>/filteres/*</url-pattern></filter-mapping> </web-app>showselvert.java
package servlet;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class showselvert extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// resp.setCharacterEncoding("gbk");resp.getWriter().write("你你好");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }?8.監聽器
package listener;import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;//在線人數監聽 public class online implements HttpSessionListener {//創建session監聽//一旦創建session就會觸發這個事件@Overridepublic void sessionCreated(HttpSessionEvent httpSessionEvent) {ServletContext session = httpSessionEvent.getSession().getServletContext();Integer sessionline = (Integer) session.getAttribute("sessionline");if (sessionline==null){sessionline= new Integer(1);}else {int count = sessionline.intValue();sessionline = new Integer(count+1);}session.setAttribute("sessionline",sessionline);}//銷毀session監聽//一旦銷毀session就會觸發這個事件public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {ServletContext session = httpSessionEvent.getSession().getServletContext();Integer sessionline = (Integer) session.getAttribute("sessionline");if (sessionline==null){sessionline= new Integer(0);}else {int count = sessionline.intValue();sessionline = new Integer(count-1);}session.setAttribute("sessionline",sessionline);}} <listener><listener-class>listener.online</listener-class></listener> </web-app>8.1、GUI?
嵌套兩種顏色Java窗口
package listener;import java.awt.*; import java.awt.event.WindowEvent; import java.awt.event.WindowListener;public class TestCanel {public static void main(String[] args) {Frame frame = new Frame("放假啊啊啊啊啊1");//新建一個窗體Panel panel = new Panel(null);//面板frame.setLayout(null);//設置窗體布局frame.setBounds(300,400,500,500);frame.setBackground(new Color(0,0,225));//設置背景顏色panel.setBounds(50,50,300,300);panel.setBackground(new Color(0,255,0));frame.add(panel);frame.setVisible(true);//監聽事件(關閉)frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {System.out.println("打開");}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("關掉");System.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {}@Overridepublic void windowIconified(WindowEvent e) {System.out.println("激活");}@Overridepublic void windowDeiconified(WindowEvent e) {System.out.println("未激活");}@Overridepublic void windowActivated(WindowEvent e) {}@Overridepublic void windowDeactivated(WindowEvent e) {}});} }?8.2 JDBC?
package bilibili;import java.sql.*;public class TestJdbc {public static void main(String[] args) throws ClassNotFoundException, SQLException {String url ="jdbc:mysql://43.142.160.32:3306/jdbc?useUnicode=true&characterEncoding=GBK";String username = "mxx";//這里設置自己密碼 Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection(url, username, password);Statement statement = connection.createStatement();String sql ="select * from user";ResultSet rs = statement.executeQuery(sql);while (rs.next()){System.out.println("id"+rs.getObject("id"));System.out.println("name"+rs.getObject("name"));System.out.println("password"+rs.getObject("password"));System.out.println("email"+rs.getObject("email"));System.out.println("birthday"+rs.getObject("birthday"));}rs.close();statement.close();connection.close();} }?8.2.1 @Test
一種特有的Java包,要導包進來,可以到系統自帶的包 alt +enter?
9.總結
整體來說還是比較知識點分散,在投入項目時也遇到許多問題,繼續前進吧!
總結
以上是生活随笔為你收集整理的Javawbe的实战案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux我回来了
- 下一篇: 初级程序员和二级Java哪个难,软考初级