web基础笔记

第二章web

1 dom4j
1.1 基本操作
SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("dynamic_scheduled/src/main/resources/students.xml");
        //获取根元素
        Element rootElement = document.getRootElement();
        //获取根元素下的所有子元素
        List<Element> elements = rootElement.elements();
//        System.out.println(elements.size());
        for (Element stu : elements) {
            //获取元素的属性
            String id = stu.attributeValue("id");
            //获取元素的子元素
            Element name = stu.element("name");
            //获取元素的值
            String nameText = name.getText();
//            System.out.println(id);
//            System.out.println(nameText);
            Document createDoc = DocumentHelper.createDocument();
            Element root = createDoc.addElement("root");
            //<root id="3"/> 添加元素属性
            Element id3 = root.addAttribute("id", "3");
            //<root id="3"><class class_code="001"/></root>
            root.addElement("class").addAttribute("class_code","001");
            String xml = createDoc.getRootElement().asXML();
            System.out.println(xml);
1.2 引入xpath快速查找

注意:

​ 1. 以’/a’开头,是在/前的路径下查找a

		2. 以'//a'开头,全文查找a
		2. //a[1]  表示查找a下的第一个子元素
		2. //a[@id] 表示查找a下的有id属性的元素
		2. //a[@id='1'] 表示查找a下有id=1属性的元素
//rootElement 略  没有指定Element 需要强转
List<Element> list = rootElement.selectNodes("//student[@id='2']");
            list.forEach(e -> {
                System.out.println(e.attributeValue("id"));
                System.out.println(e.selectSingleNode(".//age").getText());
            });
1.3 request xml
ServletInputStream inputStream = request.getInputStream();
        BufferedReader bri = new BufferedReader(new InputStreamReader(inputStream));
        char[] buff = new char[1024];
        int len ;
        StringBuilder builder = new StringBuilder();
        while ((len = bri.read(buff))!=-1){
            for (int i = 0; i < len; i++) {
                builder.append(buff[i]);
            }
        }
        String xml = builder.toString();
        SAXReader saxReader = new SAXReader();
        Document doc = saxReader.read(new ByteArrayInputStream(xml.getBytes("UTF-8")));
        Element rootElement = doc.getRootElement();
        Element node = (Element) rootElement.selectSingleNode("//student[@id=2]");
        Element node1 = (Element) node.selectSingleNode(".//name");
        String text = node1.getText();
        System.out.println(text);
        return xml;
2 servlet
2.1 web.xml的配置
<!--让tomcat创建servlet对象-->
<servlet>
        <!--给这个servlet起一个别名,要和映射的路径名字对应即可-->
        <servlet-name>FirstServlet</servlet-name>
        <!--映射的路径会被这个类进行处理,一定要全类名,容器会利用反射创建对象-->
        <servlet-class>com.example.web_tomcat.FirstServlet</servlet-class>
    </servlet>
    <!--映射需要有servlet来进行处理-->
    <servlet-mapping>
        <!--这里的名字与要被处理的servlet的名字一致-->
        <servlet-name>FirstServlet</servlet-name>
        <!--请求的路径,前面的'/'不可省略,它代表 localhost:8080/project/-->
        <url-pattern>/firstServlet</url-pattern>
    </servlet-mapping>

<!--请求不加'/' 相对路径-->
<a href="firstServlet">First Servlet</a>
2.2 注解的配置
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {}

<a href="hello-servlet">Hello Servlet</a>
2.3 servlet的生命周期
1.构造器
    用来创建对象,第一次发送请求时调用的,并且整个生命周期只会调用一次,说明servlet是单例的
2.init(ServletConfig servletConfig)
    用来对对象进行初始化,第一发送请求时调用的,在整个生命周期过程只会调用一次
3.service(ServletRequest servletRequest, ServletResponse servletResponse)
    用来处理请求,每次调用都会调用
4.destroy()
    用来销毁对象,服务器关闭时调用,用来销毁servlet对象

2.4 servletConfig\servletContext

servletConfig的作用

​ 获取当前servlet的配置信息:

​ 1.获取当前servlet的名称 eg:

​ 2.获取当前servlet的初始化参数

​ 3.获取servletContext对象

 public void init(ServletConfig servletConfig) throws ServletException {
            servletConfig.getServletName();
            servletConfig.getInitParameter("user");
            servletConfig.getServletContext();
    }

servletContext的作用

​ 它代表了整个web应用程序:

​ 1.获取web应用的初始化参数

​ 2.获取资源在服务器端的真实路径

​ 3.它是一个域对象

<context-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
 </context-param>

servletContext.getInitParameter("encoding");
servletContext.getRealPath("/index.jsp");
2.5 request\response

request的作用:浏览器 —> 服务器

​ 1.获取请求参数

​ 2.获取虚拟路径

​ 3.转发

request.getParameter("username");
request.getContextPath();
RequestDispatcher requestDispatcher = request.getRequestDispatcher("success.html");
requestDispatcher.forward(request,response);

response的作用: 服务器—>浏览器

​ 1.给浏览器响应

​ 2.重定向(code:302)

PrintWriter writer = response.getWriter();
writer.write("success");
response.sendRedirect("success.html");

重定向与转发的区别?

重定向会发送两次请求,第一次没有找到页面,第二次会请求指定的页面

转发只有一次请求

重定向的路径是请求页面的路径,由原来的请求到页面的请求路径,转发的路径是第一次请求的路径,存在着多次提交请求,路径不变

转发可以访问WEB-INF的资源,共享request域的数据,重定向不可以

3 filter
@WebFilter(filterName = "firstFilter",value = "/index.jsp")
public class FirstFilter implements Filter {
    //构造器是第一次请求默认给提供的
    
    //用来创建对象,第一次发送请求时调用的,并且整个生命周期只会调用一次
    public void init(FilterConfig filterConfig) 
	
        //每次请求都会调用
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("先拦截一个jsp");
        filterChain.doFilter(servletRequest,servletResponse);//放行
        sout("返回")
        //请求完,还要经过这里,才能返回页面
    }
    
    public void destroy() { }
3.1 匹配规则
urlPatterns
	前缀 /pages/*
	后缀 *.jsp
注意:以下是失效的
	/pages/*.jsp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值