JavaWeb(了解servlet,乱码的原因和解决)

单机程序:无需通过网络交互,单一执行的特定程序.例如:ppt,word,txt,收音机,简单计算机
Web程序(网络程序):需要借助网络进行通信的程序.(Client<---->server)客户端<--->服务端

网络程序的架构:
两层CS架构:客服端+DB(存储数据并计算)
特点:数据库作为server,使用数据库特定的编程语言编写业务逻辑.
客户端提供操作页面和少量的业务逻辑处理.

缺点:移植性差(更换数据库需要重新进行编程)
不适合大型应用:客户端需要与数据库之间建立持续的连接

三层CS架构:客户端+服务器(任何支持TCP编程的语言)+DB
特点:数据库只负责数据的管理
应用服务器提供所有的业务逻辑处理
客户端只负责提供页面操作
优点:移植性好,适合大型应用
缺点:
客户端需要单独安装,开发复杂(需要自定义协议,编写客户端和服务端的通信模块)

B/S:
同三层CS架构:只是B/S不用自定义协议,而是用http协议,不需要 独立的客户端.

什么是servlet?
Sun(oracle)公司制定的一种用来扩展Web服务器功能的"组件规范".

开发servlet的步骤:
编写一个实现servlet接口或继承HttpServlet的java类
使用javac命令编译源文件为字节码文件
将编译完的组件打包
部署:将appName整个文件夹拷贝到tomcat的webapps文件夹下
启动Tomcat并访问servlet:在地址栏输入符合一定规范的地址
http://ip:port/appName/servletUrl
(URL在web.xml描述文件中可以找到)

404错误:
404数字是什么?
服务器执行完客户端的请求后,返回给客户端的一个执行结果的状态码
产生的原因:Web服务器(容器)根据请求地址找不到对应资源

1.:地址写错(拼写不正确,字母大小写写错)
2.web.xml文件中的两个<servlet-name>不一致
3.工程没有部署
4.Web应用程序部署结果没有遵循servlet规范(没有放到指定的包中跑不起来)

404错误解决方法:
检查上面四点.

容器如何找到service方法


405错误
产生的原因:Web服务器(容器)找不到service()方法找不到service
1.service方法名写错
2.service方法参数类型与标准类型不一致
3.service方法异常,返回值类型与标准值不一样

405错误的解决方法:
检查service方法是否存在
检查service()方法的(方法名,参数,返回值,异常类型)是否与覆盖父类中的方法一致.

500错误
产生的原因:程序在运行时错误.
如:servlet类没有继承HttpServlet或者实现servlet接口

500错误解决方法
.检查servlet-class中的包名是否正确.
.servlet类没有继承HttpServlet或者实现servlet接口.
.检查service方法中代码是否运行出错.

什么是http协议?

servlet工作原理:
1.1获取请求参数数值的方法
获取提交的Name-Value数值
getParameter()

返回值类型为String[]
当需要获取参数名相同的多个参数值的时候使用该方法
多用于获取提交表单中复选框的值
如果该参数不存在,返回null
String[] xingqu =request.getParameterValues("ck");
        System.out.println(Arrays.toString(xingqu));

为什么区分请求方式
请求方式客户端对话服务器是的意向说明,是区分请求种类的关键
不同的请求方式不仅仅是在数据传输时会有所不同,在表单提交及服务器端处理时都会采用不同的方式
而区分不同种类的请求方式也会使得浏览器采用不同的缓存方式处理后续请求,从而提升响应速度.


请求方式的种类:
GET
POST
HEAD
PUD
DELETE
.....

GET请求方式
当需要向服务器请求指定的资源时使用的方法
他不应该用于一些会造成副作用的操作(在网络应用层中使用他来做提交请求是一种常见的错误用法)
什么情况下浏览器发送get请求
在浏览器中直接书写地址
点击链接
表单默认提交
重定向
window.location

GET请求方式的特点
会将请求数据添加到请求资源路径的后面,所有智能提交的数据给WEB服务器
请求参数会显示到浏览器地址上,不安全.

POST请求方式
向服务器提交需要处理的数据,这些数据写在请求的内容里,可以导致新资源的产生和已有资源的更新

POST请求特点:
请求参数添加参数添加到实体内容中,可提交大量数据
不会将请求参数显示在浏览器上地址栏,相对安全

如何处理中文参数:
为什么表单提交会产生乱码:
乱码产生的原因:
当表单提交时,浏览器对中文参数值进行编码(使用打开表单所在的页面时的字符集进行编码)
web服务器在默认情况下会使用iso-8859-1去解码
编码和解码方式不一致,就会产生乱码

(浏览器中使用哪种方式文字编码就用这个编码格式提交)
解决POST方式时的乱码问题
确保表单所在的页面按照指定的字符集打开
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

在服务器端按照这个编码格式解码即可
添加到读取参数的前面
此方式只对post请求有效.*  (浏览器有记录,编码解码一致....)
request.setCharacterEncoding("utf-8");


解决GET方式时的乱码问题
1.确保表单所在的页面按照指定的字符集打开
2.在服务器端使用如下方式解决.
new String(raf.readLine().getBytes("ISO-8859-1"),"utf-8");

3.为什么返回的页面会有乱码
编码:将Unicode字符集对应的字节数组转换成某种本地字符集(如UTF-8)对应的字节码数组
解码:将某种本地字符集对应的字节码数组转换为Unicode字符集对应的字节数组
编码和编码使用的字符集不一致就产生了乱码.

response.setContentType("text/html;charset=utf-8")

作业:用户安全验证
创建一张用户表,由用户页面注册添加而来
创建登入界面,读取用户信息进行验证,要求输入用户的账号,密码,邮箱.
账号字母数字混合,不少于8位,密码不可以空,邮箱(符合邮箱格式)
用户合法则进入系统内部,否则打回登入界面,并给出提示信息 
"xxxxx:先生/女士您还不是合法用户,请先注册,注册点击超链接";

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值