JavaWeb巩固和进阶

1.如何配置外部应用?

方法一:

server.xml

在<Host>中添加如下配置

<Context path="/xxx" docBase="F:/hello1"/>

path:     项目的名称,给项目起的别名

docBase:  指定项目的真实存放路径

访问:http://localhost:8080/xxx/index.html

方法二:

在/conf/catalina/localhost/目录下创建xml文件,命名为yyy.xml

catalina和localhost目录如果tomcat自身没有的话,就主动去创建。

在文件中添加如下内容

<Context docBase="F:/hello1"/>

访问:http://localhost:8080/yyy/index.html

2.如何在访问时不用输入主页面?

在项目的web.xml文件中进行如下的配置,输入如下代码:

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

3.修改本机的映射?

在本机的C:\WINDOWS\system32\drivers\etc路径下的

hosts文件中

原来:127.0.0.1   localhost

现在:127.0.0.1   www.baidu.com

在本机上使用www.baidu.com就等同于使用127.0.0.1

4.如何配置一个虚拟主机?

在server.xml中配置如下:

<Host name="abc"  appBase="F:/myProject"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

</Host>

name 也必须在

C:\WINDOWS\system32\drivers\etc

hosts文件中   进行配置

5.javaweb的三大组件?

servlet

Filter   (过滤器)

listener(监听器)

6.servlet 负责的工作?

客户端发出一个请求给服务器,服务器通过web.xml配置文件找到相应的servle处理请求,servlet至少和一个url绑定在一起

通过访问url,来访问servlet

执行servlet时,实际是依靠requese和response请求

7.如何实现servlet?

实现javax.servlet.Servlet接口

继承javax.servlet.GenericServlet抽象类

继承javax.servlet.http.HttpServlet抽象类

8.servlet接口中的方法?

//和生命周期相关,前三个

void init(ServletConfig)       //第一个执行,只执行一次

void service(ServletRequest request,ServletResponse response)//被调用多次

void destroy();              //销毁的方法,只执行一次

String getServletInfo();        //得到和servlet效果的信息

ServletConfig getServletConfig(); //得到servlet的配置信息

9.web.xml中如何去配置servlet?(实际上,在创建servlet时,编译器自动生成)

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>

<servlet-name>aaa</servlet-name>

<servlet-class>servlet.AServlet</servlet-class>

//servlet是放在包名的下面

</servlet>

<servlet-mapping>

<servlet-name>aaa</servlet-name>

<url-pattern>/a_servlet</url-pattern>

//注意这里可以有多个url-pattern和一个servlet去进行对应,是以/开头

</servlet-mapping>

</web-app>

两对如下:

<servlet></servlet>

<servlet-mapping></servlet-mapping>

10.注意各个方法?

String getServletName()            //返回<servlet-name>的值

ServletContext getServletContext();   //获取servletContext对象

String getInitParameters();          //返回servlet的初始化参数

Enumeration getInitParameterNames();//返回所有的初始化的参数的名称

11.Servlet三大域对象?

ServletContext

ServletRequest

HttpSession

12.GenericServlet

直接使用this.getInitparater(),     //获取初始化参数

直接使用this.setServletContext(),  //获取ServletContext参数

注意:如果需要做初始化参数,不能去覆盖init(ServletConfig) ,而是去覆盖GenericServlet自己提交的init()方法

13.HTTPServlet,是专注与http请求的servlet

不用再覆盖service()方法

public void service(HttpServletRequest request,HttpServletResponse response){

string method = request.getMethod();//获取请求方式

}

public void doGet(HttpServletRequest request,HttpServletResponse response){

//向客户端响应405状态码

}

public void doPost(HttpServletRequest request,HttpServletResponse response){

//向客户端响应405状态码

}

doGet()   doPost()都不是抽象方法

在htttpservlet中只能去覆盖doGet()   doPost()方法,不可以去覆盖service()方法!

14.servlet是单例,是线程不安全的。

<load-on-startup>:指定当前servlet在服务器启动时就去创建实例

如果有多个启动被创建了实例

就用<load-on-startup>1</load-on-startup>

<load-on-startup>2</load-on-startup>

<load-on-startup>3</load-on-startup>

控制实例启动的顺序

15.域对象之一的:ServletContext?

是只有一个实例的对象,一个web应用只有一个servletContext对象

在服务器启动时创建,在服务器关闭时销毁,相当于一个全局的变量,常驻内存

