JavaEE_3_30_servlet详细介绍

1  Servlet简介

         Java用来做web开发,那么web服务端开发的精髓就是Servlet(俗称java服务端小程序),主要作用是将java程序运行到web环境中。Servlet主要通过Http协议获取客户端的请求,得到客户端通过Http协议传输的参数,对这些请求进行相应的处理,在通过response参数回传到客户端。

 

2 Servlet的创建和使用

   创建使用servlet:

            首先你得选择用一个你喜欢的eclipse(我自己用的是Spring tools suit很好哦)myeclipse就免了吧(付费,太重),下载一个eclipse,file-->new--> Dynamin Web Project(动态web项目)。输入项目名(helloServlet)选择tomcat的版本为7.0,web版本为3.0。一路点击下去,在Generatew web.xml前的选择勾选(自动帮你创建web.xml文件)。项目结构如下:

 

  • 兴建一个包 com.gu.servlet,兴建一个类HelloServlet 继承HttpServlet覆盖HttpSrevlet下面的doGet和doPost方法。来建一个最简单的servlet。代码如下:我们在doget方法中操作,通过resp来得到一个PrinterWrite,用这个PrinterWrite往页面中输出一些内容。
package com.gu.servlet;

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;

public class HelloServlet extends HttpServlet {
   
	
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter out = resp.getWriter();
		resp.setContentType("text/html;charset=UTF-8");
		out.println("<html>");
		out.println("<body><h2>hello servlet</h2></body>");
		out.println("</html>");
	}	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
}

 

  • 配置web.xml如下:其中输入servlet,接下来servlet-name可以随便定义(最好见名知义)servlet-class将刚才写的servlet的类路径配置上去。然后配置servlet-mapping,其中servlet-name就是上面配置的servlet-name必须保持一致,url-patten就是你在浏览器输入的路径,相应的路径对应相应的servlet:
    <?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
       <servlet>
          <servlet-name>helloServlet</servlet-name>
          <servlet-class>com.gu.servlet.HelloServlet</servlet-class>
       </servlet>
       
       <servlet-mapping>
          <servlet-name>helloServlet</servlet-name>
          <url-pattern>/hello</url-pattern>
       </servlet-mapping>
    </web-app> 
  • 我在web.xml设置了/hello我们现在将服务发布,在tomcat的浏览器路径里设置如下:

 

 

  •  这里我们用req.getParameter("string值")来得到从客户端传输的数据。以上是通常的得到一个字符串的方式。但是在项目中我们不是只是传字符串,很多情况下是要传输对象。用Paremeter方法就不行了,这里我们通常用Attribute代码是用做一个简单的客户端验证的:

                              

 

  •  addinput.jsp
<%@page import="com.gu.model.JspError"%>
<%@ 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>
<% JspError error = (JspError)request.getAttribute("error"); %>

<body>
   <form action="<%=request.getContextPath()%>/hello" method="post">
     用户名:<input type="text" name="username"/>
        <%
            if(error!=null){
            	%>
            	<span><%=error.getContent() %></span>          	
            	<%
            }        
        %>
     <br>
     <input type="submit" value="提交"/>    
   </form>
</body>
</html>
 
  • JspError.java
package com.gu.model;

public class JspError {
	
	private int id;
	private String content;	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}	
	public JspError(){
		
	}	
	public JspError(int id, String content) {
		super();
		this.id = id;
		this.content = content;
	}
}
 

 

  •  helloservlet的dopost方做操作
        @Override
	 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws 
            ServletException, IOException {	
		String username = req.getParameter("username");
		JspError error= new JspError(1,"请填写用户名");
		if(username==null||"".equals(username.trim())){
			System.out.println("init");
			req.setAttribute("error", error);
		    req.getRequestDispatcher("/jsp/addinput.jsp").forward(req, resp);	
		}
		PrintWriter out = resp.getWriter();
		resp.setContentType("text/html;charset=UTF-8");
		out.println("<html>");
		out.println("<body><h2>"+username+"</h2></body>");
		out.println("</html>");	
	}


  •  验证如下:



 

 

 这就是服务端验证。

 

 

 

  

   

 

猜你喜欢

转载自gurongjing.iteye.com/blog/2287403