Servlet+Tomcat 界面登录
1、文件夹建立(必须按照这个规范,文件名和文件夹名必须一致)
2、开发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
<?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、运行
5、servlet生命周期
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
//继承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);
}
}
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);
}
}
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>
Servlet+Tomcat 界面登录的更多相关文章
- tomcat管理界面登录无法进入
问题: 在打开tomcat界面之后,点击Manger App准备进入管理界面,路径:http://localhost:8080/manager/html. 输入正确的用户名和密码,但是出现401界面. ...
- servlet数据库验证登录
servlet数据库验证登录 一.将数据库连接和验证封装为一个单独的类 import java.sql.*; public class SQLtest { // JDBC 驱动名及数据库 URL st ...
- 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404
maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...
- Ubuntu登录异常: 输入正确的密码, 但是却无法进入系统, 总是返回到登录界面, 但是用ctrl+alt+F1-F文字界面登录都可以进入。
今天打开电脑的时候, 在输入密码之后, 未进入ubuntu的桌面, 而是显示了几行英文之后有返回到了登录界面.显示的英文如下: could not write bytes: Broken pipe ...
- Ubuntu 14.04 或者16.04开启root账户登录和图形界面登录root时候的报错解决方法
1.打开终端 2.输入sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 3.添加一行:greeter-show-manual-login ...
- JavaWeb_利用Servlet处理注册登录请求
利用Servlet处理注册登录请求 程序结构 <%@page import="com.Gary.model.User"%> <%@ page language=& ...
- IDEA+JSP+Servlet+Tomcat简单的登录示例
1.用IDEA新建Java WEB项目并配置Tomcat 这一部分可以参考之前的一篇随笔 https://www.cnblogs.com/lbhym/p/11496610.html 2.导入Servl ...
- solr基于tomcat增加主界面登录权限
tomcat-user.xml增加下面标签(用户名,密码,角色)<user username="admin" password="new-password" ...
- Java EE之servlet实现用户登录
1.在连接数据库的JAVA类中添加查询功能: 在这之前有一个连接数据库的方法: Connection conn=null; PreparedStatement stat=null; ...
随机推荐
- 李洪强iOS开发之拓展篇—UIDynamic(简单介绍)
iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能 ...
- [itint5]三数和为0
http://www.itint5.com/oj/#20 其实是3sum的变种,有重复数字,但是一开始还是写错了.其实是选定一个后,在右边剩余数组里找2sum,找到一组后继续找. #include & ...
- Qt4.6.2已编译二进制版本在VS2005中的问题
结论1:如果你想把Qt4.6.2安装在VS2005中,又不想花时间编译,请下载和安装qt-win-opensource-4.6.2-vs2008,并单独编译“QT安装路径/src/winmain/” ...
- 提供几个可注册的edu邮箱链接
旧版的邮箱大全有edu邮箱的专题页面,放出来2个国内edu.cn邮箱的注册地址:@live.shop.edu.cn和@abc.shop.edu.cn,现在已经停止开放注册了. 其实旧版中还做了个隐藏的 ...
- JS中访问对象的属性
方式一: 对象名.属性名; 方式二: 对象名["属性名"]; ★注意:方式二中,属性名以字符串的形式出现在方括号中,这意味着通过方式二访问属性的话,可以实现“动态访问对象的 ...
- Hibernate征途(五)之继承映射和组件映射
之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点:二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象. 继承映射 如上 ...
- 摄像头(4)用Camera和SurfaceView自定义拍照程序
定制拍照程序的基本步骤 1,打开照相机:Camera.open 这是独占方式打开的 2,创建SurfaceView对象 多缓冲,多线程view 3,添加回调事件监听器(SurfaceHolder.ad ...
- Android开发之AIDL的使用一--跨应用启动Service
启动其他App的服务,跨进程启动服务. 与启动本应用的Service一样,使用startService(intent)方法 不同的是intent需要携带的内容不同,需要使用intent的setComp ...
- 两个STL网址 总结的很好 && c++堆的网址
http://www.cnblogs.com/bigcat814/ http://blog.sina.com.cn/s/blog_7065a9de010154ve.html 堆 http://www. ...
- usaco /the second wave
bzoj4582:简单递推题. #include<cstdio> #include<cstring> #include<iostream> #include< ...