Servlet+Tomcat 界面登录

时间:2023-12-27 15:41:25

1、文件夹建立(必须按照这个规范,文件名和文件夹名必须一致)

a、在%TOMCAT_HOME%\webapps下建立一个文件夹,取名MyWebsit

b、在MyWebsit文件夹下新建WEB_INF文件夹

c、在WEB_INF文件夹下建立classes文件夹以及web.xml(网络配置文件)

Servlet+Tomcat 界面登录


2、开发servlet

a、引入servlet-api.jar包(位于tomcat6.0安装路径的lib下)
Servlet+Tomcat 界面登录


b、实现servlet接口
//这是我的第一个servlet
//使用实现servlet接口的方式开发 package com.test; import javax.servlet.*;
import java.io.*;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException; public class Hello implements Servlet {
/**
* Method init
*
*
* @param parm1
*
@throws ServletException
*
*该函数用于初始化servlet(类似于构造函数)
*该函数只会被调用一次(当用户第一次访问该servlet是被调用)
*/
public void init(ServletConfig parm1) throws ServletException {
// TODO: 在这添加你的代码
System.out.println("init it");
} /**
* Method getServletConfig
*
*
* @return
*
*/
public ServletConfig getServletConfig() {
// TODO: 在这添加你的代码
return null;
} /**
* Method service
*
*
* @param parm1
* @param parm2
*
@throws ServletException
@throws IOException
*
*这个函数处理业务逻辑
*程序员把业务逻辑代码写在这里
*当用户每访问该servlet,都会被调用
*req 用于获得客户端(浏览器)信息
*res 用于向客户端(浏览器)返回信息
*/
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO: 在这添加你的代码
//从res中得到PrintWriter
System.out.println("service it");
PrintWriter pw = res.getWriter();
pw.println("hello world");
} /**
* Method getServletInfo
*
*
* @return
*
*/
public String getServletInfo() {
// TODO: 在这添加你的代码
return "";
} /**
* Method destroy
* 销毁servlet实例
* 即释放内存
*1、reload 该 servlet ->webapp
*2、关闭tomcat
*3、关机
*
*/
public void destroy() {
// TODO: 在这添加你的代码
System.out.println("destory");
} }

3、部署servlet

在web.xml文件中,添加代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--> <web-app 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"
version="2.5"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>Hello</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.Hello</servlet-class>
</servlet> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>Hello</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/sp</url-pattern>
</servlet-mapping> </web-app>

4、运行

Servlet+Tomcat 界面登录


5、servlet生命周期

Servlet+Tomcat 界面登录


6、继承GenericServlet实现servlet

//通过继承GenericServlet开发servlet

package com.test;
import javax.servlet.GenericServlet;
import java.io.*;
import javax.servlet.*; public class HelloGen extends GenericServlet {
//重写service方法
public void service(ServletRequest req, ServletResponse res) {
//返回hello,world! generic
try {
PrintWriter pw = res.getWriter();
pw.println("hello,world! generic");
} catch(Exception e) {
e.printStackTrace();
}
}
}

7、继承HttpServlet实现servlet

需要重写doGet(),  doPost() 方法。
Servlet+Tomcat 界面登录


//继承HttpServlet实现servlet

package com.test;

import javax.servlet.http.*;
import java.io.*; public class HelloHttp extends HttpServlet {
//处理doGet请求
public void doGet(HttpServletRequest req, HttpServletResponse res) {
//业务逻辑
try {
PrintWriter pw = res.getWriter();
pw.println("hello http");
} catch(Exception e) {
e.printStackTrace();
}
}
//处理doPost请求
public void doPost(HttpServletRequest req, HttpServletResponse res) {
this.doGet(req, res);
}
}

8、登陆界面

//登陆界面

package com.test;

import javax.servlet.http.*;
import java.io.*; public class Login extends HttpServlet {
//处理doGet请求
public void doGet(HttpServletRequest req, HttpServletResponse res) {
//业务逻辑
try { //解决中文乱码
res.setContentType("text/html;charset=gbk"); PrintWriter pw = res.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>登录界面</h1>");
pw.println("<form action=LoginDeal method=post>"); //action填写的是需要跳转的页面
pw.println("用户名:<input type=text name=username /><br />");
pw.println("密码:<input type=password name=passwd /><br />");
pw.println("<input type=submit value=login /><br />");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
} catch(Exception e) {
e.printStackTrace();
}
}
//处理doPost请求
public void doPost(HttpServletRequest req, HttpServletResponse res) {
this.doGet(req, res);
}
}

Servlet+Tomcat 界面登录


9、验证

//登陆过后的处理

package com.test;

import javax.servlet.http.*;
import java.io.*; public class LoginDeal extends HttpServlet {
//处理doGet请求
public void doGet(HttpServletRequest req, HttpServletResponse res) {
//业务逻辑
try {
//接收用户名和密码
String u = req.getParameter("username");
String p = req.getParameter("passwd");
//验证
if(u.equals("sp")&&p.equals("123")) {
//合法,跳转到welcome
res.sendRedirect("Welcome");
} else {
//不合法,跳转到登陆界面
res.sendRedirect("Login"); //参数是需要调转的页面的url
} } catch(Exception e) {
e.printStackTrace();
}
}
//处理doPost请求
public void doPost(HttpServletRequest req, HttpServletResponse res) {
this.doGet(req, res);
}
}

10、验证成功后跳转

//欢迎界面
package com.test; import javax.servlet.http.*;
import java.io.*; public class Welcome extends HttpServlet {
//处理doGet请求
public void doGet(HttpServletRequest req, HttpServletResponse res) {
//业务逻辑
try {
PrintWriter pw = res.getWriter();
pw.println("welcome");
} catch(Exception e) {
e.printStackTrace();
}
}
//处理doPost请求
public void doPost(HttpServletRequest req, HttpServletResponse res) {
this.doGet(req, res);
}
}

Servlet+Tomcat 界面登录


11、web.xml部署文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--> <web-app 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"
version="2.5"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>Hello</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.Hello</servlet-class>
</servlet> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>HelloGen</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.HelloGen</servlet-class>
</servlet> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>HelloHttp</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.HelloHttp</servlet-class>
</servlet> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>Login</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.Login</servlet-class>
</servlet> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>LoginDeal</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.LoginDeal</servlet-class>
</servlet> <servlet>
<!--给servlet取名,可以任意-->
<servlet-name>Welcome</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.test.Welcome</servlet-class>
</servlet> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>Hello</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/Hello</url-pattern>
</servlet-mapping> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>HelloGen</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/HelloGen</url-pattern>
</servlet-mapping> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>HelloHttp</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/HelloHttp</url-pattern>
</servlet-mapping> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>Login</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/Login</url-pattern>
</servlet-mapping> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>LoginDeal</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/LoginDeal</url-pattern>
</servlet-mapping> <servlet-mapping>
<!--给servlet取名,可以任意-->
<servlet-name>Welcome</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,任意的-->
<url-pattern>/Welcome</url-pattern>
</servlet-mapping> </web-app>