木舟0基础学习Java的第二十五天(JavaWeb)

XML 概念和体系

XML指可扩展标记语言(EXtensible Markup Language)

XML没有预定义标签 需要自定义标签 <标签></标签>

XML特点

XML数据以纯文本格式存储

实现不同应用程序之间的数据通信

实现不同平台数据通信

实现不同平台的数据共享

使用XML将不同的程序 不同的平台联系起来

XML作用

数据存储和数据传输

可以用来做配置文件

Javaee开发中用XML来做配置文件 SSM DUBOO 分布式框架等等

XML和HTML的差异

HTML中的标签是已经设计好的 需要学习使用

XML中的标签为自定义的 以<标签><标签/>格式定义即可

XML模板和注意事项

<?xml version="1,0" encoding="utf-8" ?>
<!--声明必须写在第一行,对当前xml文档进行约定-->
<!--version:指定解析当前xml文件 解析器的版本为1.0-->
<!--encoding:当前文档的编码类型 文档编码要和保存文件时的编码一致 不然会乱码-->

<!--有两个学生 张三和李四 姓名 年龄 学号-->
<stus>
    <stu>
        <name>张三</name>
        <age>23</age>
        <desc><![CDATA[<a href="http://www.baidu.com">点击跳转页面</a>]]></desc><!--一般不会这么写-->
    </stu>
    <stu>
        <name>李四</name>
        <age>24</age>
    </stu>
</stus>

1.有且只有一个根元素

2.xml文档声明必须放在第一行

3.所有标签必须成对出现

4.标签严格区分大小写

5.元素可以嵌套其他元素

6.属性值必须加引号

XML元素

元素是指开始标签到结束标签的部分

一个元素中可以包含:其他元素 普通文本 属性 以上的混合

读取XML文件

方法1

dom4j-1.1.jar

public class mainTest {
    public static void main(String[] args){
        try {
            System.out.println("hello word!");
            //创建读取对象
            SAXReader reader=new SAXReader();
            //指定解析的xml源     reader.read(new File("src/com/muzhou/xml/stus.xml")).var;
            Document document = reader.read(new File("src/com/muzhou/xml/stus.xml"));
            //得到根元素 root    document.getRootElement().var;
            Element rootElement = document.getRootElement();
            /*System.out.println(rootElement.getName());//stus
            System.out.println(rootElement.element("stu").getName());//stu
            System.out.println(rootElement.element("stu").element("name").getName());//name
            System.out.println(rootElement.element("stu").element("age").getName());//age
            System.out.println(rootElement.element("stu").element("name").getText());//张三
            System.out.println(rootElement.element("stu").element("age").getText());//23
            System.out.println(rootElement.element("stu").element("name").getStringValue());//张三*/
            List<Element> elements = rootElement.elements();
            for (Element e : elements) {
                String name=e.element("name").getText();
                String age=e.element("age").getText();
                System.out.println(name+"---"+age);
            }
        } catch (DocumentException e) {
            throw new RuntimeException(e);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }
}

方法2

jaxen-1.1.2.jar

public class XpathTest {
    public static void main(String[] args) {
        try {
            SAXReader reader=new SAXReader();
            Document document = reader.read(new File("src/com/muzhou/xml/stus.xml"));
            Element rootElement = document.getRootElement();
            //Xpath
            Element element =(Element) rootElement.selectSingleNode("//desc");
            System.out.println(element.getText());
            List<Element> list= element.selectNodes("//name");
            for (Element element1 : list) {
                System.out.println(element1.getText());
            }
        } catch (DocumentException e) {
            throw new RuntimeException(e);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
    }
}

TOMCAT

下载tomcat免安装版 解压

找到conf-logging.properties修改

将GBK 修改为 UTF-8

找到bin目录下startup.bat 测试是否可以连接

如果打不开或闪退 

先检查环境变量JAVA_HOME配置的jdk是否正确

还是闪退就在startup.bat头上加这两句

SET JAVA_HOME=E:\Java\Jdk     //jdk配置的地址
SET TOMCAT_HOME=E:\tomcat\apache-tomcat-9.0.37     //tomcat配置的地址

WEB

IDER最新版创建web项目

1.先创建一个普通项目

2.鼠标右键项目名,后点击 Add Framework Support(添加项目支持)

3.依次点击 Edit Configurations… >> Add new… >> Tomcat Serve 下的 Local,而后点击OK

4.依次点击页面中的 Deployment >> + >> Artifact… 后点击OK

WEB架构

dao:数据访问层 

pojo:实体类

service:业务层

util:放工具类

项目需要继承HttpServlet 重写service方法

@WebServlet("/loginUser")
public class LoginServlet extends HttpServlet {
    @Override//只用来处理get请求 一般不写 因为继承了HttpServlet重写了service方法 service方法中包含了该方法
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet被调用了");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service方法");
        String uname = req.getParameter("uname");
        String pwd = req.getParameter("pwd");
        System.out.println(uname+"---"+pwd);
        //模拟数据校验
        if("admin".equals(uname) && "123456".equals(pwd)){
            //给浏览器响应数据
            resp.getWriter().write("success");
        }else{
            resp.getWriter().write("fail");
        }
    }

