最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java web亂碼處理,筆記,隱藏表單域,素材,傳遞參數(shù),jsp轉換成servlet【詩書畫唱】

2020-09-20 16:42 作者:詩書畫唱  | 我要投稿


亂碼處理和自己的總結:

String name2 =null;

if(name!= null) {

//自己的總結:

//new String(name.getBytes("iso8859-1【大多情況不變,因為這種編碼格式很多情況中都通用】"),"(被接收到的這個文件界面的UpdateTable.jsp等文件的格式)") ;

name2= new String(name.getBytes("iso8859-1"),"UTF-8") ;


}

System.out.println(name2);



所用圖片素材:

14.png
16.png
41.png
5.png

1、完成珠寶詳情展示



(個人對動態(tài)網(wǎng)頁的部分理解:就是一個界面,會因為對應的不同的超鏈接等條件觸發(fā),而在跳轉的到的同一個界面,有部分相同,而有部分是對應的不同的超鏈接的不同的內容)

<%@ page language="java" contentType="text/html;

?charset=UTF-8" pageEncoding="UTF-8"%>

<%

? ? String path = request.getContextPath();

? ? String basePath = request.getScheme()+"://"

? ? +request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

? ? <head>

? ? ? ? <base hreff="<%=basePath%>">

? ? ? ? <title></title>

? ? ? ? <meta http-equiv="pragma" content="no-cache">

? ? ? ? <meta http-equiv="cache-control" content="no-cache">

? ? ? ? <meta http-equiv="expires" content="0">

? ? ? ? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

? ? ? ? <meta http-equiv="description" content="This is my page">

? ? ? ? <script type="text/javascript">

? ? ? ? ? ? function detail(name){

? ? ? ?

? ? ? ? ? ?

? ? window.location.hreff = "spInfo.jsp?spName="+name;

? ??

? ? ? ? ? ? }

? ? ? ? </script>

? ? </head>

? ? <body>

? ? <form action="">

? ? ? ? <table border="1">

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <th>珠寶名稱</th>

? ? ? ? ? ? ? ? <th>珠寶圖片</th>

? ? ? ? ? ? ? ? <th>珠寶價格</th>

? ? ? ? ? ? ? ? <th>我想</th>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>橙寶石</td>

? ? ? ? ? ? ? ? <td><img srcc="img/14.png" /></td>

? ? ? ? ? ? ? ? <td>¥200000</td>

? ? ? ? ? ? ? ?<%--? <a hreff="spInfo.jsp?name='好'">點擊</a>?

? ? ? 本來是打算寫? ?detail('橙寶石')? ? 的,

? ? ? 但地址欄最好不要傳中文,總會有亂碼,很麻煩,也沒必要,因為

? ? ? 想有一些對應的中文名打印在界面等 時,可以寫if判斷等?

? ? ? ? ? ? ? ? --%>

<td><a hreff="javascript:detail(1);">查看詳情</a></td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>紫晶</td>

? ? ? ? ? ? ? ? <td><img srcc="img/16.png" /></td>

? ? ? ? ? ? ? ? <td>¥300000</td>

? ?<td><a hreff="javascript:detail(2);">查看詳情</a></td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>紅寶石</td>

? ? ? ? ? ? ? ? <td><img srcc="img/41.png" /></td>

? ? ? ? ? ? ? ? <td>¥500000</td>

?<td><a hreff="javascript:detail(3);">查看詳情</a></td>

? ? ? ? ? ? </tr>

? ? ? ? ? ? <tr>

? ? ? ? ? ? ? ? <td>紫寶石</td>

? ? ? ? ? ? ? ? <td><img srcc="img/5.png" /></td>

? ? ? ? ? ? ? ? <td>¥100000</td>

?<td><a hreff="javascript:detail(4);">查看詳情</a></td>

? ? ? ? ? ? </tr>

? ? ? ? </table>

? ? ? ? </form>

? ? </body>

</html>

<%@ page language="java" contentType="text/html; charset=UTF-8"

? ? pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional

//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<%


//request.setCharacterEncoding("UTF-8");



String spName=request.getParameter("spName");

//new String(spName. getBytes("iso8859-1"),"utf-8");

//在外面聲明個全局變量,以便于用if判斷后賦值,然后使用。

String spInfo=null;

//個人的嘗試得出的注意事項:字符串判斷相等最好用spName.equals("1"),

//不要用spName=="1",這里用==會無法判斷字符串相等。


if(spName.equals("1")){?


spInfo="橙寶石顏色濃郁且醇厚,給人一種皇家般尊貴的感覺。";

//System.out.println(spInfo);

}

else if(spName.equals("2")){?


spInfo="紫晶,源自希臘文,意思是“不易破碎”,其化學組成為 SiO2。";


}

else if(spName.equals("3")){?


spInfo="紅寶石是指顏色呈紅色的剛玉,它是剛玉的一種,主要成分是氧化鋁。";


}

else if(spName.equals("4")){?


spInfo="紫寶石是寧靜、安全的象征。傳說佩戴紫水晶的人們會帶來靈感和智慧。";


}


%>


<script type="text/javascript">

//var spName = getQueryString("spName"); //獲取地址欄參數(shù)

//var spName2= decodeURI(spName); //只需要轉一次碼

//document.getElementsByTagName("spName")[0].innerHTML =spName2;

//獲取地址欄參數(shù)的方法

//function getQueryString(name) {

//var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

//var r = window.location.search.substr(1).match(reg);

//if (r != null) return unescape(r[2]); return null;}


</script>


</head>

<body>

商品詳情:<%--<%=spName%>--%>

<%=spInfo%>


<%--<%=request.getParameter("name")%>--%>

</body>

</html>



2、創(chuàng)建一個學生信息修改頁面,表單中包含學生姓名,性別,學歷和學生編號,要求學生編號不能夠顯示在頁面上,但是表單提交以后能夠在servlet中獲取到。


<%@ page language="java" contentType="text/html; charset=UTF-8"

? ? pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action="UpdateTable" method= "post">

<input type="hidden" name="id" value= "666"/>

<input type="text" name= "name" value= "詩書畫唱"/>

<br>

<input type= "text" name= "info" value="三連關注" />

<br>

<input type= "submit" value="修改"/>

</form>

</body>

</html>

package com.SSHC;


import java.io.IOException;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


/**

?* Servlet implementation class UpdateTable

?*/

@WebServlet("/UpdateTable")

public class UpdateTable extends HttpServlet implements Servlet {

private static final long serialVersionUID = 1L;

? ? ? ?

? ? /**

? ? ?* @see HttpServlet#HttpServlet()

? ? ?*/

? ? public UpdateTable() {

? ? ? ? super();

? ? ? ? // TODO Auto-generated constructor stub

? ? }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

String strId = request. getParameter("id");


String name = request. getParameter("name");

String info = request. getParameter("info");

String name2 =null;

String info2 =null;

if(name!= null||info!=null) {

//自己的總結:

//new String(name.getBytes("iso8859-1"),"(被接收到

//這個文件界面的UpdateTable.jsp等文件的格式)") ;

// name2= new String(name.getBytes("iso8859-1"),"UTF-8") ;

name2= new String(name.getBytes("iso8859-1"),"UTF-8") ;

info2= new String(info.getBytes("iso8859-1"),"UTF-8") ;

}

// System.out.println(name2);

System. out.println("網(wǎng)頁隱藏但不變的id:"+strId


+"\n修改后的名字:"+name2+"\n修改后的信息:"+info2);


}


}



————————


下面是自己嘗試的過程都是錯的:

但一般是不可以這樣改(可以嘗試除非是復制后改編碼格式后粘貼到其文件上等)


下面不是處理亂碼的方法(這個是錯的,因為要賦值,正確的見開頭):




好文推薦:



解決地址欄傳參亂碼問題:




https://www.baidu.com/link?url=ZuCIc0LCG4fOfebuixYI_Zh2zb6Ma1qygnwYtLPhsDbCN-itpFx1DjU4hHqJZcJGh9i41589wrvS1bffOFTBQX920e7xP5CKx8X8p8Iysey&wd=&eqid=8329fa8a00003619000000055f642a9e


