欢迎光临散文网 会员登陆 & 注册

Java web乱码处理,笔记,隐藏表单域,素材,传递参数,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、完成珠宝详情展示



(个人对动态网页的部分理解:就是一个界面,会因为对应的不同的超链接等条件触发,而在跳转的到的同一个界面,有部分相同,而有部分是对应的不同的超链接的不同的内容)

<%@ 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"); //获取地址栏参数

//var spName2= decodeURI(spName); //只需要转一次码

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

//获取地址栏参数的方法

//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、创建一个学生信息修改页面,表单中包含学生姓名,性别,学历和学生编号,要求学生编号不能够显示在页面上,但是表单提交以后能够在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("网页隐藏但不变的id:"+strId


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


}


}



————————


下面是自己尝试的过程都是错的:

但一般是不可以这样改(可以尝试除非是复制后改编码格式后粘贴到其文件上等)


下面不是处理乱码的方法(这个是错的,因为要赋值,正确的见开头):




好文推荐:



解决地址栏传参乱码问题:




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


JSP:网页中实现传递参数的6种方法


——————


查看jsp转换成servlet的内容的方法:



————


一、页面跳转方式

二、传参方式


在页面中需要输入日期框的时候,我们不能够直接写三个文本输入框,可以使用脚本文件(从网上面下载)来引入一个日期框(JS文件)

在eclipse项目中使用日期框:

1、将日期脚本文件拷贝到工程WebContent目录下(可以创建子文件夹)

2、创建jsp页面,在页面中引入日期脚本文件

"3、在页面中编写如下的代码:

<input type=""text"" readonly 

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


页面跳转的方式有两种:

1、转发

2、重定向

"区别:

1、浏览器地址栏显示的最后的地址不同,转发就显示前面的请求的地址,而重定向会显示最后跳转的页面的地址

2、转发就是一次请求,重定向是两次请求"

3、重定向可以跳转到项目外面的页面去

项目中一般建议使用转发方式跳转


JS代码中优先使用单引号


传参方式:

"1、浏览器地址栏中直接传入

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

2、表单提交


一、getParameter和getAttribute的区别。

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

三、EL表达式


getAttribute和setAttribute方法

getParameter和getAttribute的区别:

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

2、getParameter方法是一个单身狗,没有对应的setParameter方法

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

3、getParameter的使用场景:表单提交时获取数据,url路径中夹带的参数

getAttribute的使用场景:页面转发时调用。


pageContext,session和application跟request和response一样,可以直接拿过来使用

"pageContext,request,session以及application叫jsp页面的四大作用域,指的就是你放在这些对象中的变量在哪个范围内有效。

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

pageContext:表示放在这个对象中(调用setAttribute方法)的变量在本JSP页面有效

request:表示放在同一次请求中的变量有效

session:表示同一次会话中的变量有效

application:只要不重启服务器,放在里面的变量就会一直有效


request:当进行页面转发时传递参数

session:当实现购物车功能时就需要使用session


购物车:需要访问很多的页面和发送很多的搜索请求,购物车中的数据必须要一直有效。


一、作业讲解

二、EL表达式


EL表达式就是JSP中的一种特有的语言,可以简化我们的java代码。

EL表达式写法:${表达式},注意:{}中间只能是表达式,不能是语句

EL表达式有两种运算符:.和[](JS对象的运算符)

EL表达式可以写在JSP页面的任何地方


"EL表达式中的变量的显示过程:会依次从pageContext,request,session以及

