Javawbe的实战案例
提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
文章目錄
目錄
文章目錄
一、maven的一些注意事項(xiàng)?
?二、servlet
1.構(gòu)建一個(gè)空maven項(xiàng)目,刪掉src文件,重新導(dǎo)入依賴,建立一個(gè)新的module
1.1? 子類
?1.2 父類
?二、子類的web.xml配置最新的版本自帶的有點(diǎn)舊
?2.1 定義一個(gè)java類
2.1、編寫servlet映射
2.2 /*IDEA的Tomcat出現(xiàn)亂碼問題解決如下*/?編輯
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對(duì)象
2.7讀取資源類
properties
?2.8HttpServletsponse
?2.9? 實(shí)現(xiàn)重定向
?3.0 HttpServletRequest (重要)
一、maven的一些注意事項(xiàng)?
1.配置問題?
1.Tomcar閃退
??
2.每次重復(fù)配置maven?
?
?3.配置好的pom.xml字段含義
?4.maven下main文件下的改變
5. Tomcat官方例子源代碼
?
?6.導(dǎo)入官方依賴
(1)去官網(wǎng)找到需要的依賴
(2) 放到</dependencies> </dependencies>里,再刷新下
?二、servlet
(1).是sun公司開發(fā)的動(dòng)態(tài)web技術(shù)
(2).servlet是sun公司下的一個(gè)API接口,實(shí)現(xiàn)的話只要Java類部署到web中、編寫一個(gè)類,實(shí)現(xiàn)接口
把實(shí)現(xiàn)的servlet的Java程序叫servlet
1.構(gòu)建一個(gè)空maven項(xiàng)目,刪掉src文件,重新導(dǎo)入依賴,建立一個(gè)新的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配置最新的版本自帶的有點(diǎn)舊
<?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 定義一個(gè)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只是請(qǐng)求實(shí)現(xiàn)的不同的方式,可以互相調(diào)用@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映射
因?yàn)榫帉懙腏ava程序是要通過瀏覽器訪問的,而瀏覽器是要連接web服務(wù)器,所以需要注冊(cè)servlet
給一個(gè)訪問路徑。
<servlet><servlet-name>hellotya</servlet-name><servlet-class>com.bilibili.servlet.selverts</servlet-class> </servlet> <!--selvert請(qǐng)求--><servlet-mapping><servlet-name>hellotya</servlet-name><url-pattern>hellotya</url-pattern></servlet-mapping>2.2 /*IDEA的Tomcat出現(xiàn)亂碼問題解決如下*/
2.3? </注冊(cè)名>
?
?2.4 Servlet
2.5mapping 問題?
1.一個(gè)servlet可以指定一條映射路徑?
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>2.一個(gè)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.一個(gè)servlet可以指定通用映射路徑??
<servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello2/*</url-pattern></servlet-mapping>4.一個(gè)servlet可以指定默認(rèn)映射路徑(首頁(yè)會(huì)被擠掉)
<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.優(yōu)先級(jí)
指定好的映射路徑級(jí)別最高,如果沒有舊走默認(rèn)路徑
<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.
看代碼注釋有沒有規(guī)定符號(hào)
2.6? servletcontext對(duì)象
我們可以把ServletContext當(dāng)成一個(gè)公用的空間,可以被所有的客戶訪問,如上圖,A、B、C三個(gè)客戶端都可以訪問。WEB容器在啟動(dòng)時(shí),它會(huì)為每個(gè)Web應(yīng)用程序都創(chuàng)建一個(gè)對(duì)應(yīng)的ServletContext,它代表當(dāng)前Web應(yīng)用,并且它被所有客戶端共享。
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("人事如潮人如水,不甚今朝一場(chǎng)醉");}}?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啟動(dòng),就行了,
加了一個(gè)公交車原理,方法都可以去上他。
2.7讀取資源類
properties
在Java目錄、resource下新建的目錄,都被打包到同一路徑下,這一路徑稱為classpath
獲得db.proprites的表內(nèi)的內(nèi)容以及輸出
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應(yīng)用
2.8.1下載文件
設(shè)置參數(shù)
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\\醫(yī)智諾.png";System.out.println("下載文件路徑"+resultpath); // 2.下載文件名resultpath.substring(resultpath.lastIndexOf("\\")+1); // 3. 設(shè)置瀏覽器支持下載resp.setHeader("Content-disposition","attachment;filename"+ URLEncoder.encode("GBK")); // 4.下載文件的輸入流FileInputStream in = new FileInputStream(resultpath); // 5.創(chuàng)建緩沖區(qū)int len = 0;byte[] buffer = new byte[1024]; // 7.獲取OutputStream對(duì)象ServletOutputStream out = resp.getOutputStream(); // 8.把FileOutputStream流寫入buffer緩沖區(qū)9.使用OutputStream將緩沖區(qū)中的數(shù)據(jù)輸出到客戶端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 瀏覽器刷新驗(yàn)證
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");//在內(nèi)存中創(chuàng)建圖片BufferedImage image = new BufferedImage(80, 80, BufferedImage.TYPE_INT_RGB);//得到圖片Graphics2D p = (Graphics2D) image.getGraphics();//Java的2d畫筆//設(shè)置圖片背景顏色p.setColor(Color.blue);p.fillRect(0,0,80,20);//給圖片寫數(shù)據(jù)p.setColor(Color.pink);p.setFont(new Font(null,Font.BOLD,20));p.drawString(makenum(),0,20);//告訴瀏覽器,這個(gè)請(qǐng)求用圖片打開resp.setContentType("image/jpeg");//網(wǎng)站存在緩存,不讓瀏覽器緩存resp.setDateHeader("exprise",-1);resp.setHeader("Cache-Control","no-cache");resp.setHeader("Prama","no-cache");//把圖片寫給瀏覽器ImageIO.write(image,"jpg",resp.getOutputStream());}//生成隨機(jī)數(shù)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? 實(shí)現(xiàn)重定向
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.sendRedirect("/re/img"); //重定向}重定向和轉(zhuǎn)發(fā)的區(qū)別
相同:都會(huì)跳轉(zhuǎn)web網(wǎng)頁(yè)
不同:重定向的url地址會(huì)變, 轉(zhuǎn)發(fā)不會(huì)?
重定向案例代碼實(shí)現(xiàn)輸入賬號(hào)密碼就跳轉(zhuǎn)到"成功"頁(yè)面
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><%--這里提交的路徑,在尋找項(xiàng)目的路徑--%> <%--${pageContext.request.contextPath}代表當(dāng)前的項(xiàng)目--%> <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 {//處理請(qǐng)求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代表客戶端的請(qǐng)求,用戶通過http協(xié)議訪問服務(wù)器,http請(qǐng)求中的所有信息會(huì)被封裝到HttpServletRequest,通過HttpServletRequest方法,獲得客戶端所有的響應(yīng)
?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 {//后臺(tái)接收到亂碼問題req接收設(shè)置成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));//通過請(qǐng)求轉(zhuǎn)發(fā)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請(qǐng)求--%><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="說(shuō)唱">說(shuō)唱<br><input type="submit"></form> </div></body> </html>3.1、cookie 和session
3.1.1、會(huì)話:用戶打開一個(gè)瀏覽器,點(diǎn)擊很多超鏈接,訪問很多web資源,關(guān)閉瀏覽器,這個(gè)過程稱為會(huì)話
cookie:服務(wù)端給客戶一個(gè)信件,客戶端下次訪問服務(wù)端帶上信件就可以,客戶端技術(shù)
session:服務(wù)器已經(jīng)登記你的來(lái)到,下次來(lái)時(shí)直接匹配,服務(wù)器技術(shù),可以保存信息
3.12 cookie?
//cookie,服務(wù)器端從客戶端獲取Cookie[] cookies = req.getCookies();//這里返回?cái)?shù)組。說(shuō)明Cookie有多個(gè)存在cookie.getValue()//獲得cookie的valuecookie.getName()//獲得cookie的keynew Cookie("lastloginTime", System.currentTimeMillis()+"");//新建一個(gè)cookiecookie.setMaxAge(24*60*60);//設(shè)置cookie的有效期resp.addCookie(cookie);//響應(yīng)給客戶端一個(gè)cookieURLEncode.encode("嘻嘻嘻","UTF-8");//編碼URLDecoder.decode(cookie.getValue(),"UTF-8") //解碼 兩個(gè)都用于中文亂碼3.13、session
//得到sessionHttpSession session = req.getSession();demo1s name = (demo1s) session.getAttribute("name");System.out.println(demo1s.toString());}//手動(dòng)注銷session.invalidate();web.xml 會(huì)話自動(dòng)配置
<!--設(shè)置session默認(rèn)的失效時(shí)間--><session-config><!--1分鐘后session自動(dòng)失效,以分鐘為單位--><session-timeout>1</session-timeout></session-config>3.14、JSP?
java Server pages :java服務(wù)器端頁(yè)面,用于開發(fā)動(dòng)態(tài)技術(shù)
與HTML的區(qū)別:
? ?1.HTML只給用戶通過靜態(tài)的數(shù)據(jù)? 2.jsp可以嵌入Java代碼,為用戶提供動(dòng)態(tài)數(shù)據(jù)
JSP本質(zhì)就是一個(gè)Selvert類 ,用戶通過網(wǎng)絡(luò)上的web容器將jsp頁(yè)面轉(zhuǎn)換為xxx.class文件,所以用戶最后訪問到的是class文件還是一個(gè)selvert類。
<%--jsp表達(dá)式作用用來(lái)將程序輸出到客戶端<%=表達(dá)式或變量%>--%><%=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>大叔大嬸市場(chǎng)撒 <%=i%></h1><%}%>3.14.1 jsp聲明?
<%!static {System.out.println("localstatcia selvert");}private int gdsa =0;public void kkk(){System.out.println("進(jìn)入了方法");} %>?/***/bug
<%--如果圖片不顯示出來(lái)就取這樣寫--%> <img src="./img/11.png"alt="500">3.14.2jsp指令將兩個(gè)頁(yè)面合二為一?
<%@include file="common/head.jsp"%> <h1>網(wǎng)頁(yè)主體</h1> <%@include file="common/foot.jsp"%>?4.九大內(nèi)置對(duì)象
?
<%pageContext.setAttribute("name1","大廈1"); //保存的數(shù)據(jù)只在一個(gè)頁(yè)面有效request.setAttribute("name2","大廈2");//保存的數(shù)據(jù)只在一次請(qǐng)求有效,請(qǐng)求轉(zhuǎn)發(fā)會(huì)攜帶session.setAttribute("name3","大廈3"); //保存的數(shù)據(jù)在一次會(huì)話中有效application.setAttribute("name4","大廈4");//保存的數(shù)據(jù)只會(huì)在服務(wù)器有效,從打開服務(wù)器到關(guān)閉服務(wù)器 %><%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 標(biāo)簽 、jsp標(biāo)簽 、JSTL標(biāo)簽
4.1.1 EL標(biāo)簽 :獲取數(shù)據(jù)、執(zhí)行運(yùn)算、獲取web開發(fā)的常用對(duì)象
依賴的包
<!--jstl表達(dá)式的依賴--><!-- 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標(biāo)簽?
<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表達(dá)式
就是用來(lái)彌補(bǔ)HTML標(biāo)簽的不足,可以自定義標(biāo)簽,并且與java語(yǔ)言相同
核心標(biāo)簽:
使用前要導(dǎo)入taglib。
在TOmcat中也要導(dǎo)入jstl包,standard的包才能使用,如果沒有導(dǎo)入就會(huì)跳轉(zhuǎn)不到那個(gè)頁(yè)面
?/** Ctrl + alt +L 對(duì)齊代碼
<%@ 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測(cè)試</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}">優(yōu)秀</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:遍歷出來(lái)的變量 items,遍歷的對(duì)象 begin 哪里開始 end 哪里結(jié)束 step 結(jié)束 --%> <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}">優(yōu)秀</c:when><c:when test="${score>=85}">良好</c:when><c:when test="${score>=80}">一般</c:when></c:choose></body> </html>?5、Javabean
用法都和之前的表達(dá)式有異曲同工之處所以直接上代碼
?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"/> 飛機(jī):<jsp:getProperty name="people" property="plane"/> id:<jsp:getProperty name="people" property="id"/></body> </html>?people。java
package pojo;public class people {//實(shí)體類一般與數(shù)據(jù)庫(kù)表一一對(duì)應(yīng)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 {//執(zhí)行前@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("filter執(zhí)行前");}//chain/** 1.過濾器中的所有代碼,在過濾特定請(qǐng)求時(shí)會(huì)執(zhí)行* 2. 必須讓過濾器繼續(xù)同行*/@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執(zhí)行前");filterChain.doFilter(servletRequest,servletResponse);System.out.println("filter執(zhí)行后");}//銷毀@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.監(jiān)聽器
package listener;import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;//在線人數(shù)監(jiān)聽 public class online implements HttpSessionListener {//創(chuàng)建session監(jiān)聽//一旦創(chuàng)建session就會(huì)觸發(fā)這個(gè)事件@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監(jiān)聽//一旦銷毀session就會(huì)觸發(fā)這個(gè)事件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");//新建一個(gè)窗體Panel panel = new Panel(null);//面板frame.setLayout(null);//設(shè)置窗體布局frame.setBounds(300,400,500,500);frame.setBackground(new Color(0,0,225));//設(shè)置背景顏色panel.setBounds(50,50,300,300);panel.setBackground(new Color(0,255,0));frame.add(panel);frame.setVisible(true);//監(jiān)聽事件(關(guān)閉)frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {System.out.println("打開");}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("關(guān)掉");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";//這里設(shè)置自己密碼 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包,要導(dǎo)包進(jìn)來(lái),可以到系統(tǒng)自帶的包 alt +enter?
9.總結(jié)
整體來(lái)說(shuō)還是比較知識(shí)點(diǎn)分散,在投入項(xiàng)目時(shí)也遇到許多問題,繼續(xù)前進(jìn)吧!
總結(jié)
以上是生活随笔為你收集整理的Javawbe的实战案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux我回来了
- 下一篇: 初级程序员和二级Java哪个难,软考初级