您的位置:首页 > 编程语言 > Java开发

JavaEE_3_30_servlet详细介绍

2016-03-31 16:32 531 查看

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>");
}
  •  验证如下:



 

 

 这就是服务端验证。

 

 

 

 

 

  

   

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: