`

java web 第一个实例

阅读更多
按照java ee规范,一个标准的java web应用程序由以下四个部分组成:
1,项目根目录,包括各种网页文件和其他可以被用户访问的资源,如声音,图像等
2,web-inf/web.xml文件,应用程序描述符
3,web-inf/lib,所需的jar包
4,web-inf/classes,编译后的java类文件
第一个web应用程序:
在myeclipse下新建一个web项目,然后创建各种网页文件,默认位于WebRoot目录下,
结构图见下面:



主要的servlet类代码如下:
package com.qdu.sun;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginSvlt extends HttpServlet {
	private String username; //页面传过来的用户名和密码
	private String password;

	/**
	 * Constructor of the object.
	 */
	public LoginSvlt() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		username = request.getParameter("username"); //从请求从获取用户名参数
		password = request.getParameter("password");
		if(username.equals("zjm")&&password.equals("123")){ //简化了,未连接数据库
			HttpSession session = request.getSession(true);
			session.setAttribute("username", username);   //将信息保留到session中,以便下面的页面读取
			response.sendRedirect("welcome.jsp");
		}
		else{
			response.sendRedirect("error.jsp");
		}
		
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

过滤器代码:
package com.qdu.sun;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

//过滤器
public class FormFilter implements Filter{
	
	/**
	 * Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所 有的
	 * HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只 需要用新的 Request
	 * 对象替换页面中的 request 对象即可.
	 */
	class Request extends HttpServletRequestWrapper {
		public Request(HttpServletRequest request) {
			super(request);
		}

		/**
		 * 转换由表单读取的数据的内码. 从 ISO 字符转到 GBK.
		 */
		public String toChi(String input) {
			try {
				byte[] bytes = input.getBytes("ISO8859-1");
				return new String(bytes, "GBK");
			} catch (Exception ex) {
			}
			return null;
		}

		/**
		 * Return the HttpServletRequest holded by this object.
		 */
		private HttpServletRequest getHttpServletRequest() {
			return (HttpServletRequest) super.getRequest();
		}

		/**
		 * 读取参数 -- 修正了中文问题.
		 */
		public String getParameter(String name) {
			return toChi(getHttpServletRequest().getParameter(name));
		}

		/**
		 * 读取参数列表 - 修正了中文问题.
		 */
		public String[] getParameterValues(String name) {
			String values[] = getHttpServletRequest().getParameterValues(name);
			if (values != null) {
				for (int i = 0; i < values.length; i++) {
					values[i] = toChi(values[i]);
				}
			}
			return values;
		}
	}
	
	
	

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException { //过滤器主要应该实现的方法
		HttpServletRequest httpreq = (HttpServletRequest) request;
		if (httpreq.getMethod().equals("POST")) {
			request.setCharacterEncoding("GBK");
		} else {
			request = new Request(httpreq);      
		}
		chain.doFilter(request, response);
		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	
}

web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 <!-- 以下是新建servlet后自动生成的关于servlet的配置 -->
 <servlet>
  <description>This is the description of my J2EE component</description>
  <display-name>This is the display name of my J2EE component</display-name>
  <servlet-name>LoginSvlt</servlet-name>
  <servlet-class>com.qdu.sun.LoginSvlt</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>LoginSvlt</servlet-name>
  <url-pattern>/servlet/LoginSvlt</url-pattern>
  <!-- servlet的最终访问路径是http://localhost:8080/firstWeb/servlet/LoginSvlt -->
 </servlet-mapping>
 <!-- 以上是新建servlet后自动生成的关于servlet的配置--> 
<!-- 以下是过滤器的配置 -->
 
 <filter>
  <description>过滤器</description>
  <display-name>FormFilter</display-name>
  <filter-name>FormFilter</filter-name>
  
  <filter-class>com.qdu.sun.FormFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>FormFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>


发布和运行Web项目,有两种发布方式,散包发布和打包发布。
散包发布一般在程序开发和测试阶段使用,Myeclipse将web项目中的文件按照java ee规范的目录结构放置在服务器的发布目录下,如Tomcat/webapps。但并非所有服务器都支持散包发布java ee规范只要求所有服务器都必须支持打包发布。
打包发布一般是应用在把web应用产品化的时候,将所有的web项目中的问卷按照java ee规范打包成单个的war文件,然后放置到服务器的发布目录下。
本实例选用Tomcat 6的散包发布
  • 大小: 20.9 KB
分享到:
评论

相关推荐

    Java Web开发实例大全

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 实战讲解 全套PPT课件 共10个章节.rar

    Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第05章 宠物分类展现模块的第一个动态版本实现(共31页).ppt Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第06章 用JavaBean、EL和JSTL优化...

    Java网络编程 JAVA web开发实例讲解 第08章 用Struts完善宠物商城的catalog模块(共37页).ppt

    Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第05章 宠物分类展现模块的第一个动态版本实现(共31页).ppt Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第06章 用JavaBean、EL和JSTL优化...

    Java Web开发实例大全(基础卷) 完整pdf扫描版[179MB]

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 ...

    Java EE Web开发实例精解完整光盘

    JAVA EE Web应用系统从逻辑上可划分为表现层、业务层和持久层,为了使读者对JAVA EE编程技术获得全面系统的了解,《Java EE Web开发实例精解》以JAVA EE Web应用系统的逻辑加构为主线,通过多个典型工程实例对上述三...

    用Java开发一个小型的Web实例

    平台版本:MyEclipse 6.5、apache-tomcat-6.0.18、Mysql server 5.0 安装步骤,代码修改,详细解说,对初学者了解及认识Java开发Web项目提供了很好的入门知识,第一个小项目可能会跌跌撞撞,但是只要认真思考,一定...

    Java Web开发实战1200例(第1卷).(配书光盘).part01

    本文档是《Java Web开发实战1200例(第I卷)》(清华大学出版社.卢瀚.王春斌)一书的配套光盘。...因原光盘体积较大,但主要内容均为源程序,难以精简,所以直接将光盘内容打包成17部分,这是第1部分。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 ...

    Tomcat 与Java web开发技术详解(孙卫琴)

    由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此本书讲解的Java Web应用例子可以运行在任何一个实现了SUN的Servlet规范的Java Web服务器上。随书附赠光盘的内容为本书范例的源程序,以及本书...

    Tomcat与Java Web开发技术详解 孙卫琴 源码

    由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此《Tomcat与Java Web开发技术详解》讲解的Java Web应用例子可以运行在任何一个实现了SUN的Servlet规范的Java Web服务器上。随书附赠光盘的内容为...

    Java Web编程宝典

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    Tomcat与Java Web开发技术详解(第2版).part1.rar

    由于java web技术是sun公司在java servlet规范中提出的通用技术,因此本书讲解的java web应用例子可以运行在任何一个实现了sun的servlet规范的java web服务器上。随书附赠光盘的内容为本书范例的源程序,以及本书...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 ...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    Java Web开发入门很简单源代码

    第1篇为准备篇,主要为Java Web开发概述,并手把手带领读者一块搭建Java Web开发环境;第2篇为基础篇,主要介绍HTML、CSS、JavaScript、Servlet、JSP和JavaBean等Java Web开发所需的基础知识,并对这些基础知识进行...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java web开发实战1200例第i卷

    java web开发实战1200例第i卷 1-12源码 希望对你有所帮助,谢谢

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之中 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务...

Global site tag (gtag.js) - Google Analytics