Servlet中的HttpServletRequest
来源:互联网 发布:淘宝店运营方案 编辑:程序博客网 时间:2024/04/30 14:52
1:note.txt
1:使用Java EE版本的Eclipse开发动态的WEB工程(Java WEB项目)
1)把开发选项切换到Java EE2)可以window->show view中找到package Explore,把其拖到开发区左边
3)在Servers面板中新建Tomcat服务器
4)新建Dynamic Web project(动态web工程) ,其中Target Runtime需要选择Tomcat
5)开发Java Web应用
6)可以通过run on server 运行 WEB项目
2:ServLet的HelloWorld
1)创建一个ServLet接口实现类
2)在web.xml文件中配置和映射ServLet
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.test.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
3)浏览器访问ServLet通过<url-pattern>/hello</url-pattern>
3:servLet容器:运行ServLet,JSP,Filter,Listener
1)可以来创建ServLet,并调用ServLet的相关生命周期方法
2)JSP,Filter,Listen,Tag...运行在ServLet容器中
4:ServLet生命周期的方法:以下方法都是由ServLet容器负责调用
1)构造器:第一次请求ServLet时,创建ServLet的实例,调用构造器(说明是ServLet一个单实例)
2)init:只被调用一次,在ServLet容器被实例化后立即调用,用于初始化ServLet
3)service:被多次调用,每次调用时都会调用service方法,实际用于响应请求
4)destory:在ServLet容器销毁时调用,只被调用一次,释放ServLet当前所占用的资源
5:load-on-startup:在被加载时创建实例
6:关于servlet-mapping
1)同一个servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置可以是同一个servlet的注册名
2)再Servlet映射到URL中也可以使用*(通配符),但是只能有2种固定格式
一种是:*.扩展名(html,jsp),另外一种是:/*
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
以下是不合法的:
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/*.html</url-pattern>
</servlet-mapping>
7:ServletConfig:是一个接口,封装了servlet配置信息,并且可以获取ServletContext对象
1) 配置ServLet初始化参数
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
2):获取初始化参数:getInitParameter(String name):获取指定参数名的初始化参数
getInitParameterName();获取参数名组成的Enumeration对象
String user=servletConfig.getInitParameter("user");
String password=servletConfig.getInitParameter("password");
System.out.println("用户:"+user+",密码:"+password);
Enumeration<String> names=servletConfig.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("^^"+name+":"+value);
}
3):ServletContext:是一个接口(是ServLet上下文)
Sevlet引擎为每一个WEB应用程序都创建一个对应的ServletContext对象,包含在ServletConfig对象中
调用ServletConfig.getServletContext方法可以返回ServletContext对应的引用
--由于每一个Servlet WEB应用程序共享ServletContext对象,所以ServletContext是application(应用):用于保存所有用户的公共的数据信息
①获取当前web应用程序的初始化参数
设置初始化参数:servletContext可以为所有的Servlet所获取,而Servlet的初始化参数只能被指定的一个servlet获取
<!-- 配置当前WEB应用程序的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql://localhost/testjdbc</param-value>
</context-param>
<context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
方法:
ServletContext servletContext=servletConfig.getServletContext();
String driver=servletContext.getInitParameter("driver");
String jdbcUrl=servletContext.getInitParameter("jdbcUrl");
String user=servletContext.getInitParameter("user");
String passwords=servletContext.getInitParameter("password");
System.out.println("driver:"+driver);
System.out.println("jdbcUrl:"+jdbcUrl);
System.out.println("user:"+user);
System.out.println("passwords:"+passwords);
System.out.println("---------------------------\n");
Enumeration<String> names2=servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name2=names2.nextElement();
String value=servletContext.getInitParameter(name2);
System.out.println(name2+"-->"+value);
}
②获取当前WEB应用的某一个文件绝对路径:getRealPath()方法,不是文件部署前的路径
③获取当前WEB应用的根目录名称:
String contextPath=servletContext.getContextPath();
System.out.println("WEB根目录名称:"+contextPath);
④获取当前WEB应用的某一个文件对应的输入流
getResourceAsStream(String path):path的/ 为相当于当前WEB应用的路径
InputStream isInputStream2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println("2."+isInputStream2);
和attribute相关的几个方法:get
8:使用GET与Post请求区别:
get请求:参数附在url后面 ?以键值对存在,使用get请求传送数据一般限制在1kb以下(超链接,直接在浏览器中请求)
post请求:将表单内容作为http消息发送给WEB服务器,传送数据量比get请求数据量大(文件上传必须为post请求)
9:如何在Servlet中获取请求信息
1)servlet的service方法用于响应请求:因为每次请求都会调用service方法
protected void service(HttpServletRequest request, HttpServletResponse response)
HttpServletRequest request:封装了请求信息,可以从中获取任何的请求信息
HttpServletResponse response:封装了相应信息,想响应什么,调用该接口的实现方法
①:获取请求参数:
String getParameter(String name)//获取指定参数名称的值
Map getParametermap();获取所有请求参数的名称与对应的值
Enumeration getParameterNames() 获取所有请求参数的名称//Enumeration是迭代器,是Iterator出现前的一个版本
String[] getParameterValues(String name)获取指定参数名称的一组值(复选框)
②获取URL: ServletRequest子接口HttpServletRequest
③
2:login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="loginServlet" method="post">
userName:<input type="text" name="user"/><br/>
password:<input type="password" name="password"/><br/>
interesting:<input type="checkbox" name="interesting" value="listening"/>listening
<input type="checkbox" name="interesting" value="Speaking"/>Speaking
<input type="checkbox" name="interesting" value="Reading"/>Reading
<input type="checkbox" name="interesting" value="Writing"/>Writing<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
3:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Servlet1</display-name>
<!-- 配置当前WEB应用程序的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql://localhost/testjdbc</param-value>
</context-param>
<context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
<!-- 配置和映射ServLet-->
<servlet>
<!-- ServLet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!-- ServLet的全类名 -->
<servlet-class>com.test.HelloServlet</servlet-class>
<!-- 配置ServLet初始化参数 -->
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.test.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 需要和某一个ServLet节点的servlet-name子节点保持一致 -->
<servlet-name>helloServlet</servlet-name>
<!-- 映射具体访问路径:/当前WEB应用的根目录 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4:LoginServlet
package com.test;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("请求来了");
String user=request.getParameter("user");
String password=request.getParameter("password");
System.out.println("用户名:"+user+",密码:"+password);
String[] params=request.getParameterValues("interesting");
for(String value:params){
System.out.println("--"+value);
}
Enumeration<String> names=request.getParameterNames();
while(names.hasMoreElements())
{
String name=names.nextElement();//获取元素
String value=request.getParameter(name);
System.out.println(name+"-->"+value);
}
Map<String,String[]> map=request.getParameterMap();
//entrySet():获取键值对,
for(Map.Entry<String, String[]> entry:map.entrySet()){
//Arrays.asList:将对象数组以list集合输出
System.out.println(entry.getKey()+"-->"+Arrays.asList(entry.getValue()));
}
//HttpServletRequest是ServletRequest子接口
HttpServletRequest httpServletRequest=(HttpServletRequest)request;//向下转型
String requestURL=httpServletRequest.getRequestURI();
System.out.println("请求的URL"+requestURL);
String method=httpServletRequest.getMethod();
System.out.println("请求的方法:"+method);
}
}
- servlet中的HttpServletRequest对象
- Servlet中的HttpServletRequest
- HttpServletRequest【servlet】
- [Servlet] HttpServletRequest
- javax.servlet.http.HttpServletRequest
- 【servlet】HttpServletResponse HttpServletRequest
- javax.servlet.http.HttpServletRequest
- servlet-------HttpServletRequest对象
- Servlet—HttpServletRequest
- 【复习】servlet之HttpServletRequest
- servlet学习笔记---HttpServletRequest
- Servlet——HttpServletRequest
- 【Servlet】HttpServletRequest和HttpServletResponse
- Servlet--ServletRequest转换HttpServletRequest
- servlet获取HttpServletRequest、HttpServletResponse
- servlet-HttpServletRequest、HttpServletResponse
- Servlet应用---HttpServletRequest的应用
- Servlet应用---HttpServletRequest的应用
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 蛋白质结构预测(swiss-model,modeller )
- node中https请求
- 第七届蓝桥杯大赛个人赛省赛(软件类)A组第三题 方格填数
- 将web02项目配置上spring--applicationContext.xml
- Servlet中的HttpServletRequest
- C++四种类型转换机制
- block块对象
- String类详解
- [kuangbin带你飞]专题一 简单搜索 F
- [构造 哈密顿路径] SRM 704 div1 HamiltonianConstruction
- EventBus
- 神经网络激活函数的介绍
- poj