笔记,只供自己参考。相当菜了。

Eclipse --  Kepler Service Release 1  JDK 1.6

Tomcat 7
Oracle 10
1 新建Web工程。写一个静态页面,两个jsp页面,一个CCS,一个Servlet,一个数据库访问类。
2 写web.xml
(1)index.html  默认页面,只是为了验证一下 < welcome-file-list >
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="onlyone.css" type="text/css" />
<title>一</title>
</head>
<body>
<div id="content">
少年,在干嘛呢?
</div>
</body>

</html>

(2)login.jsp // 登录界面
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!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=GBK">
<title>入口</title>
<link rel="stylesheet" href="onlyone.css" type="text/css" />
</head>
<body>
<div id="content">
<span style="color:red;font-weight:bold">
<%if (request.getAttribute("err") != null) 
{
    out.println(request.getAttribute("err") + "<br/>");
}%>
</span>
<!-- 登录表单 -->
<form id="login" method="post" action="login">
用户名:<input type="text" name="username" /><br/>
密  码:<input type="password" name="pass"/><br/>
<input type="submit" value="登录" /><br/>
</form>
</div>
</body>

</html>

(3)welcome.jsp  // 登录成功后的界面
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!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=GBK">
<title>欢迎</title>
<link rel="stylesheet" href="onlyone.css" type="text/css" />
</head>
<body>
<div id="content">
勇士,你要去哪?
</div>
</body>

</html>