applicaion四个作用域中找这个变量,一旦找到了就返回这个值,如果四个作用域都找不到,就显示为""""(不是显示为null)"


一、EL表达式显示map和list中的值。

二、通过EL表达式加载表单数据,修改数据时使用


${}中比较两个字符串是否相等,可以使用==也可以使用eq

${message == "success" ? "登录成功" : "登录失败"}

${message eq "success" ? "登录成功" : "登录失败"}


复习三大容器:List,Map,Set

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

List最常用的实现类:ArrayList

Map最常用的实现类:HashMap

Set最常用的实现类:HashSet


一、EL表达式中的范围变量

二、表单提交后的EL表达式

三、EL表达式

如果是通过表单方式提交的数据,那么通过EL表达式获取就必须使用param隐式对象

EL表达式中的范围变量:

pageContext:pageScope

request:requestScope

session:sessionScope

application:applicationScope

上面四个scope变量都是用来替换getAttribute方法的

而param隐式对象就是用来替换getParameter方法的


读取数据库中的表中的数据,将这些数据组装成一个下拉框。

1、创建表eduinfo

2、在java代码中创建一个这个表对应的javabean,它的名字跟你的表名是一样的Eduinfo

3、根据eduinfo表中的列来创建Eduinfo类的属性,你的表中有几个列javabean中就有一个属性,而且属性名要跟表的列名一致。

4、创建表对应的数据访问类(dao),EduinfoDao


一、登录功能


知道实现一个功能的步骤

1、在mysql数据库中创建一个表user,表结构:id,act,pwd

"2、搭建项目,需要创建一些包:

com.jy.bean:com/jy/bean,对应每个表中的一条数据的,你有几个表就创建一个bean

com.jy.dao:com/jy/dao,负责对表进行增删改查的,你有一个表就创建一个dao"

"com.jy是怎么来的:根据你所在的公司的网址来确定,www.jy.com,你的包名就将网址

倒过来写就可以了com.jy"

"3、将数据库的配置文件db.properties放到src目录下,同时将数据库的驱动包拷贝到

工程的lib目录下。将数据库连接工具类拷贝到工程目录下"

4、创建login.jsp页面

"5、设计登录的action即doLogin.jsp页面,因为这个页面没有需要展示的东西,所以

我们将它的所有的html代码都删除。然后将doLogin.jsp的相对路径写到表单的actiion属性中。"

6、实现登录的业务,编写登录的代码


在项目中,一个方法的功能越简单越单一就越能够复用


二、登录注册功能:验证码,人脸识别,短信验证

普通的注册:输入账号密码(输入两次),生日,学历,爱好等

1、创建reg.jsp页面

2、设计一个业务处理页面doReg.jsp,将表单中的action设置为这个业务处理页面

3、表单验证,保证用户输入的数据是正确的,不会破坏后台的数据库中的数据


一、HTTP协议

二、servlet


HTTP协议:超文本传输协议,文本代表字符串的意思,超文本代表图片,音频和视频

游戏的鼻祖:泥巴游戏mud,它是一个纯的文字游戏。

"网络上面发送这些超文本时,就必须要遵守一定的规则,这样其他的人才能够接收到

的超文本内容,这个规则就叫超文本传输协议"

Javaweb就遵循HTTP协议

HTTP协议有两个非常重要的请求方式:get请求方式和post请求方式

"404:找不到你需要的资源(jsp页面,html页面以及servlet),访问路径如果不会就

会报这个错误"

500:表示后台代码出现了错误(java代码)

200:表示请求成功了


"Servlet:由java代码编写的一个小服务程序,它的作用非常的广泛,可以实现非常多

的功能,登录注册增删改查,附件上传下载,导出excel文件,servlet其实就是一个java类。"

"使用servlet:servlet虽然是一个java类,但是不能够直接运行。它必须启动tomcat服

务器以后才能运行。"

创建一个servlet,运行它的时候在后台打印Hello world.

1、创建一个java类,让它继承HttpServlet类,重写doGet和doPost方法。

2、打开web.xml配置文件,对servlet进行配置。


快捷配置一个servlet:


当你在浏览器地址栏直接输入一个servlet的访问路径时,调用的是doGet方法

当在表单中运行一个servlet时,会根据表单的method属性来决定是调用doPost方法还是doGet方法。

post提交方式提交表单数据时,提交的数据不会显示在浏览器地址栏中

get提交方式提交表单数据时,提交的数据会显示在浏览器地址栏中。

post提交方式比较安全的。

get提交方式提交的数据量比较小

post提交方式提交的数据量比较大


一、servlet生命周期

二、init和destroy

三、loadonstartup servlet

四、servlet页面跳转方式


创建servlet的方式:

1、创建一个java类,让他继承HttpServlet,然后在web.xml中添加一段配置代码。

2、new servlet就可以创建出来


在项目中,创建servlet实例的时机:

"1、当项目启动以后的第一个用户请求这个servlet时,就会new出一个servlet实例,

当这个用户使用完以后,servlet实例不会消失,会一直保存在项目中,当下一次有用户再次请求这个servlet的时候,就不会再new这个servlet,会直接使用前面保存在项目中的servlet实例。"

2、随着项目启动,会自动的创建servlet


"第二个用户也是访问这个servlet,不会再new出一个servlet实例了,它会直接使用第

一次new出来的servlet实例"

loadonstartup servlet:随着项目的启动会自动运行的


通过servlet来进行页面跳转:

创建一个LoginServlet,运行这个servlet以后能够跳转到login.jsp页面


jsp页面每一个页面其实都是一个servlet

jsp页面转换成servlet类以后的源代码可以在tomcat服务器中的work目录下找到


jsp页面:在html代码中写java代码

servlet:在java代码中写html代码


实现重名验证


一、隐藏表单域

二、servlet中传递参数的方法

三、servlet中的四大作用域

四、jsp和servlet之间的关系(代码块)


jsp就是一个servlet,jsp页面专门负责展示内容,servlet专门用来做业务处理。

login.jsp:显示登录页面

doLogin.jsp:必须使用servlet来代替了,专门用来处理登录业务逻辑的


<%%>中的代码其实就是写在service方法中的代码。

<%=%>中的代码也是写在service方法中的代码,就是一个打印变量的语句。

<%!%>中的代码其实就是servlet的成员属性。

jsp文件中的<%----%>代码转换成servlet代码后,在servlet文件中什么都没有。


1、url传参方式:通过在访问地址后面添加上?和&方法

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

2、表单传参方式:通过表单的action属性调用servlet进行传参


隐藏表单域:

"当我们修改数据时,id是不能够修改。id是不应该显示在页面上,但是修改数据提交

表单时又需要这个id值。"



Java web乱码处理,笔记,隐藏表单域,素材,传递参数,jsp转换成servlet【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律