servlet

tomcat:


1。-WebContent包
       -WEB-INF
           -classes(编译的class文件放于这里)
           -lib
           -web.xml
2。在src新建Person
3。手动的Person类对应的class文件(含包)复制到classes目录
4。WebContent目录下新建JSP文件


<%@ page import="com.atguigu.test.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>starting page</title>
    
<meta http-equiv="Content-type" content="text/html">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  <body>
    <% 
    Person person=new Person();
    System.out.print(person.getPersonInfo());
    %>
  </body>
</html>


5。把WebContent目录复制到Tomcat的webapps目录下,
6。在浏览器输入http://localhost:8080/WebContent/hello.jsp






**********************************************************
在javaEE的eclipse开发web工程  firsttomcat
在servers面板中新建tomcat服务器,一定要关联tomcat安装的根目录
新建Dynamic web project
开发javaweb应用
通过run on server运行


**************************************************
Servlet的helloworld
1.创建一个servlet接口的实现类
  public class HelloServlet implements Servlet
2.在web.xml文件中配置和映射这个Servlet
  <servlet>
  <!--Servlet注册的名字-->
  <servlet-name>helloServlet</servlet-name>
  <!--Servlet的全类名-->
  <servlet-class>com_atguigujavaweb.helloservlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <!--需要和某一个servlet节点的servlet-name子节点的文本节点一致-->
  <servlet-name>helloServlet</servlet-name>
   <!--映射访问路径:代表当前WEB应用的根目录-->
  <url-pattern>/hello</url-pattern>
  </servlet-mapping>


http://localhost:8080/firsttomcat/hello
   对应
/hello       ----/表示根目录


Servlet生命周期的方法:
1.构造器:只调用一次,
2.init方法:制被调用一次,在创建实例后立即被调用,用于初始化Servlet
3.service:多次调用,用于响应请求
4.destroy:只调用一次,在当前Servlet所在WEb应用被卸载调用,释放资源




.load-on-startuo 参数


  <servlet>
  <!--Servlet注册的名字-->
  <servlet-name>helloServlet</servlet-name>
  <!--Servlet的全类名-->
  <servlet-class>com_atguigujavaweb.helloservlet</servlet-class>
  <!--制定创建的时机-->
  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <!--需要和某一个servlet节点的servlet-name子节点的文本节点一致-->
  <servlet-name>helloServlet</servlet-name>
   <!--映射访问路径:代表当前WEB应用的根目录-->
  <url-pattern>/hello</url-pattern>
  </servlet-mapping>


. load-on-startup:制定创建的时机,若为负数则第一次请求被创建,
若为0或正数则当前WEB应用被Servlet容器加载时创建实例,且数组越小越早被创建




ServletConfig:封装Servlet配置信息,并且获取SercletContext对象
1.配置Servlet初始化参数
<servlet>
  <!--Servlet注册的名字-->
  <servlet-name>helloServlet</servlet-name>
  <!--Servlet的全类名-->
  <servlet-class>com_atguigujavaweb.helloservlet</servlet-class>
  
  <!-- 配置Servlet初始化参数 -->
  <init-param>
     <!-- 初始化名字 -->
     <param-name>password</param-name>
     <param-value>1230</param-value>
  </init-param>


   <!--制定创建的时机-->
  <load-on-startup>1</load-on-startup>
  
  </servlet>


2.获取初始化参数:
getInitParameter(String name) :获取指定参数名的初始化参数
getInitParameterNames();  :获取参数组成的Enumeration对象


                System.out.println("init...");
String user=arg0.getInitParameter("user");
System.out.println("user:"+user);
Enumeration<String> names=arg0.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
System.out.println("^^"+name+":"+name);
}
String servletName=arg0.getServletName();
System.out.println(servletName);



*****************************************
ServletContext


1.可以由SerlvetConfig即arg0获取
ServletContext servletcontext=arg0.getServletcontext();


2.该对象代表当前WEB应用:可以认为ServletContext是当前WEB应用
的大管家,可以从中获取到当前WEB应用的各个方面的信息
(1)获取当前WEB应用的初始化参数


设置当前WEB应用的初始化参数:可以为所有Servlet所获取。而Servlet的初始化参数
只用哪个Servlet可以获取。
<context-param>
      <param-name>drive</param-name>
      <param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>


方法:.getInitParameter
     .getInitParameterNames
代码: 
//获取ServletContext对象
ServletContext servletContext=arg0.getServletContext();

String driver=servletContext.getInitParameter("driver");
   System.out.println("driver:"+driver);
   Enumeration<String> names2=servletContext.getInitParameterNames();
   while(names2.hasMoreElements()){
    String name=names2.nextElement();
    System.out.println("-->"+name);
   }


(2)获取当前WEB应用的某一个文件的绝对路径:
而不是部署前的路径
getRealPath(String path)
代码: 
  String realPath=servletContext.getRealPath("/note.txt");
   System.out.println(realPath);
(3).获取当前WEB应用的名称
 getContextPath()
代码:


    String contextPath=servletContext.getContextPath();
   System.out.println(contextPath);
(4)获取当前WEB应用的某一个文件对应的输入流 


getResourcetream(String path)  path为当前WEB应用的根目录


代码:
InputStream is2=servletContext.getResourceAsStream("jdbc.properties");
System.out.println("2."+is2);




(5)attribute相关的几个方法:




*******************************************************
get请求和post请求
get请求:传递参数
post请求:主要用于向WEB服务器端程序提交From表单中的数据


如何在Servlet中获取请求信息;


(1)Servlet的service()方法用于应答请求:因为每次请求都用调用service()方法
  public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("请求来了。。。");

}
 ServletRequest:封装了请求信息,可以从中获取任何请求信息
 ServletResponse:封装响应信息。如果想给什么响应,具体可以使用该接口方法实现
这两个接口的实现类都是服务器给与实现的,并在服务器调用service方法传入


ServletRequest:


(1) 获取请求参数:
 String  getParameter(String name)       :根据请求参数的名字返回参数值,单个值
 String[]  getParameterValues(String name)   :根据请求参数的名字返回
                                      请求参数对应的字符串数组
 Map  getParameterMap() :返回请求参数的健指对:Key:参数名,value:参数值,String 数组类型
 Enumeration getParameterNames()  :返回参数名对应Enumeration对象,类似ServletConfig即arg0
或ServletContex的getInitParameterNames()方法


   
(2)获取请求的URL:
(3)获取请求方式:


HttpServletRequest httpservletrequest =(HttpServletRequest)arg0;
   String requestURI=httpservletrequest.getRequestURI();
   System.out.println(requestURI);
   
   String method=httpservletrequest.getMethod();
   System.out.println(method);


3。httpservletrequest是ServletRequest的子接口,针对http请求所定义,里面包含
大量获取http
 String queryString=httpservletrequest.getQueryString();
   System.out.println(queryString);    

   String servletPath=httpservletrequest.getServletPath();
   System.out.println(servletPath);








代码写在
myeclipse中
firstservlet


eclipse
firsttomcat































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值