Servlet的使用

来源:互联网 发布:再生聚酯切片进口数据 编辑:程序博客网 时间:2024/06/05 02:06

WebProject的建立

(建立一个服务器)

可以直接在MyEclipse下建一个web工程;方便很多。

我是在Eclipse 下建的,需要手动建

1.新建一个工程,一个包,一个类,

2.建一个lib文件夹,将servlet-api.jar(tomcat 安装目录下的lib文件夹下有)copy进去,通过buildpath导入这个三方包

3.然后这个类就可以继承HttpServlet,重写里面的doGet 或者doPost方法来进行响应

4.在工程下面建一个WebRoot(名字可以自定义)文件夹,下面建一个

WEB-INF(必须一致),里面有一个classes文件夹和一个web.xml,如果在其他html(action)需要向此servlet服务器发送请求,就将他copy到WebRoot文件夹下

5.依照下面的路径将class文件制定到classes文件夹下


6.下面就是web.xml里面的内容

访问url<url-pattern> <servlet-mapping>中的(eg:http:localhost:8080/WEBROOT/test)

获得他的<servlet-name>,再到<servlet>中通过这个名字找到他的class

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"><servlet><servlet-name>testapp</servlet-name><servlet-class>com.android.app.MyApp</servlet-class></servlet><servlet-mapping><servlet-name>testapp</servlet-name><url-pattern>/test</url-pattern></servlet-mapping></web-app>


7.class代码,服务器的响应

package com.android.app;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyApp extends HttpServlet {/* * 客户端通过GET请求 */@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 处理乱码方式一resp.setContentType("text/html;charset=UTF-8");/* 通过这个key标签得到客户端传过来的参数 */// req.getParameter("key");/* 服务器给出的回应 */resp.getWriter().write("hello你好");}/* * 客户端通过POST请求 */@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req, resp);}}

运行:

第一种方式:(更改一次,copy次,不推荐)

将这个文件夹WebRoot 复制到webapps下,启动tomcat,访问url

第二种方式:在tomcat目录下conf/server.xml 中做映射

<context path="/app"  docBase="WebRoot 的绝对路径">

访问:http://localhost:8080/app/test 这个就只是服务器做出响应的代码


乱码问题

get提交获取参数乱码解决方式:

1.更改server.xml

<connector  URlEncoding="UTF-8"></connector>

2.String user_Name = new String(userName.getBytes("ISO-8859-1"),"UTF-8");


post提交获取参数乱码解决方式

request.setCharacterEncoding("UTF-8");


做出响应乱码解决方式:

resp.setContentType("text/html;charset=UTF-8")

0 0