在Java Java框架servlett中doGet方法和doPost方法是不是一旦遇到Java框架servlett中的post请求或者get请求,调用的都是这两

servlet doPost中如何获取Post进来的流对象
[问题点数:40分,结帖人chc2882004]
本版专家分:4
结帖率 88.89%
CSDN今日推荐
本版专家分:23695
2011年9月 Java大版内专家分月排行榜第一2011年8月 Java大版内专家分月排行榜第一
本版专家分:4
本版专家分:23695
2011年9月 Java大版内专家分月排行榜第一2011年8月 Java大版内专家分月排行榜第一
本版专家分:4
本版专家分:15122
2010年3月 Java大版内专家分月排行榜第二
本版专家分:4
本版专家分:23695
2011年9月 Java大版内专家分月排行榜第一2011年8月 Java大版内专家分月排行榜第一
本版专家分:23695
2011年9月 Java大版内专家分月排行榜第一2011年8月 Java大版内专家分月排行榜第一
本版专家分:15122
2010年3月 Java大版内专家分月排行榜第二
本版专家分:4
匿名用户不能发表回复!
其他相关推荐在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在&form&中的method属性中指定提交的方式。如:&form action="inputForm"method="get"&,如果不指定method属性,则会默认该属性为”get”方式。
Get和post都能够提交数据,那么他们有什么不同呢?
不同点一:
通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。
不同点二:
通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。
不同点三:
通过Get方式提交的数据安全性不高,而Post方式的更加安全~
下面举个例子说明:
1.post提交--doPost方法
&%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
&title&登录&/title&
&h3&登录&/h3&
&form action="LoginServlet" method="post"&
用户名:&input type="text" name="username"/&&br&
密码:&input type="password" name="password"/&&br&
&input type="submit" /&
&/html&LoginServlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//向服务器发送请求获取到参数
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println(username+"--"+password);
response.setHeader("Content-Type", "text/ charset=UTF-8");
Writer out=response.getWriter();
out.write("用户名:"+username);
out.write("密码:"+password);
out.flush();
out.close();
这就是Post方式提交和doPost方法使用的效果,是不是更安全呢~~~
2.get方式--doGet方法
login.jsp:
&%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
&title&登录&/title&
&h3&登录&/h3&
&form action="LoginServlet" method="get"&
用户名:&input type="text" name="username"/&&br&
密码:&input type="password" name="password"/&&br&
&input type="submit" /&
&/html&LoginServlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//向服务器发送请求获取到参数
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println(username+"--"+password);
response.setHeader("Content-Type", "text/ charset=UTF-8");
Writer out=response.getWriter();
out.write("用户名:"+username);
out.write("密码:"+password);
out.flush();
out.close();
看这个效果图是不是觉得用户名和密码都暴露了呢~~这样很不安全~
3.也可以post方式提交,然后在doGet方式写逻辑代码,不过要在doPost方法中调用doGet方法,同样get方式也是一样的道理~~~
另外,除了doGet和doPost方法之外,还有doPut、doDelete、doTrace、doHead、doOptions,但使用的比较少。
servlet中doGet()和doPost()方法的用法和区别
1、servlet中doGet()和doPost()的用法 一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256...
servlet中doGet()和doPost()的区别
servlet中doGet()和doPost()的区别servlet中doGet()和doPost()的区别
doGet()和doPost()的区别
doGet()和doPost()的区别
doget()与dopost的区别
首先明确servlet的生命周期和HTTP协议.
Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法并且要求调用下列的方法之一:
doGet:处理...
doGet与doPost的区别
在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在中的method属性中指定提交的方式。如:formaction=&inputForm&method=&get&&,如...
Servlet中doGet与doPost的区别
(1)get是从服务器上获取数据,post是向服务器传送数据。
在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEAD...
jsp中doGet和doPost的区别
Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法并且要求调用下列的方法之一:
doget:处理GET请求
doPost:处理POST请求
3 doGet() 和 doPost() 的区别?
3 doGet() 和 doPost() 的区别?
doGet() 和 doPost() 接收两个参数:HttpServletRequest 请求和HttpServletResponse响应。
doGet和doPost提交参数的区别
转自luoweifu的博客,原文地址:http://blog.csdn.net/luoweifu/article/details/7865243
在使用表单提交数据到服务器的时候有两...
没有更多推荐了,JavaWeb之Servlet:HttpServletRequest
1.HttpServletRequest概述
我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。
service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大,今天我们学习HttpServletRequest。
2.request的运行流程
3.通过抓包工具抓取Http请求
因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行,请 求头和请求体
4.通过request获得请求行
获得客户端的请求方式:StringgetMethod()
获得请求的资源:
StringgetRequestURI()
StringBuffergetRequestURL()
StringgetContextPath()---web应用的名称
StringgetQueryString()---- get提交url地址后的参数字符串
username=zhangsan&password=123
注意:request获得客户机(客户端)的一些信息
request.getRemoteAddr() --- 获得访问的客户端IP地址
package com.sh.
* request获得请求行的内容
获得客户机信息
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import jdk.management.resource.ResourceR
public class LineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获得请求方式
String method = request.getMethod();
System.out.println(&method=&+method);
//2.获得请求的资源相关的内容
String requestURI =request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
System.out.println(&URI:&+requestURI);
System.out.println(&URL:&+requestURL);
//获得web应用的名称
String contextPath = request.getContextPath();
System.out.println(&web应用:&+contextPath);
//地址后参数的字符串
String queryString = request.getQueryString();
System.out.println(queryString);
//3.获得客户机的信息 ---客户机IP
String remoteAddr = request.getRemoteAddr();
System.out.println(&访问者IP:&+remoteAddr);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
5.通过request获得请求头
longgetDateHeader(Stringname)
StringgetHeader(Stringname)
EnumerationgetHeaderNames()
EnumerationgetHeaders(Stringname)
intgetIntHeader(Stringname)
referer头的作用:执行该此访问的的来源
package com.sh.
import java.io.IOE
import java.util.E
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class HeaderServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获得指定的头
String header = request.getHeader(&User-Agent&);
System.out.println(header);
//2.获得所有头的名字
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName+&:&+headerValue);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
防盗链代码:
package com.sh.
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class ReferServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//对该新闻的来源进行判断
String header = request.getHeader(&ReferServlet&);
if(header!=null&&header.startsWith(&https://localhost&)) {
//是从我自己的网站跳转过来的,可看新闻
response.setContentType(&text/charset=UTF-8&);
response.getWriter().write(&中国已经拿到100块金牌!&);
response.getWriter().write(&你是盗链者,可耻!&);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
6.通过request获得请求体
请求体中的内容是通过post提交的请求参数,格式是:
username=zhangsan&password=123&hobby=football&hobby=basketball
key ---------------------- value
username [zhangsan]
password [123]
hobby [football,basketball]
以上面参数为例,通过一下方法获得请求参数:
StringgetParameter(Stringname)
String[]getParameterValues(Stringname)
EnumerationgetParameterNames()
MapgetParameterMap()
注意:get请求方式的请求参数 上述的方法一样可以获得
解决post提交方式的乱码:request.setCharacterEncoding(&UTF-8&);
解决get提交的方式的乱码:
parameter = new String(parameter.getbytes(&iso8859-1&),&utf-8&);
package com.sh.
* request获得请求参数
import java.io.IOE
import java.util.E
import java.util.M
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.apache.el.stream.StreamELResolverI
public class ContentServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获得单个表单
String username = request.getParameter(&username&);
System.out.println(username);
String password = request.getParameter(&password&);
System.out.println(password);
//2.获得多个表单
String[] hobbys = request.getParameterValues(&hobby&);
for (String hobby : hobbys) {
System.out.println(hobby);
//3.获得所有请求参数的名称
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
System.out.println(parameterNames.nextElement());
//4.获得所有的参数 封装到Map
Map parameterMap = request.getParameterMap();
for(Map.Entry entry:parameterMap.entrySet()) {
System.out.println(entry.getKey());
for(String str:entry.getValue()) {
System.out.println(str);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
7.request的其他功能
(1)request是一个域对象
request对象也是一个存储数据的区域对象,所以也具有如下方法:
setAttribute(Stringname,Objecto)
getAttribute(Stringname)
removeAttribute(Stringname)
注意:request域的作用范围:一次请求中
(2)request完成请求转发
获得请求转发器----path是转发的地址
RequestDispatchergetRequestDispatcher(Stringpath)
通过转发器对象转发
requestDispathcer.forward(ServletRequestrequest,ServletResponseresponse)
package com.sh.
* 请求转发
import java.io.IOE
import javax.servlet.RequestD
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class Servlet1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//向request域中存储数据
request.setAttribute(&name&, &tom&);
//servlet1将请求转发给servlet2
RequestDispatcher dispatcher = request.getRequestDispatcher(&/Servlet2&);
//执行转发的方法
dispatcher.forward(request, response);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
package com.sh.
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class Servlet2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//从request域中取数据
Object attribute = request.getAttribute(&name&);
response.getWriter().write(&hello haohao...&+attribute);
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
注意:ServletContext域与Request域的生命周期比较?
ServletContext:
创建:服务器启动
销毁:服务器关闭
域的作用范围:整个web应用
创建:访问时创建request
销毁:响应结束request销毁
域的作用范围:一次请求中
注意:转发与重定向的区别?
1)重定向两次请求,转发一次请求
2)重定向地址栏的地址变化,转发地址不变
3)重新定向可以访问外部网站 转发只能访问内部资源
4)转发的性能要优于重定向
注意:客户端地址与服务器端地址的写法?
客户端地址:
是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名 称
直接输入地址:
服务器端地址:
服务器内部资源的跳转的地址,特点:不需要写web应用的名称
request获得行的内容
request.getMethod()
request.getRequestURI()
request.getRequestURL()
request.getContextPath()
request.getRemoteAddr()
request获得头的内容
request.getHeader(name)
request获得体(请求参数)
String request.getParameter(name)
Map request.getParameterMap();
String[] request.getParameterValues(name);
注意:客户端发送的参数 到服务器端都是字符串
获得中文乱码的解决:
post:request.setCharacterEncoding(&UTF-8&);
parameter = new String(parameter.getBytes(&iso8859-1&),&UTF-8&);
request转发和域
request.getRequestDispatcher(转发的地址).forward(req,resp);
request.setAttribute(name,value)
request.getAttribute(name)
8.案例:实现用户的登录注册
注册代码:
package com.ithiema.
import java.io.IOE
import java.lang.reflect.InvocationTargetE
import java.sql.SQLE
import java.util.M
import java.util.UUID;
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.apache.commons.beanutils.BeanU
import org.apache.commons.dbutils.QueryR
import com.ithiema.utils.DataSourceU
public class RegisterServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置request的编码---只适合post方式
request.setCharacterEncoding(&UTF-8&);
//get方式乱码解决
//String username = request.getParameter(&username&);//乱码
//先用iso8859-1编码 在使用utf-8解码
//username = new String(username.getBytes(&iso8859-1&),&UTF-8&);
//1、获取数据
//String username = request.getParameter(&username&);
//System.out.println(username);
//String password = request.getParameter(&password&);
//2、将散装的封装到javaBean
//User user = new User();
//user.setUsername(username);
//user.setPassword(password);
//使用BeanUtils进行自动映射封装
//BeanUtils工作原理:将map中的数据 根据key与实体的属性的对应关系封装
//只要key的名字与实体的属性 的名字一样 就自动封装到实体中
Map properties = request.getParameterMap();
User user = new User();
BeanUtils.populate(user, properties);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
//现在这个位置 user对象已经封装好了
//手动封装uid----uuid---随机不重复的字符串32位--java代码生成后是36位
user.setUid(UUID.randomUUID().toString());
//3、将参数传递给一个业务操作方法
regist(user);
} catch (SQLException e) {
e.printStackTrace();
//4、认为注册成功跳转到登录页面
response.sendRedirect(request.getContextPath()+&/login.&);
//注册的方法
public void regist(User user) throws SQLException{
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = &insert into user(username,password,name,email,telephone,birthday,sex,state,code) values(?,?,?,?,?,?,?,?,?)&;
runner.update(sql,user.getUsername(),user.getPassword(),user.getName(),user.getEmail(),null,user.getBirthday(),user.getSex(),null,null);
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
登录代码:
package com.ithiema.
import java.io.IOE
import java.sql.SQLE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.apache.commons.dbutils.QueryR
import org.apache.commons.dbutils.handlers.BeanH
import com.ithiema.register.U
import com.ithiema.utils.DataSourceU
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(&UTF-8&);
//1、获得用户名和密码
String username = request.getParameter(&username&);
String password = request.getParameter(&password&);
//2、调用一个业务方法进行该用户查询
User login =
login = login(username,password);
} catch (SQLException e) {
e.printStackTrace();
//3、通过user是否为null判断用户名和密码是否正确
if(login!=null){
//用户名和密码正确
//登录成功 跳转到网站的首页
response.sendRedirect(request.getContextPath());
//用户名或密码错误
//跳回当前login.jsp
//使用转发 转发到login.jsp
向request域中存储错误信息
request.setAttribute(&loginInfo&, &用户名或密码错误&);
request.getRequestDispatcher(&/login.jsp&).forward(request, response);
public User login(String username,String password) throws SQLException{
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = &select * from user where username=? and password=?&;
User user = runner.query(sql, new BeanHandler(User.class), username,password);
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);在客户端过contentType="text/ charset=UTF-8"指定编码格式为utf8时。
1.如果页面以get方式提交表单
解决乱码办法如图
1.如果页面以post方式提交表单
解决乱码办法如图
Java搭建servlet时doGet方法中文乱码问题
在搭建servlet时,用request获得网页传输的数据以及用response返回给网页数据时会出现中文乱码的问题。那么我们应该如何解决这个问题?乱码的原因  要想解决该问题首先要知道为什么会出现这...
Servlet的doGet与doPost方法的区别与使用
在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在中的method属性中指定提交的方式。如:form action=&inputForm&method...
超简单的解决doGet和doPost中文乱码问题
Request中文乱码问题 【重点!!!】解决request中文乱码问题,要分成两种情况:get请求和post请求1.Get
//这里取到的值是iso编码过后的值, 是乱码。因为Tomcat中默认...
UrlConnection doPost Https请求 、编码设置
UrlConnection doPost Https请求 、编码设置
UrlConnection doPost方法
* 发送POST请求
* @param url
doGet方法中出现的中文乱码问题解决
把Tomcat下面conf文件夹下的server.xml文件中:
maxThreads=&150& connectionTimeout=&20000& ...
一句话:浏览器浏览的页面编码一定要跟servlet中HttpServletRequest的编码一致,就不会有乱码,不一致就会乱码。当然服务器的处理编码方式也影响,tomcat9就是默认用了UTF-8处...
今天系统的整理了在web项目下,出现的编码问题,下面就做一些总结:get方式遇到的问题:问题的起因很简单,在网上看了一些博文说,在tomcat作为的web容器下,通过GET方式进行表单提交,传参到se...
如果容器是tomcat,配置下它的配置文件/conf/server.xml修改为
get请求传递中文时本地连正式库访问都正常,正式环境下单独访问报错
请求:project/projectInfo/export/?cks=’项目类型
...
本文要解决的问题:
掌握tomcat的配置,同时解决使用过程中一系列的乱码问题。
tomcat中文乱码问题
一、Java中文问题的由来
  Java的内核和class文件是...
没有更多推荐了,servlet中doget dopost一定被执行吗_百度知道
servlet中doget dopost一定被执行吗
rt我发现其实doGet和doPost并不是会被一定调用,比如我覆盖service()方法则可以不调用doGet、doPost方法。...
rt我发现其实doGet和doPost并不是会被一定调用,比如我覆盖service()方法则可以不调用doGet、doPost方法。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
Itologdnnt
来自电脑网络类芝麻团
Itologdnnt
采纳数:225
获赞数:1806
参与团队:
首先要明白servlet的原理,一次请求过来的时候,首先调用的是service方法,然后根据你的form表单是post则调用doPost()方法,get则调用doGet()方法,如果不写,默认为doGet方法,所以,一般情况下,doGet()和doPost()是有一个要被执行的。
huangxtian
huangxtian
采纳数:55
获赞数:247
既然要访问servlet 那么 肯定是一post或get的方式提交到servlet
,那么doget。dopost
就有相应的方法要执行
采纳数:227
获赞数:529
恩 是这样HttpServlet中的doGet doPost方法可以处理提交的get 或者post方式的请求但是你别忘记了HttpServlet是javax.servlet.Servlet的子类,父类中的service()本来就可以处理get或者post请求这是官方文档中的解释: Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class.我的理解是:因为Servlet的这种结构,才让你可以扩展Servlet的功能.只是扩展的功能更具体,专一了。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 Javawebservlet 的文章

 

随机推荐