域功能:内部有map,可以存放数据

servletContext.setAttribute(“name”,”zhangsan”);   //保存名称为name的数据

String name = (String)GetAttribute(“name”);

Enumeration e = servletContext.getAttributenames();//获取域中的所有的属性名称

可以在应用数据中使用任何动态的资源共享。

访问当前web应用的资源

String getRealPath(String path):                 //获取指定资源的的真实路径

InputStream in = servletContext.getResourceAsStream(“/a.txt”);//获取资源对应的输入流

//获取指定目录下的所有的资源路径

Set set = Context.getResourcesPaths(“/WEB-INF”);

如何得到servletContext域对象呢?

servletConfig得到

ServletContext context = servletConfig.getServletContext();

Response设置编码方式:

1)    setContentType(“text/html;charset=utf-8”)

2)    setHeader(“Content-type”,”“text/html;charset=utf-8””);

16.response作用?

设置响应头信息

设置状态码

响应正文

重定向

响应流包括:字符流 + 字节流

PrintWriter out = response.getWriter();//获取字符流

但凡,在调用getWriter方法,使用setCharacterEncoding()设置字符流的编码,否则默认是iso-8859-1

但是,在实际使用时:setContentType(“text/html;charset=utf-8”);

一方面,设置编码方式为utf-8;浏览器解析时,也按照这种方式进行解析

ServletOutputstream out = response.getOutputStream();   //获取字节流

只能调用其中的一个方法!

17.设置状态码?

response.setStatus(404);

response.sendRrror(404,”自己设置错误信息”);

18.重定向:response.setContentType("text/html;charset=utf-8");

//设置响应状态码302,在这里是必须的!

//响应头重定向到index页面,在新的指向前加“/”

response.setStatus(302);

response.setHeader("Location","/test/index.jsp");

19.自动重定向:

response.sendRedirect(“test/index.jsp”);

在重定向时,不可以既要输出到客户端又想去输出!!!

20.http是无状态的协议,每次都是新的!

21.request的功能:

分装了请求的数据

分装了请求的正文数据,如果是get请求,就没有正文数据

是一个域对象,可以把它当成map来添加数据

request提供请求转发和请求包含。

22如何区别请求转发和重定向?

给张三打电话,解决问题!

23.request作为一个域对象如何在一个请求内共享数据?

域相关的方法:

void setAttribute(String name,Object value);//设置请求的属性名和对应的值

object getAttribute(string name);            //调用时强制类型转换

void removeAttribute(String name);           //移除某个属性

enumration getAttributeNames();              //得到属性名称

24.域属性的特性:

服务器端自己设置

服务器端自己获取

实际,往往是一个servlet设置,另外一个servlet来获取。

自己设置,自己获取没意义!

25.

request获取请求头?

request.getHeader(“User-Agent”);//得到客户端浏览器的配置信息

26.表单参数,超链接参数?

Post处理编码问题:

request.setCharactorEncoding(“utf-8”);

Request.setContentType(“text/html;chartset=utf-8”);

get处理编码问题:

//获取请求参数

String username = request.getParameter(“username”);

//回退到iso-8859-1

Byte[] b1=username.getBytes(“iso-8859-1”);//回退

//String的构造函数,进行重解

username= new String(b1,”utf-8”);//重解

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//get user name and password parameters

String username=request.getParameter("username");

String password=request.getParameter("password");

//back to and renew character encode

username = new String (username.getBytes("iso-8859-1"),"utf-8");

password = new String (password.getBytes("iso-8859-1"),"utf-8");

//output to the client type

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

response.getWriter().print("名字:"+username+"密码:"+password);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// as for post method set the

response.setCharacterEncoding("utf-8");

String username=request.getParameter("username");

String password=request.getParameter("password");

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

response.getWriter().print("名字:"+username+"密码:"+password);

}

27.Request其他方法?具体查阅api

String getMethod();//获取请求方法  get/post方法

String getContextPath();  //获取当前应用的路径

String getQueryString(); //获取参数列表  username=abc&password=123;

String getRequestUr();//获取请求url

Strinf getRemoteAddr();获取客户端的ip地址

28.都是在一个请求中跨越多个servlet

请求转发:Aservlet转发到bservlet中,那么这个请求转发到bservlet处理,aservlet就不用插手。

重定向:俩个请求

请求包含:Aservlet 包含bservlet,这两个servlet共同处理,共同协作。

