欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > JavaWeb笔记_Servlet补充

JavaWeb笔记_Servlet补充

2024/10/24 12:33:24 来源:https://blog.csdn.net/m0_65469669/article/details/140446415  浏览:    关键词:JavaWeb笔记_Servlet补充

一.Servlet相关注解

 ```text1.注解名称@WebServlet2.该注解使用前提Tomcat服务器需要支持servlet 3.0以上的规范才能使用该注解3.@WebServlet使用简化Servlet在web.xml中的配置<servlet><servlet-name>ServletDemo01</servlet-name><servlet-class>servlet01.ServletDemo01</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo01</servlet-name><url-pattern>/demo01</url-pattern></servlet-mapping>4.@WebServlet属性name:指的是Servlet的名称,对应web.xml中<servlet-name>urlPatterns:指定Servlet映射,对应web.xml中 <url-pattern>可以指定多个映射value:value属性和urlPatterns属性含义相同,都是指定url映射,但是如果我们在注解中只指定一个属性值,可以省略value属性名
```java
/*** @WebServlet中的属性*     name:指的是Servlet的名称,对应web.xml中<servlet-name>*     urlPatterns:指定Servlet映射,对应web.xml中 <url-pattern>*     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("<b>ServletDemo01</b>");}
}

二.修改注解创建Servlet模板

通过修改模板来简化我们的操作,不需要每次新建Servlet文件时都对@WebServlet注解进行修改

三.在IDEA中模拟HTTP请求

   可以避免IDEA开发工具和浏览器之间反复切换新建一个http格式的文件,在里面书写GET/POST请求### 模拟浏览器向指定的服务器地址发出 GET请求//@no-cookie-jarGET http://localhost:8080/day10_Response/ServletDemo01###

四.ServletConfig对象

1>在web.xml中添加配置信息

 1.ServletConfig对象可以用来封装一些关于Servlet配置信息2.两种方法a.在web.xml中配置初始化参数<servlet><servlet-name>ServletConfigDemo01</servlet-name><servlet-class>servletconfig01.ServletConfigDemo01</servlet-class><!--在这个Servlet中配置一些初始化参数--><init-param><param-name>charset</param-name><param-value>UTF-8</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigDemo01</servlet-name><url-pattern>/config01</url-pattern></servlet-mapping>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")
*  相当于:
*     <init-param><param-name>charset</param-name><param-value>UTF-8</param-value></init-param>
*/
@WebServlet( value = "/ServletConfigDemo02" ,initParams = @WebInitParam(name="charest",value="GBK"))
public class ServletConfigDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected 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);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com