JSP:網(wǎng)頁中實現(xiàn)傳遞參數(shù)的6種方法


——————


查看jsp轉換成servlet的內容的方法:



————


一、頁面跳轉方式

二、傳參方式


在頁面中需要輸入日期框的時候,我們不能夠直接寫三個文本輸入框,可以使用腳本文件(從網(wǎng)上面下載)來引入一個日期框(JS文件)

在eclipse項目中使用日期框:

1、將日期腳本文件拷貝到工程WebContent目錄下(可以創(chuàng)建子文件夾)

2、創(chuàng)建jsp頁面,在頁面中引入日期腳本文件

"3、在頁面中編寫如下的代碼:

<input type=""text"" readonly?

? ? ? ? ? ? onclick=""new Calendar().show(this);"" />"


頁面跳轉的方式有兩種:

1、轉發(fā)

2、重定向

"區(qū)別:

1、瀏覽器地址欄顯示的最后的地址不同,轉發(fā)就顯示前面的請求的地址,而重定向會顯示最后跳轉的頁面的地址

2、轉發(fā)就是一次請求,重定向是兩次請求"

3、重定向可以跳轉到項目外面的頁面去

項目中一般建議使用轉發(fā)方式跳轉


JS代碼中優(yōu)先使用單引號


傳參方式:

"1、瀏覽器地址欄中直接傳入

http://localhost:8888/j190802/demo.jsp?act=admin&pwd=123&sex=男"

2、表單提交


一、getParameter和getAttribute的區(qū)別。

二、四大作用域:pageContext,request,session,application

三、EL表達式


getAttribute和setAttribute方法

getParameter和getAttribute的區(qū)別:

1、getParameter返回值是String,getAttribute返回值是Object

2、getParameter方法是一個單身狗,沒有對應的setParameter方法

如果調用setAttribute方法,后面的程序中就必定會調用getAttribute方法

3、getParameter的使用場景:表單提交時獲取數(shù)據(jù),url路徑中夾帶的參數(shù)

getAttribute的使用場景:頁面轉發(fā)時調用。


pageContext,session和application跟request和response一樣,可以直接拿過來使用

"pageContext,request,session以及application叫jsp頁面的四大作用域,指的就是你放在這些對象中的變量在哪個范圍內有效。

四大作用域對象都有setAttribute方法和getAttribute方法。"

pageContext:表示放在這個對象中(調用setAttribute方法)的變量在本JSP頁面有效

request:表示放在同一次請求中的變量有效

session:表示同一次會話中的變量有效

application:只要不重啟服務器,放在里面的變量就會一直有效


request:當進行頁面轉發(fā)時傳遞參數(shù)

session:當實現(xiàn)購物車功能時就需要使用session


購物車:需要訪問很多的頁面和發(fā)送很多的搜索請求,購物車中的數(shù)據(jù)必須要一直有效。


一、作業(yè)講解

二、EL表達式


EL表達式就是JSP中的一種特有的語言,可以簡化我們的java代碼。

EL表達式寫法:${表達式},注意:{}中間只能是表達式,不能是語句

EL表達式有兩種運算符:.和[](JS對象的運算符)

EL表達式可以寫在JSP頁面的任何地方


"EL表達式中的變量的顯示過程:會依次從pageContext,request,session以及

