JavaWeb笔记
一.Servlet相关注解
```text
1.注解名称
@WebServlet
2.该注解使用前提
Tomcat服务器需要支持servlet 3.0以上的规范才能使用该注解
3.@WebServlet使用
简化Servlet在web.xml中的配置
ServletDemo01
servlet01.ServletDemo01
ServletDemo01
/demo01
4.@WebServlet属性
name:指的是Servlet的名称,对应web.xml中
urlPatterns:指定Servlet映射,对应web.xml中
可以指定多个映射
value:value属性和urlPatterns属性含义相同,都是指定url映射,但是如果我们在注解中只指定一个属性值,可以省略value属性名
```java
/**
* @WebServlet中的属性
* name:指的是Servlet的名称,对应web.xml中
* urlPatterns:指定Servlet映射,对应web.xml中
* value:value属性和urlPatterns属性含义相同,都是指定url映射,但是如果我们在注解中只指定一个属性值,可以省略value属性名
*/
//@WebServlet(name = "ServletDemo01",urlPatterns = {"/ServletDemo01","/demo01"}) 正常
//@WebServlet(urlPatterns = "/ServletDemo01") 简化
@WebServlet("/ServletDemo01") //利用value属性可以省略的特性,更为简化
public class ServletDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("ServletDemo01");
}
}
二.修改注解创建Servlet模板
通过修改模板来简化我们的操作,不需要每次新建Servlet文件时都对@WebServlet注解进行修改
三.在IDEA中模拟HTTP请求
可以避免IDEA开发工具和浏览器之间反复切换 新建一个http格式的文件,在里面书写GET/POST请求 ### 模拟浏览器向指定的服务器地址发出 GET请求 //@no-cookie-jar GET http://localhost:8080/day10_Response/ServletDemo01 ###
四.ServletConfig对象
1>在web.xml中添加配置信息
1.ServletConfig对象可以用来封装一些关于Servlet配置信息
2.两种方法
a.在web.xml中配置初始化参数
ServletConfigDemo01
servletconfig01.ServletConfigDemo01
charset
UTF-8
ServletConfigDemo01
/config01
b.通过注解方式配置Servlet初始化参数
@WebServlet(value = "/config02",initParams = @WebInitParam(name="charset",value = "UTF-8"))
3.获取初始化参数
System.out.println(getServletConfig().getInitParameter("charset"));
2>在@WebServlet注解中添加配置信息
/*
* initParams = @WebInitParam(name="charset",value = "UTF-8")
* 相当于:
*
charset
UTF-8
*/
@WebServlet( value = "/ServletConfigDemo02" ,initParams = @WebInitParam(name="charest",value="GBK"))
public class ServletConfigDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//利用getServletConfig()方法获取ServletConfig对象,调用getInitParameter()方法来获取参数
System.out.println(getServletConfig().getInitParameter("charest"));
}
}
五.ServletContext对象
1.ServletContext代表当前web应用,每个web应用都只有唯一一个ServletContext对象
2.使用ServletContext来获取资源在硬盘上真实路径
/**
* 利用ServletContext的方法获取资源在硬盘上的真实路径
* public String getRealPath(String path):传入一个虚拟路径,返回一个资源真实路径
* InputStream getResourceAsStream(String path):传入一个虚拟路径,返回资源真实路径的输 入流
*/
注意:书写虚拟路径,以/开头,/代表当前应用
3.作为域对象使用
可以在ServletContext中存放一些key=value键值对,这些键值对可以被当前应用下的所有Servlet 共享
/**
* ServletContext对象中的方法:
* void setAttribute(String name, Object object):向ServletContext对象存入key=value键值对
* public Object getAttribute(String name):根据name(key)取出对应的value
*/
1>利用getRealPath()方法获取绝对路径,读取db.properties文件
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取db.properties在硬盘的绝对路径
String realPath = getServletContext().getRealPath("/WEB-INF/classes/db.properties");
//通过Properties类获取db.properties里面的键值对信息
Properties properties = new Properties();
//利用输入流读取到db.properties文件
FileInputStream fileInputStream = new FileInputStream(realPath);
//将db.properties里的键值对写入到properties对象中
properties.load(fileInputStream);
System.out.println(properties);
}
2>getResourceAsStream()方法读取db.properties文件
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream resourceAsStream = getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
System.out.println(properties);
}
3>利用setAttribute()方法向ServletContext对象存入key=value键值对
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = getServletContext();
String[] users = {"Jack","John","GGbond"};
servletContext.setAttribute("username",users);
//每个web应用都只有唯一一个ServletContext对象,所以上下两个对象实际上是同一个对象
String[] username =(String[]) getServletContext().getAttribute("username");
Arrays.stream(username).forEach(System.out::println);
}
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!







