• Servlet(2)—java项目下web应用程序


    1. 在java项目下手动写一个web程序

      • 步骤:
        ①创建一个java项目并在根目录创建一个WebContent目录文件
        ②WebContent下创建WEB-INF目录文件
        ③WEB-INF下创建classes和lib目录文件以及web.xml文件
        ④在项目根目录下的src目录文件中创建一个Person类,构造一个返回字符串的方法,将编译后得到的.class文件复制到
        创建的classes文件中去(该.class文件在项目bin文件夹下,该文件夹在eclipse中并没有显示)
        ⑤创建一个jsp页面,在页面中创建Person实例,并调用方法
        ⑥把WebContent复制到tomcat中的webapp目录下,启动tomcat
        ⑦在浏览器中输入http://localhost:8080/manager/html,进入到tomcat管理页面中,点击项目WebContent
        ⑧运行项目之后,在浏览器中访问http://localhost:8080/helloworld/hello.jsp,在命令提示符中就会显示出,返回的字符串。

      • 目录结构
        -WebConrtent
        -WEB-INF(固定不可变)
        -classes(固定不可变)
        -lib
        -web.xml
        HTML页面
        JSP页面
        图片

      • 问题:以上步骤需要两部复制目录文件,一次是复制.class文件,再一次是复制WebContent目录文件,操作麻烦。

        1.解决复制.class文件的办法:可以修改.class文件的默认生成目录,在项目上右键Build Path——>
        Configure Build Path——>中间点击Source,
        下面default out folder即是默认的.class文件的生成目录,修改即可。
        2.解决复制Context文件的办法:首先在E:apache-tomcat-7.0.55confCatalinalocalhost路径下创建一个.xml
        文件,路径没有就创建一个,文件命名随意,如“hello.xml”,文件内容:

    <Context path="\test" 
            docBase="E:\workspace\Demo5\WebContent" reloadable="true"/>

    其中path的值随意,docBase的值为第一步所创建的context的文件路径,即实际文件路径。
    reloadable是指当修改了docBase下的classes目录中的.class文件后,tomcat是否重新加载web应用 。
    重新访问项目时,在tomcat管理程序中可以看到xml文件的名字,或者在浏览器中输入:
    http://localhost:8080/hello/hello.jsp,其中hello便是创建的xml文件,hello.jsp是创建的context
    目录下的jsp文件。
    注意:.class文件一定要在classes目录中

    • 创建的java文件和jsp文件及内容
      java文件:
    package test;
    public class Person {
        public String getInfo(){
            return "Person....." ;
        }
    }

    jsp文件:

    <%@ page import="test.Person"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                          "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <%
            Person person = new Person();
            System.out.println(person.getInfo());
        %>
        hello World!
    </body>
    </html> 

    注意:请求一个页面时,页面上所运行的程序或者类是一个方法,同时根据web.xml中Servlet的配置文件运行另外的java类是另一方法。一个是页面请求根据配置文件,访问servlet,另一个是直接访问这个Servlet
    比如:这个hello.jsp页面中用到了Person类,但是根据web.xml配置文件中,Servlet节点hello,就用到了HelloServlet类
    运行jsp页面使用:http://localhost:8080/Demo4/hello.jsp
    运行Servlet:http://localhost:8080/Demo4/hello

  • 相关阅读:
    Progressbar
    winform c# 打包
    WinForm中给DataGridView添加 自动编号
    ASP.NET页面的CheckBoxList组件
    C#截取DOS命令输出流取得网卡MAC地址
    get; set ; 害的我搞了一天
    WinForm(C#) 引用app.config文件中的数据库
    WinForm编程中 Enter自动登录设置
    vs新建解决方案,添加新项目,为什么不在解决方案中显示
    使用delegate实现两窗体传参代码
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10453994.html
Copyright © 2020-2023  润新知