Servlet程序访问的流程
方式一:
jsp:
<font color="red">${ msg }</font>
<form action="/personal/requestLogin" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
web.xml
<servlet>
<servlet-name>requestLogin</servlet-name>
<servlet-class>com.pers.request.service.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>requestLogin</servlet-name>
<url-pattern>/requestLogin</url-pattern>
</servlet-mapping>
LoginServlet.java
public class LoginServlet extends HttpServlet {
// 登录校验代码
}
方式二:注解 (前提是@WebServlet("/LoginServlet")必须和类名LoginServlet一致)
jsp:
<font color="red">${ msg }</font>
<form action="/personal/LoginServlet" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
LoginServlet.java
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
// 登录校验代码
}
以下是详细代码:
==================================================傲娇的分割线==================================================
login.jsp
<%@ 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>登录测试</title>
</head>
<body>
<h3>登录页面</h3>
<form action="/personal/requestLogin" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
web.xml
<?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">
<display-name>personal</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>requestLogin</servlet-name>
<servlet-class>com.pers.request.service.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>requestLogin</servlet-name>
<url-pattern>/requestLogin</url-pattern>
</servlet-mapping>
</web-app>
LoginServlet.java
package com.pers.request.service; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.pers.request.domain.User; /**
* Servlet implementation class RequestLogin
*
* 登录测试
*/
//@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取从前台表单传过来的值
String username = request.getParameter("username");
String password = request.getParameter("password"); // 从数据库中查询
UserService userService = new UserService();
User user = userService.login(username, password); // 获取项目名称
String projectName = request.getContextPath(); // 判断user是否存在
if (user!=null) {
// 登录成功,跳转到登录成功页面(重定向)
// (重定向的地址的写法:包含项目名称的,包含项目名称的,包含项目名称的,包含项目名称的)
response.sendRedirect(projectName + "/jsp/request/success.jsp");
} else {
// 登录失败,提示信息并跳转到登录页面(转发)
request.setAttribute("msg", "用户名或密码错误,请重新输入!");
request.getRequestDispatcher("/jsp/request/login.jsp").forward(request, response);
} } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
UserService.java
package com.pers.request.service; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.pers.jdbc.utils.JdbcUtils;
import com.pers.request.domain.User; /**
* @author liangyadong
* @date 2016年10月25日 下午4:16:00
* @version 1.0
*/
public class UserService { /**
* 根据用户名和密码查询
* @param username
* @param password
* @return
*/
public User login(String username, String password){ /**
* 步骤
* 1.加载驱动获取连接
* 2.编写sql
* 3.预编译sql
* 4.设置参数
* 5.执行sql
* 6.遍历结果集,判断用户是否存在
*/
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
// 获取连接
conn = JdbcUtils.getConnection();
// 编写sql
String sql = "select * from t_user where username = ? and password = ?";
try {
// 预编译sql
stmt = conn.prepareStatement(sql);
// 设置参数
stmt.setString(1,username);
stmt.setString(2, password);
// 执行sql
rs = stmt.executeQuery();
// 遍历结果集
while (rs.next()) {
User user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JdbcUtils.release(conn, stmt, rs);
} return null;
} }
User.java
package com.pers.request.domain;
/**
* @author liangyadong
* @date 2016年10月25日 下午2:46:03
* @version 1.0
*/
public class User { private String username;
private String password; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
} }
JdbcUtils.java
package com.pers.jdbc.utils; import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; /**
* @author liangyadong
* @date 2016年10月13日 下午3:23:22
* @version 1.0
*/
public class JdbcUtils { public static final String DRIVERCLASS;
public static final String URL;
public static final String USERNAME;
public static final String PASSWORD; /**
* 静态代码块
*
* 步骤
* 1.创建properties对象
* 2.获取db配置文件的输入流
* 3.properties对象加载配置文件
* 4.properties对象通过key获取值
*/
static{
// 读取配置文件,将值赋给常量
// 创建properties对象
Properties pro = new Properties(); // 获取db.properties文件的输入流
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("com/pers/jdbc/utils/db.properties"); // 加载配置文件
try {
pro.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 通过key获取值
DRIVERCLASS = pro.getProperty("driverClass");
URL = pro.getProperty("url");
USERNAME = pro.getProperty("username");
PASSWORD = pro.getProperty("password"); } /**
* 加载驱动
*/
public static void loadDriver(){
try {
Class.forName(DRIVERCLASS);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 获取连接
* @return
*/
public static Connection getConnection() {
// TODO Auto-generated method stub
// 加载驱动
loadDriver();
try {
// 获取连接
return DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null;
} /**
* 释放资源
*
* 查询的释放资源方法
* @param conn
* @param sta
* @param rs
*/
public static void release(Connection conn,Statement sta,ResultSet rs){
if (rs!=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs = null;
}
if (sta!=null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sta = null;
}
if (conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
}
} /**
* 释放资源
*
* 增删改的释放资源方法
* @param conn
* @param sta
*/
public static void release(Connection conn,Statement sta){
if (sta!=null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sta = null;
}
if (conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn = null;
}
} }
db.properties
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql:///myTest
username=root
password=root
Servlet程序访问的流程的更多相关文章
- Servlet程序访问jsp文件404的一种情况
启动Jsp Run on Server的时候出现404的错误,如下图: 检查一下是否文档目录如下图:jsp应该在WebContent下,而不是WEB_INF下,访问放在WEB_INF下的jsp文件就会 ...
- Servlet快速入门:第一个Servlet程序
Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...
- 【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序
在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面: 将Tomcat的安装目录配置到Ecli ...
- Java技术分享:如何编写servlet程序
身为计算机专业的我,从接触java至今,已经有七年之久,从最开始的小白到现在的大白,这是一个漫长而曲折的历程. 大学刚接触Java这个学科时,一点儿都不理解java是要干嘛的,只知道学起来肯定不容易, ...
- Servlet入门总结及第一个Servlet程序
目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...
- 【JavaWeb】Servlet 程序
Servlet 程序 Servlet Servlet 是在 Web 服务器中运行的小型 Java 程序.Servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求. ...
- [JavaWeb 用MyEclipse分别创建最简单的JSP程序和Servlet程序]
最近看了子柳的<淘宝技术这十年>,其中讲到因为负载和连接池问题,淘宝当年迫不得已从SUN请来一对工程师从LAMP架构转到Java+Oracle.作为一个PHP为“母语”的程序仔,真是感到压 ...
- 动手学servlet(一) 第一个servlet程序
1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...
- 配置一个servlet程序
<!-- 配置一个servlet程序 --> <servlet> <!-- servlet的内部名称 ,可以自定义--> <servlet-name>H ...
随机推荐
- 转:TimeSpan的用法
转:http://www.cnblogs.com/shuang121/archive/2011/03/03/1969583.html 举例:时间增加一天:DateTime.Parse(txt_Date ...
- 《JS高程》基本类型和引用类型的值学习笔记
ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 创建方式类似:创建一个变量并为其赋值. (1)基本类型值和引用类型值比较 基本类型值 引用类型值 简单的数据段 可能由 ...
- 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query
A non-empty zero-indexed string S is given. String S consists of N characters from the set of upper- ...
- MySQL单表多字段模糊查询解决方法
例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍.然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查 ...
- Spring mvc源码url路由-我们到底能走多远系列(38)
我们到底能走多远系列38 扯淡: 马航的事,挺震惊的.还是多多珍惜身边的人吧. 主题: Spring mvc 作为表现层的框架,整个流程是比较好理解的,毕竟我们做web开发的,最早也经常接触的就是一个 ...
- 7-zip的压缩的时候排除某目录
安装暂且不说了. 看一下帮助. [root@localhost Server]# 7z -Zip [] - Igor Pavlov -- p7zip Version ,Utf16=on,HugeFil ...
- Linux中“新旧”TCP/IP工具的对比
如今很多系统管理员依然通过组合使用诸如ifconfig.route.arp和netstat等命令行工具(统称为net-tools)来配置网络功能.解决网络故障,net-tools起源于BSD的TCP/ ...
- 图像质量评价指标之Matlab实现
在图像处理算法研究中,很多时候需要有客观评价指标来对算法的性能进行评价. 比如,在图像复原.图像滤波算法研究中,需要采用客观评价指标来定量的来测试算法恢复出的图像相对于参考图像的好坏程度. 本文介绍文 ...
- 学号20145220 《Java程序设计》第5周学习总结
学号20145220 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承结构 8.1.1使用try.catch java中所有的错误都会被打包为对象,并提供了特有的语句进行处 ...
- PHP太怪了,in_array() ,strpos,
PHP中在某个字符中查找另外一个字符串,是否存在,用的是strpos,此函数用法,经常很多人用反了,正确的用法是strpos(string,search),strstr等,前面是原字符串,后面是要在原 ...