applicaion四個作用域中找這個變量,一旦找到了就返回這個值,如果四個作用域都找不到,就顯示為""""(不是顯示為null)"


一、EL表達式顯示map和list中的值。

二、通過EL表達式加載表單數(shù)據(jù),修改數(shù)據(jù)時使用


${}中比較兩個字符串是否相等,可以使用==也可以使用eq

${message == "success" ? "登錄成功" : "登錄失敗"}

${message eq "success" ? "登錄成功" : "登錄失敗"}


復習三大容器:List,Map,Set

List,Map和Set都是接口,所以不能夠直接new出來的

List最常用的實現(xiàn)類:ArrayList

Map最常用的實現(xiàn)類:HashMap

Set最常用的實現(xiàn)類:HashSet


一、EL表達式中的范圍變量

二、表單提交后的EL表達式

三、EL表達式

如果是通過表單方式提交的數(shù)據(jù),那么通過EL表達式獲取就必須使用param隱式對象

EL表達式中的范圍變量:

pageContext:pageScope

request:requestScope

session:sessionScope

application:applicationScope

上面四個scope變量都是用來替換getAttribute方法的

而param隱式對象就是用來替換getParameter方法的


讀取數(shù)據(jù)庫中的表中的數(shù)據(jù),將這些數(shù)據(jù)組裝成一個下拉框。

1、創(chuàng)建表eduinfo

2、在java代碼中創(chuàng)建一個這個表對應的javabean,它的名字跟你的表名是一樣的Eduinfo

3、根據(jù)eduinfo表中的列來創(chuàng)建Eduinfo類的屬性,你的表中有幾個列javabean中就有一個屬性,而且屬性名要跟表的列名一致。

4、創(chuàng)建表對應的數(shù)據(jù)訪問類(dao),EduinfoDao


一、登錄功能


知道實現(xiàn)一個功能的步驟

1、在mysql數(shù)據(jù)庫中創(chuàng)建一個表user,表結構:id,act,pwd

"2、搭建項目,需要創(chuàng)建一些包:

com.jy.bean:com/jy/bean,對應每個表中的一條數(shù)據(jù)的,你有幾個表就創(chuàng)建一個bean

com.jy.dao:com/jy/dao,負責對表進行增刪改查的,你有一個表就創(chuàng)建一個dao"

"com.jy是怎么來的:根據(jù)你所在的公司的網(wǎng)址來確定,www.jy.com,你的包名就將網(wǎng)址

倒過來寫就可以了com.jy"

"3、將數(shù)據(jù)庫的配置文件db.properties放到src目錄下,同時將數(shù)據(jù)庫的驅動包拷貝到

工程的lib目錄下。將數(shù)據(jù)庫連接工具類拷貝到工程目錄下"

4、創(chuàng)建login.jsp頁面

"5、設計登錄的action即doLogin.jsp頁面,因為這個頁面沒有需要展示的東西,所以

我們將它的所有的html代碼都刪除。然后將doLogin.jsp的相對路徑寫到表單的actiion屬性中。"

6、實現(xiàn)登錄的業(yè)務,編寫登錄的代碼


在項目中,一個方法的功能越簡單越單一就越能夠復用


二、登錄注冊功能:驗證碼,人臉識別,短信驗證

普通的注冊:輸入賬號密碼(輸入兩次),生日,學歷,愛好等

1、創(chuàng)建reg.jsp頁面

2、設計一個業(yè)務處理頁面doReg.jsp,將表單中的action設置為這個業(yè)務處理頁面

3、表單驗證,保證用戶輸入的數(shù)據(jù)是正確的,不會破壞后臺的數(shù)據(jù)庫中的數(shù)據(jù)


一、HTTP協(xié)議

二、servlet


HTTP協(xié)議:超文本傳輸協(xié)議,文本代表字符串的意思,超文本代表圖片,音頻和視頻

游戲的鼻祖:泥巴游戲mud,它是一個純的文字游戲。

"網(wǎng)絡上面發(fā)送這些超文本時,就必須要遵守一定的規(guī)則,這樣其他的人才能夠接收到

的超文本內容,這個規(guī)則就叫超文本傳輸協(xié)議"

Javaweb就遵循HTTP協(xié)議

HTTP協(xié)議有兩個非常重要的請求方式:get請求方式和post請求方式

"404:找不到你需要的資源(jsp頁面,html頁面以及servlet),訪問路徑如果不會就

會報這個錯誤"

500:表示后臺代碼出現(xiàn)了錯誤(java代碼)

200:表示請求成功了


"Servlet:由java代碼編寫的一個小服務程序,它的作用非常的廣泛,可以實現(xiàn)非常多

的功能,登錄注冊增刪改查,附件上傳下載,導出excel文件,servlet其實就是一個java類。"

"使用servlet:servlet雖然是一個java類,但是不能夠直接運行。它必須啟動tomcat服

務器以后才能運行。"

創(chuàng)建一個servlet,運行它的時候在后臺打印Hello world.

1、創(chuàng)建一個java類,讓它繼承HttpServlet類,重寫doGet和doPost方法。

2、打開web.xml配置文件,對servlet進行配置。


快捷配置一個servlet:


當你在瀏覽器地址欄直接輸入一個servlet的訪問路徑時,調用的是doGet方法

當在表單中運行一個servlet時,會根據(jù)表單的method屬性來決定是調用doPost方法還是doGet方法。

post提交方式提交表單數(shù)據(jù)時,提交的數(shù)據(jù)不會顯示在瀏覽器地址欄中

get提交方式提交表單數(shù)據(jù)時,提交的數(shù)據(jù)會顯示在瀏覽器地址欄中。

post提交方式比較安全的。

get提交方式提交的數(shù)據(jù)量比較小

post提交方式提交的數(shù)據(jù)量比較大


一、servlet生命周期

二、init和destroy

三、loadonstartup servlet

四、servlet頁面跳轉方式


創(chuàng)建servlet的方式:

1、創(chuàng)建一個java類,讓他繼承HttpServlet,然后在web.xml中添加一段配置代碼。

2、new servlet就可以創(chuàng)建出來


在項目中,創(chuàng)建servlet實例的時機:

"1、當項目啟動以后的第一個用戶請求這個servlet時,就會new出一個servlet實例,

當這個用戶使用完以后,servlet實例不會消失,會一直保存在項目中,當下一次有用戶再次請求這個servlet的時候,就不會再new這個servlet,會直接使用前面保存在項目中的servlet實例。"

2、隨著項目啟動,會自動的創(chuàng)建servlet


"第二個用戶也是訪問這個servlet,不會再new出一個servlet實例了,它會直接使用第

一次new出來的servlet實例"

loadonstartup servlet:隨著項目的啟動會自動運行的


通過servlet來進行頁面跳轉:

創(chuàng)建一個LoginServlet,運行這個servlet以后能夠跳轉到login.jsp頁面


jsp頁面每一個頁面其實都是一個servlet

jsp頁面轉換成servlet類以后的源代碼可以在tomcat服務器中的work目錄下找到


jsp頁面:在html代碼中寫java代碼

servlet:在java代碼中寫html代碼


實現(xiàn)重名驗證


一、隱藏表單域

二、servlet中傳遞參數(shù)的方法

三、servlet中的四大作用域

四、jsp和servlet之間的關系(代碼塊)


jsp就是一個servlet,jsp頁面專門負責展示內容,servlet專門用來做業(yè)務處理。

login.jsp:顯示登錄頁面

doLogin.jsp:必須使用servlet來代替了,專門用來處理登錄業(yè)務邏輯的


<%%>中的代碼其實就是寫在service方法中的代碼。

<%=%>中的代碼也是寫在service方法中的代碼,就是一個打印變量的語句。

<%!%>中的代碼其實就是servlet的成員屬性。

jsp文件中的<%----%>代碼轉換成servlet代碼后,在servlet文件中什么都沒有。


1、url傳參方式:通過在訪問地址后面添加上?和&方法

訪問地址:http://localhost:8888/j190802/ps?act=admin&pwd=123

2、表單傳參方式:通過表單的action屬性調用servlet進行傳參


隱藏表單域:

"當我們修改數(shù)據(jù)時,id是不能夠修改。id是不應該顯示在頁面上,但是修改數(shù)據(jù)提交

表單時又需要這個id值。"



Java web亂碼處理,筆記,隱藏表單域,素材,傳遞參數(shù),jsp轉換成servlet【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
甘洛县| 庄浪县| 应城市| 衡水市| 胶南市| 灵石县| 旌德县| 始兴县| 池州市| 赣州市| 九龙坡区| 平原县| 如东县| 涟源市| 湖州市| 缙云县| 潜山县| 恩施市| 乌拉特后旗| 德阳市| 庐江县| 松江区| 汤原县| 大洼县| 昔阳县| 连云港市| 南通市| 山西省| 曲麻莱县| 类乌齐县| 宁安市| 喀喇| 从江县| 秦皇岛市| 黄骅市| 香格里拉县| 遂川县| 涿州市| 西昌市| 吕梁市| 黔江区|