手工创建一个Web工程
2009-12-19 23:45
323 查看
1、手工创建一个Web工程
作为一个java web开发程序员,手工创建一个Web工程应该是必须会的。 首先我们必须了解Java web工程的基本机构和每个部分究竟完成什么样的作用。1. 创建一个文件,比如MyFirstWebProject, 此为web工程的根目录
2. 在其下建立WEN-INF文件夹,必须注意的是要大写, 因为这是规范,方便WEB容器的读取。
3. 在WEB-INF下建立两个文件夹和一个文件,分别叫做:lib、classes文件夹和web.xml文件。 lib用于存放需要用到的jar包等,包括mysql驱动等;classes文件夹用于存放编译好了的java文件,它们是以class文件存在在这个目录下的;最后是web.xml文件,它必须以<web-app>作为该xml文件的根标签。
4. 在工程MyFirstWebProject目录下建一个文件夹pages(这不是必须的)用于存在index.html等页面,把需要的页面写好放在该文件夹下面就可以了。
5. 将整个工程打成war包,放入tomcat或jboss等web容器的webapp目录下,启动容器,则通过http://localhost:8080/MyFirstWebProject/pages/index.html就可正常访问html页面了。 打war可以在进入工程MyWebProject中,用"jar -cvf MyFirstWebProject.war ."即可。
6. 在Tomcat6.0上经过测试,以上的做法是正确的。 同时注意, 如果没有配置JAVA_HOME的环境变量,直接点击Tomcat6.0会迅速消失, 此时应该用命令行启动。
2、Web常用方法
【注意】action是以Web程序的根目录作为相对参照物,“../servletForm”表示在本页面上面的一级目录来找到servletForm, 而"/servletForm"则以在web.xml中的配置为参考,它是在'/'根下面。
<form action="../servletForm" method="get"> username: <input type="text" name="uname"> <input type="submit" value="提交"> </form>
(1)页面Form表单
index.html
<form method="get" action="handle"> <table> <tr> <th><label for="usercode">工号</label></th> <td><input type="text" id="usercode" name="usercode" /></td> </tr> <tr> <th><label for="ip">机器IP</label></th> <td><input type="text" id="ip" name="ip" /></td> </tr> <tr> <th><label for="reason">申请原因</label></th> <td><input type="text" id="reason" name="reason" /></td> </tr> <tr> <th><label for="submit"></label></th> <td> <button type="submit" id="submit" name="submit">submit</button> <label for="reset"></label> <button type="reset" id="reset" name="reset">reset</button> </td> </tr> </table> </form>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>server.manager</display-name> <servlet> <servlet-name>default</servlet-name> <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> <init-param> <param-name>useFileMappedBuffer</param-name> <param-value>false</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>HandleServlet</servlet-name> <servlet-class>com.alibaba.servermanager.HandleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HandleServlet</servlet-name> <url-pattern>/handle</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
(2)Servlet处理及跳转
import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public class HandleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String usercode = request.getParameter("usercode"); HttpSession session = request.getSession(); session.setAttribute("usercode", usercode); System.out.println("usercode: " + usercode); response.sendRedirect("success.jsp"); } }
或者使用request来传递数据:
request.setAttribute("hello", "Hello World"); request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);
(3) jsp接收数据
<body> susercode: <%=session.getAttribute("usercode") %> </body>
或在jstl_el.jsp页面中通过request方式取出参数
<body> <li>普通字符串</li><br> hello(jsp脚本):<%=request.getAttribute("hello") %><br> hello(el表达式,el表达式使用$和{}):${hello }<br> </body>
(4)配置tomcat的虚拟目录
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="" reloadable="true" />
</Host>
Tomcat的conf\server.xml文件中上面配置 context的reloadable属性的时候,设置了path和docBase,
如果说path是Tomcat的wabapps目录下的项目名称,那么docBase是设置的那个路径呢?
答疑:
path对应的是我们每次在访问一个网站的时候在浏览器上输入的虚拟目录路径,而服务器上的具体的对应的目录就是docBase。实际上二者是一个映射过程。
<Context path="/helloworld" docBase="d:\demoes\webdemo\WebRoot" reloadable="true" />
则可通过http://localhost:8080/helloworld/index.jsp来访问目录d:\demoes\webdemo\WebRoot下面的index.jsp页面。
============================================================
问题1:几秒之后自动跳转
2秒之后自动跳转,示例如下:
<meta http-equiv="refresh" content="2;URL=/page/frame/main.html">
或者
<script type="text/javascript"> location="/page/frame/main.html" </script>
问题2:在jetty中允许修改页面,不锁定,在web.xml中配置如下:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> <init-param> <param-name>useFileMappedBuffer</param-name> <param-value>false</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>
相关文章推荐
- 学习 webpack+vue.js (1、先随便创建一个工程)
- 在MyEclipse下创建并部署一个Web工程
- 手动创建一个标准web工程
- IntelliJ IDEA 部署Tomcat及创建一个web工程
- 使用Eclipse EE(汉化版) 创建一个JavaWeb工程
- eclipse怎么创建一个web工程
- 使用Eclipse EE(汉化版) 创建一个JavaWeb工程
- (一)maven-- 创建一个maven web工程
- Maven教程-使用eclipse插件创建一个web工程(不使用archetype)
- 【Java_SSM】(二)使用eclipse创建一个Maven web工程
- IntelliJ IDEA 部署Tomcat及创建一个web工程
- 创建一个web-api工程
- 创建一个helloworld springmvc的web工程
- 使用myeclipse创建一个上传文件的web工程
- 一个简单的JSPweb工程创建过程
- 创建一个规范的iOS工程(xcode8新特性)
- Xcode 在创建工程时,文件名默认有一个自己专有的前缀
- idea 创建 maven web 工程流程(图文教程)
- myeclipse新建一个web工程竟然没有web.xml文件
- 使用maven创建一个简单的liftweb网站样例