    @Override//只用来处理post请求 一般不写 因为继承了HttpServlet重写了service方法 service方法中包含了该方法
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost被调用了");
    }
}
@WebServlet("/myweb")//这个注解是告诉浏览器访问当前java类的网络地址名称
public class MyServlet extends HttpServlet {//HttpServlet可以基于tomcat服务器开发的java程序
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //resp在浏览器上响应数据
       resp.getWriter().write("this is my first web project");
       //req用来接受浏览器上提交的数据
        String uname = req.getParameter("uname");
        System.out.println("服务器收到浏览器发送的数据:"+uname);
    }
}

修改js基础配置模板

Settings>>Editor>>Code Style>>File and Code Templates>>Other>>JSP files>>jsp File.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath(); //获取当前工程的根目录
String basePath = request.getScheme() + "://" + request.getServerName() + ":"+ request.getServerPort();
%>
<html>
<head>
<base href="<%=basePath%>"><!--这个让此文件下的路径都相对于当前工程开始-->
<title>Title</title>
</head>
<body>
</body>
</html>

jsp连接servlet

方法1:配置文件

 <servlet>
        <servlet-name>bbb</servlet-name>
        <servlet-class>com.muzhou.MyWeb</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>bbb</servlet-name>
        <url-pattern>/bbb</url-pattern>
    </servlet-mapping>

方法2:注释连接  @WebServlet("/aaa")

//生命周期 init>service>destroy
//init 在程序第一次被调用时执行 只能执行一次
//service 每次程序被调用时都会执行
//destroy 在程序结束时或移除项目时执行一次
@WebServlet("/aaa")
public class MyWeb extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doget");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String name=req.getParameter("uanme");
        String pwd =req.getParameter("pwd");
        if("admin".equals(name)&&"123456".equals(pwd)){
            resp.getWriter().write("登录成功");
        }else{
            resp.getWriter().write("登录失败");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("dopost");
    }
    //初始化
    @Override
    public void init() throws ServletException {
        System.out.println("程序开始时:初始化");//只会被调用一次
        //如果项目部署数据量大时 可以在配置文件中配置<load-on-startup>2</load-on-startup>
        //让init方法提前被调用 配置load后init的生命周期变为 从服务器开启到服务器关闭一直被调用
    }
    //销毁
    @Override
    public void destroy() {
        System.out.println("程序结束时:销毁");//服务器停止时调用该方法
    }
}

servlet进网站的错误

404 资源未找到 原因:请求地址中servlet别名书写错误或者项目名称拼写错误

500 内部服务器错误 原因:Java代码有误

或者报错:classnotfoundexception:com.my.servlet.myservlet

原因1:web.xml 全限定路径有误<servlet-class>com.web.MyServlet</servlet-class>

原因2:service 方法体service(req,resp)代码执行错误

405 请求方式不支持 与servlet中的方法不匹配 尽量使用service方法处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值