开发者社区> 姜白告> 正文

初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)

简介: Servlet映射的细节 同一个Servlet映射多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名 第一种方法: 第二种方法: 第三种方法:通配符(*.
+关注继续查看

Servlet映射的细节

同一个Servlet映射多个URL上,即多个<Servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名

第一种方法:

第二种方法:

第三种方法:通配符(*.do 或者 *.html)

第四种方法:通配符(/*)

HttpServletRequest

创建Servlet实现了Servlet接口

//servlet服务的方法

public void service(ServletRequest arg0, ServletResponse arg1)

throws ServletException, IOException {

// TODO Auto-generated method stub

System.out.println("servlet服务开启了");

}

 

ServletRequest:封装了请求的信息,可以从中获取请求的信息

ServletRequest:

1.可以获取请求的参数

String(返回类型) getparameter(String name);

使用这个方法,只有获取单个字符串,若是请求参数有多个值(checkBox),该方法只能获取到第一个提交的值【最常用】

例:获取a标签中的参数

例:获取单选框中的值

 

String[ ](返回类型) getParameterValues(String name);根据请求的参数的名字,返回请求参数对应的字符串数组【最常用】

例:获取多选框中的值

HttpServletRequest:继承了ServletRequest并基于Http协议

提供了对用户的请求,信息统一封装的接口,一般用于Servlet容易提供的。里面包含了大量的获取Http请求的相关方法

2.获取请求URL

StringBuffer getRequestURL();

3.获取请求的URI

String getRequestURI();

4.获取method的方法

String getMethod();

5.获取servlet请求映射路径

String getServletPath();

例:

结果

6.设置正文的编码格式

String getCharsetEncoding(String s);

7.获取正文的编码格式

String getCharsetEncoding();

8.设置请求正文的MIME的类型,如果不知道类型,则返回null

String setContentType();

9.获取请求的正文的MIME的类型

String getContentType();

 

获取request信息

1.获取请求正文的长度,若长度未知返回-1

request.getContentLength();

2.获取URI,URL是URI的自己,结果是:

request.getRequestURI();

3.获取请求的方式

request.getMethod();

4.获取所有的请求头的名字,返回值是枚举类型

request.getHeaderNames();

5.通过请求头的名字,获取值

request.getHeader(name);

6.获取项目的根路径:结果为:/FormServlet

request.getContextPath();

 

get与post区别?

区别一:

get重点是在服务器上获取资源,post重点在于向服务器发送数据

区别二:

get传输数据是通过url请求,以字段=value的形式,置于url后,并用“?”连接,多个请求数据间用“&”连接,如http://127.0.0.1:8020/JQueryDemo/HTML1.html?user=%E5%BC%A0%E4%B8%B9&pwd = 123这个过程是可见的。

post传输数据是通过http的post机制,将字段与对应的值封存找到请求的实体中,整体发送给服务器,这个过程是对用户不可见的。

区别三:

get传输数据量小,因为受url长度限制,但效率高。post传输数据量大,传输的数据量不是无限大的,所以上传文件时,只能用post方法。

区别四:get是不安全的,因为URL是可见的,可能会泄露信息。post较get安全性高

区别五:get方式只能支持ASCII字符,向服务器传的中文字符,有可能会乱吗。post支持标准字符集,可以正确传递中文字符

解决乱码格式

1.在JSP页面里(默认编码格式为:ISO8859-1)使用中文会乱码,必须把

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>中的pageEncoding="ISO8859-1"改成pageEncoding="UTF-8";

2.对于不同的请求

(1)doGet:对于解决doPost的方式,doGet不适用

第一种方式:在 Tomcat 中的 conf 文件夹下的 service.xml 中的如下标签中加入 URIEncoding="UTF-8"

< Connector URIEncoding = "UTF-8" connectionTiomeout="20000" port="8080"  protocal="HTTP/1.1" redirectPort="8443"/>

第二种方法:

request.setCharacterEncoding(“UTF-8”);

通过修改tomcat的server.xml中的代码:useBodyEncodingForURI=“true”

<Connector port="8088" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

useBodyEncodingForURI=“true”/>

还需要加上

response.setContentType(“text/html;charset-UTF-8”);

(2)doPost:

只要回去请求之前调用:request.setCharacterEncoding(“UTF-8”);

在响应页面之前调用:response.setContentType(“text/html;charset=UTF-8”);

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
delete与 delete []区别
     delete[]中的[]是要告诉c++,指向的是一个数组,如果在[]中填上了数组的长度信息,c++编译系统将忽略,并把它作为[]对待。但如果忘记了写[],则程序会产生运行错误。      delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。
753 0
GOPROXY:解决 go get golang.org/x 包失败
GOPROXY:解决 go get golang.org/x 包失败
68 0
page、pageContext、servletContext的区别
ServletContext是容器上下文,指当前的一个web应用的上下文   JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。
932 0
getActionBar().setTitle(); Java.lang.NullPoint异常解决方案
getActionBar().setTitle(); Java.lang.NullPoint异常解决方案,是由于低版本不支持直接获取的缘故,修改方案:   try changing your theme to this and not the AppCompat Version...
1015 0
mysql_store_result()与mysql_use_result()的区别
       在使用mysql_query()进行一个查询后,一般要用这两个函数之一来把结果存到一个MYSQL_RES *变量中。
912 0
关于my.getAuthUserInfo报错:error4,无权跨域调用 的解决方案
使用my.getAuthUserInfo之前,是需要先使用my.getAuthCode的,两个API可以嵌套使用: my.getAuthCode({ scopes: 'auth_user', success: (res) => { my.
1804 0
c# richTextBox显示一个txt文档出现中文乱码
1、参考解决方案 怎么读的呢? 如果是从文本中读的,考虑一下编码问题 FileStream fs = new FileStream(@"c:\你的文本.txt", FileMode.
2191 0
getContextPath、getServletPath、getRequestURI,getRealPath的区别
假定你的web application 项目名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp    则执行下面向行代码后打印出如下结果: 1、 System.out.println(request.getContextPath()); //可返回站点的根路径。
805 0
getch和getchar的区别
函数名: getch(); 功 能: 从控制台无回显地取一个字符 函数名: getchar(); 功 能: 从stdin流中读字符 函数名: scanf(); 功 能:          getchar有一个int型的返回值.
827 0
+关注
136
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载