javaweb技术入门
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技术入门的更多相关文章
- 走进JavaWeb技术世界14:Mybatis入门
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- JavaWeb学习总结(一)——JavaWeb开发入门
http://www.cnblogs.com/xdp-gacl/p/3729033.html 只为成功找方法,不为失败找借口! JavaWeb学习总结(一)--JavaWeb开发入门 一.基本概念 1 ...
- 走进JavaWeb技术世界1:JavaWeb的由来和基础知识
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java工程师学习指南第2部分:JavaWeb技术世界
本文整理了微信公众号[Java技术江湖]发表和转载过的Java Web优质文章,想看到更多Java技术文章,就赶紧关注吧. IDEA中的Maven实战 老师,免费版的IDEA为啥不能使用Tomcat? ...
- 深入JavaWeb技术世界15:深入浅出Mybatis基本原理
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】
最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...
- 深入理解JavaWeb技术内幕(一)
最近在看许令波的<深入理解JavaWeb技术内幕>.整理了一些笔记.想做一个系列,这篇是系列的第一篇,讲Web请求. B/S架构 最常见的架构方式. 优点: 1.客户端使用统一(此处的统一 ...
- JavaWeb学习总结(一)JavaWeb开发入门
静态网页和动态网页 静态网页:在服务器上没有经过服务器解释执行的网页. 动态网页:在服务器上经过服务器解释执行的网页. 无论是静态网页还是动态网页,客户端看到的网页都是由HTML所构成的,所以Java ...
随机推荐
- mysql where、group by、having
今天重新温习一遍mysql的知识 先来讲讲where.group by.having group by :是将记录中的数据,按照条件进行分组: having:是将分组后的数据加上条件筛选,区别于whe ...
- 【Java并发】线程的顺序执行
/** * 问题:有线程a.b.c,如何让它们顺序执行? * 方式一:可用Join()方法实现 * 方式二:可用newSingleThreadExecutor() * Created by Smile ...
- HTML(四)图像,表格
HTML 图像 插入动图的语法和静态图的语法是一样的 HTML 图像- 图像标签( )和源属性(Src) 一个来自文件夹中的图像: 一个来自网站的图像: alt 属性用来为图像定义一串预备的可替换的文 ...
- jdk13快来了,jdk8的这几点应该看看!
说明 jdk8虽然出现很久了,但是可能我们还是有很多人并不太熟悉,本文主要就是介绍说明一些jdk8相关的内容. 主要会讲解: lambda表达式 方法引用 默认方法 Stream 用Optional取 ...
- win8调出右侧菜单栏
1.快捷键:win+c 2.鼠标放在右下角1s
- P3355 骑士共存问题 二分建图 + 当前弧优化dinic
P3355 骑士共存问题 题意: 也是一个棋盘,规则是“马”不能相互打到. 思路: 奇偶点分开,二分图建图,这道题要注意每个点可以跑八个方向,两边都可以跑,所以边 = 20 * n * n. 然后di ...
- CodeForces 931E Game with String
Game with String 题意:有一个字符串,可以选择从第K位开始,将[K,len(s)-1]的字符都移到前面去,现在给你一个首字母,你可以再选择一位进行观察,然后猜测这个K的值是多少, 现在 ...
- yzoj 1201数字三角形3题解
题意 如下图所示为一个数字三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 请编程计算从顶至底部某处的一条路径,使该路径所经过的数字的总和最大.约定: (1)每一步可沿直线向下或右 ...
- 《Ansible自动化运维:技术与佳实践》第一章读书笔记
Ansible 架构及特点 第一章主要讲的是 Ansible 架构及特点,主要包含以下内容: Ansible 软件 Ansible 架构模式 Ansible 特性 Ansible 软件 Ansible ...
- 基于 KubeSphere CI/CD 将 Spring Boot 项目发布至 Kubernetes
本示例基于开源的 KubeSphere 容器平台 演示如何通过 GitHub 仓库中的 Jenkinsfile 来创建流水线,流水线共包括 8 个阶段,最终将一个 Hello World 页面部署到 ...