(4)LoginServlet.java
package servlet;
import java.io.IOException;
import java.sql.ResultSet;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
import dao.DbDao;
/**
* Servlet implementation class LoginServlet
*/
//@WebServlet(description = "登录控制器", urlPatterns = { "/login" })
// 如果在web.xml中配置了,在Annotation中的配置就不会有效果
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
 */
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String errMsg = "";
RequestDispatcher rd;
String username = request.getParameter("username");
String pass = request.getParameter("pass");
try
{
DbDao dd = new DbDao("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:localhost:1521:orcl", "system", "abc123");
ResultSet rs = dd.query("select pass from user_table " + "where name=?", username);
if (rs.next())
{
if (rs.getString("pass").equals(pass))
{
HttpSession session = request.getSession(true);
session.setAttribute("name", username);
rd = request.getRequestDispatcher("/welcome.jsp");
rd.forward(request, response);
}
else
{
errMsg += "您的用户名密码不符合,请重新输入";
}
}
else
{
errMsg += "您的用户名不存在,请先注册";
}
}
catch(Exception e)
{
e.printStackTrace();
}
if (errMsg != null && !errMsg.equals(""))
{
rd = request.getRequestDispatcher("/login.jsp");
request.setAttribute("err", errMsg);
rd.forward(request, response);
}
}
}
(5)DbDao.java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DbDao
{
private Connection conn;
private String driver;
private String url;
private String username;
private String pass;
public DbDao()
{
}
public DbDao(String driver, String url, String username, String pass)
{
super();
this.driver = driver;
this.url = url;
this.username = username;
this.pass = pass;
}
public String getDriver()
{
return driver;
}
public void setDriver(String driver)
{
this.driver = driver;
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPass()
{
return pass;
}
public void setPass(String pass)
{
this.pass = pass;
}
// 获取数据库连接
public Connection getConnection() throws Exception
{
if (conn == null)
{
Class.forName(this.driver);
conn = DriverManager.getConnection(url, username, pass);
}
return conn;
}
// 插入记录
public boolean insert(String sql, Object... args) throws Exception
{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for (int i = 0; i < args.length; i++)
{
pstmt.setObject(i + 1, args[i]);
}
if (pstmt.executeUpdate() != 1)
{
return false;
}
return true;
}
// 查询
public ResultSet query(String sql, Object... args) throws Exception
{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for (int i = 0; i < args.length; i++)
{
pstmt.setObject(i + 1, args[i]);
}
return pstmt.executeQuery();
}
// 修改
public void modify(String sql, Object... args) throws Exception
{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for (int i = 0; i < args.length; i++)
{
pstmt.setObject(i + 1, args[i]);
}
pstmt.executeUpdate();
pstmt.close();
}
// 关闭连接
public void closeConn() throws Exception
{
if (conn != null && !conn.isClosed())
{
conn.close();
}
}
}
(6)onlyone.ccs
@CHARSET  "UTF-8";
/* 主要的模块 */
#content
{
    margin:auto;
    width:900px;
    height:600px;
    font-size:2em;
    font-style:italic;
    font-weight:bold;
    color:#990000;
    font-family:"Times New Roman",Georgia,Serif;
    background-color:#339933;

}

(7)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd"
    version="3.0" metadata-complete="true">
    
    <display-name>魔兽世界</display-name>
    
    <welcome-file-list>
       <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <!-- Servlet -->
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>servlet.LoginServlet</servlet-class>
    </servlet>
    <!-- servlet-mapping -->
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

</web-app>

3 效果如下
碰到的两个问题
pageEncoding设置为GBK, html的meta标签中charset设置为GBK,但是在浏览器中显示中文乱码
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!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=GBK">
<title>欢迎</title>
</head>
<body>
勇士,你要去哪?
</body>

</html>

打开tomcat运行时生成的java文件,发现服务器发送出去的就是乱码。问题不在浏览器端,而在于服务器没有正确解析jsp代码。
 out.write("<title>娆㈣繋</title>\r\n");
用notpad++打开jsp文件,发现它的编码格式是UTF-8。原来问题出在这里,tomcat是按照pageEncoding指定的编码去解析为jsp页面的。
。另一个方法确认这个问题:右键jsp文件,查看属性,发现它的 编码是UTF-8。
解决办法:用notepad++把jsp页面转为ANSI编码(对中文操作系统来说,就是GBK)。

让页面居中
用一个id为content的div把整个body里面的东西都包起来。
#content
{
    margin:auto; //如果是0,auto,则没有居中的效果
    width:900px;
    height:600px;
    font-size:2em;
    font-style:italic;
    font-weight:bold;
    color:#990000;
    font-family:"Times New Roman",Georgia,Serif;
    background-color:#339933;

}

JSP/Servlet基础——ServletMVC小例子相关推荐

  1. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  2. Jsp+Servlet基础

    一.Tomcat服务器 1. 基本概念 Tomcat本意为公猫的含义,最初是由Sun公司的软件架构师詹姆斯·邓肯·戴维森开发的,后来他帮 助将其变为开源项目并由Sun公司贡献给Apache软件基金会. ...

  3. JSP/Servlet基础——登录成功后返回之前的页面

    笔记,只供自己参考,水平相当菜 配置过滤器,拦截用户请求,如果用户没有登录,就转到登录页面,登录成功后再返回到之前的页面 1 在web.xml中加入过滤器的配置 <?xml version=&q ...

  4. JSP+Servlet基础一

    2019独角兽企业重金招聘Python工程师标准>>> JSP中的指令: 格式:<%@指令的名称(page,taglib,include...) 属性=属性值%> 指令中 ...

  5. jsp/servlet基础知识

    这里写目录标题 1.基本概念 1.1.什么是jsp jsp的page属性 在JSP页面中计算两个数的和,将结果输出显示 总结 2.1.get.post 概念 get和post的区别 doGet/doP ...

  6. 【JSP开发】有关session的登录注销的一个小例子

    下面是一个session的应用的小例子,是用来注销登录的 登陆界面的代码: login.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ...

  7. SP+Servlet+JavaBean+Filter+JSTL小例子

    web应用:MVC用户认证部分    下载源代码 [ 作者: island ][ 大小:808k ][ 发布日期:2007-09-08 ][ 浏览:1 ]  (一)    学习java web应用已经 ...

  8. ​【Python基础】告别枯燥,60 秒学会一个 Python 小例子(文末下载)

    本文推荐一个python的傻瓜式的学习资源,内容简单易懂,让人可以在60 秒学会一个 Python 小例子 当前库已有 300多 个实用的小例子 本文来源:https://github.com/jac ...

  9. 重学Java(007)—— Java基础知识(方法的练习,三个小例子、总结方法的注意事项)

    在经过方法的基础学习之后,我们通过三个小例子巩固一下知识,此外,也对方法的注意事项进行一个简单的总结. 一.三个小例子练习 题目:定义一个方法用来判断两个数字是否相同 首先我们明确方法的三要素: 返回 ...

最新文章

  1. PHP ----MySQL 数据库
  2. ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本
  3. 达摩院 AI 进入中国科技馆,首张 AI 识别新冠 CT 成科技抗疫历史见证
  4. python编程基础_月隐学python第2课
  5. Mysql索引示例_MYSQL索引实例
  6. 原来Java大数据才是真正的高富帅!
  7. 小玉在游泳(洛谷-P1423)
  8. 7-27 冒泡法排序 (20 分)
  9. 飞龙的程序员书单 – 前端
  10. 圆柱与平面接触宽度_好烦!这个建筑高大斜圆柱真难施工!别怕!学会这种工法就不难了...
  11. [USACO07FEB]银牛派对Silver Cow Party
  12. 打算做个单用户博客,引用收藏一下zblog的话
  13. wlop一张多少钱_求解实木家具沙发垫多少钱一张
  14. Bootstrap 4框架
  15. C++ delete释放内存的本质
  16. 从零开始,耗时两年,19岁小伙自制一块32位Risc-V处理器,可玩「贪吃蛇」
  17. css实现两个div填满一行
  18. linux入门详细介绍
  19. 签名MD5与文件MD5概念
  20. Kodi皮肤乱码改中文设置-Arctic: Zephyr- Reloaded

热门文章

  1. python爬虫代理服务器_Python爬虫多线程抓取代理服务器
  2. MySQL 查询 limit 1000,10 和 limit 10 速度一样快吗? 深度分页如何破解
  3. 重启计算机后回收站,重启以后,回收站的文件自动消失
  4. 如何让潮汕的正面形象深入人心?
  5. win7和xp一样有左下角显示桌面快捷方式
  6. 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)
  7. 冰雪复古鸿蒙碎片哪里爆,冰雪打金:冰雪复古版,超高爆率,免费地图,轻松大宝...
  8. speedoffice文档编辑查看中如何隐藏工具栏
  9. 深度学习导论与应用实践(机器学习篇)
  10. Android 使用的Linux驱动