29.请求转发的实现代码:

requestDispatcher  rd = request.getRequestDispatcher(“/Bservlet”);

rd.forward(requese,response);//请求转发,传递给下一个servlet一个requese和response

30.会话:打开第一个页面,直到把该浏览器关闭。

javaweb技术入门的更多相关文章

  1. 走进JavaWeb技术世界14:Mybatis入门

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. JavaWeb学习总结(一)——JavaWeb开发入门

    http://www.cnblogs.com/xdp-gacl/p/3729033.html 只为成功找方法,不为失败找借口! JavaWeb学习总结(一)--JavaWeb开发入门 一.基本概念 1 ...

  3. 走进JavaWeb技术世界1:JavaWeb的由来和基础知识

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. Java工程师学习指南第2部分:JavaWeb技术世界

    本文整理了微信公众号[Java技术江湖]发表和转载过的Java Web优质文章,想看到更多Java技术文章,就赶紧关注吧. IDEA中的Maven实战 老师,免费版的IDEA为啥不能使用Tomcat? ...

  5. 深入JavaWeb技术世界15:深入浅出Mybatis基本原理

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. 走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  7. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  8. 深入理解JavaWeb技术内幕(一)

    最近在看许令波的<深入理解JavaWeb技术内幕>.整理了一些笔记.想做一个系列,这篇是系列的第一篇,讲Web请求. B/S架构 最常见的架构方式. 优点: 1.客户端使用统一(此处的统一 ...

  9. JavaWeb学习总结(一)JavaWeb开发入门

    静态网页和动态网页 静态网页:在服务器上没有经过服务器解释执行的网页. 动态网页:在服务器上经过服务器解释执行的网页. 无论是静态网页还是动态网页,客户端看到的网页都是由HTML所构成的,所以Java ...

随机推荐

  1. MSIL实用指南-加载int值

    这一篇讲的是怎样加载整数值到运算栈上.这一类的指令都是以Ldc_I4开头. Ldc_I4类OpCodes的Ldc_I4字段的功能是把一个int值压入运算栈上.它的使用方法是ilGenerator.Em ...

  2. Java NIO系列之[说在前面的话]

    在开始这个系列文章之前,先聊一些题外话,说说我为什么要写Java NIO这个系列技术文章(不看完会错失一个亿的),因为Java NIO并不像JVM,中间件源码那么有吸引力,但这个技术点是java的基础 ...

  3. atcoder C - Snuke and Spells(模拟+思维)

    题目链接:http://agc017.contest.atcoder.jp/tasks/agc017_c 题解:就是简单的模拟一下就行.看一下代码就能理解 #include <iostream& ...

  4. Atcoder E - Meaningful Mean(线段树+思维)

    题目链接:http://arc075.contest.atcoder.jp/tasks/arc075_c 题意:问数组a有多少子区间平均值为k 题解:一开始考虑过dp,但是显然不可行,其实将每一个数都 ...

  5. codeforces 459 C. Pashmak and Buses(思维)

    题目链接:http://codeforces.com/problemset/problem/459/C 题意:有n个人,k辆车,d天要求没有两个人在d天都坐在一起.输出坐的方法. 题解:这题很有意思, ...

  6. CF 450E Jzzhu and Apples 数学+模拟

    E. Jzzhu and Apples time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. 271.已正确安装证书,但https显示连接不安全(此页面的部分内容不安全)

    1.问题描述 成功安装证书,但是显示连接不安全 此页面的部分内容(例如图像)不安全 如下图 2.问题原因 页面引用(含有)http资源的文件.图片.脚本 如:图片引自其他http资源的网站 我的是引自 ...

  8. 【LeetCode】524-通过删除字母匹配到字典里最长单词

    题目描述 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符串.如果答案不存在,则返回空字符串 ...

  9. Tomcat原理系列之六:详解socket如何封装成request(上)

    目录 参与者 总结 @(详解socket如何封装成request) 看源码虽然不能马上提升你的编码水平.但能让你更好的理解编程. 因为我们tomcat多是以NIO形式处理请求,所以本系列讲的都是NIO ...

  10. 开发必配的Finder设置

    1.显示标签页.显示路径栏.显示状态栏的设置位置,在访达->显示-> 显示状态栏 个人三个都设置了,但是觉得显示状态栏用的并不多,反而多一行,下面是显示状态栏的效果,主要可以一眼看出有多少 ...