Java Web程序设计

刘肃平、聂军、王华、李勇波、魏碧晴

目录

  • 1 Java Web概述
    • 1.1 任务导引
    • 1.2 动态网页技术介绍
    • 1.3 JSP的运行环境
    • 1.4 JSP的运行原理
    • 1.5 JSP程序开发模式
    • 1.6 JSP开发工具
    • 1.7 任务实施:JSP开发环境搭建及第一个Hello World程序
  • 2 JSP基本语法
    • 2.1 任务导引
    • 2.2 JSP的基本组成
    • 2.3 脚本元素
    • 2.4 指令元素
    • 2.5 动作元素
    • 2.6 任务实施
  • 3 服务器交互
    • 3.1 任务导引
    • 3.2 JSP内置对象概述
    • 3.3 out对象
    • 3.4 request对象
    • 3.5 response对象
    • 3.6 session对象
    • 3.7 application对象
    • 3.8 其他内置对象
    • 3.9 任务实施:使用JSP内置对象实现登录和注销功能
  • 4 JavaBean技术
    • 4.1 任务引导
    • 4.2 JavaBean概述
    • 4.3 JavaBean的应用
    • 4.4 JavaBean的作用域
    • 4.5 任务实施
    • 4.6 JSP中的文件操作
  • 5 Servlet技术
    • 5.1 任务引导
    • 5.2 Servlet基础
    • 5.3 Servlet开发
    • 5.4 Servlet常用API
    • 5.5 任务实施
  • 6 第6章 过滤器和监听器
    • 6.1 任务导引
    • 6.2 Servlet过滤器
    • 6.3 过滤器创建与配置
    • 6.4 Servlet监听器
    • 6.5 Servlet3.0新特性
    • 6.6 任务实施
  • 7 Java Web的数据库操作
    • 7.1 任务导引
    • 7.2 JDBC技术
    • 7.3 使用JDBC驱动程序访问数据库
    • 7.4 数据库连接的JavaBean
    • 7.5 JDBC对事务的操作
    • 7.6 连接池技术
    • 7.7 任务实施
    • 7.8 扩展阅读
  • 8 JSP高级技术
    • 8.1 任务导引
    • 8.2 EL概述
    • 8.3 JSTL标签库简介
    • 8.4 JSTL核心标签
    • 8.5 JSP与Ajax
    • 8.6 任务实施
    • 8.7 扩展阅读
  • 9 JSP实用组件技术
    • 9.1 任务导引
    • 9.2 上传与下载组件
    • 9.3 发送E-mail
    • 9.4 JSP动态图表
    • 9.5 在线编辑器
    • 9.6 任务实施
任务实施

1.登录项目改造成Servlet版本

(1)login.jsp文件和4.4基本一样,将action中的地址改为LoginServlet:

<form action="${pageContext.request.contextPath }/LoginServlet" method="post">即将之前login_action.jsp的逻辑代码放入Servlet中。

(2)LoginServlet.java。

package cn.cszyedu.servlet;


import java.io.IOException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


import cn.cszyedu.po.User;


public class LoginServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置编码

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

//获取请求参数

String userName = request.getParameter("userName");

String userPwd = request.getParameter("userPwd");

User user=new User(userName, userPwd, null,null,null);

//获取session对象

HttpSession session = request.getSession();

if(userName==null||userPwd==null){

//request.setAttribute("message", "用户名或密码为空");

response.sendRedirect(request.getContextPath()+"/jsp/login.jsp");

}else if(userName.equals("lan") && userPwd.equals("123")){

session.setAttribute("userName", userName);

session.setAttribute("userPwd", userPwd);

// session.setAttribute("user", user);

request.getRequestDispatcher("/jsp/user.jsp").forward(request, response);

}else{

//request.setAttribute("message", "用户名或密码错误");

response.sendRedirect(request.getContextPath()+"/jsp/login.jsp");

}

}

}


LoginServlet登录成功页面跳转到user.jsp。

(3)web.xml文件中配置LoginServlet 

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

    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">

<servlet>

    <servlet-name>LoginServlet</servlet-name>

    <servlet-class>cn.cszyedu.servlet.LoginServlet</servlet-class>

  </servlet>

 <servlet-mapping> 

    <servlet-name>LoginServlet</servlet-name>

    <url-pattern>/LoginServlet</url-pattern>

  </servlet-mapping>

</web-app>

2.用Servlet实现留言板

(1)jsp/publish.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>发表文章</title>


<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

<style type="text/css">

table {

border-color: #aaaaaa;

}


.td_01 {

width: 500px;

height: 50px;

text-align: center;

font-weight: bold;

font-size: 20pt;

background-color: #cccccc;

color: #222222;

}


.td_02{

width: 180px;

text-align: center;

}

.td_03{

height: 100px;

text-align: center;

}

</style>

</head>


<body>

<form action="${pageContext.request.contextPath}/PublishServlet" method="post">

<table border="1" cellspacing="0" align="center">

<tr>

<td colspan="2" class="td_01">发表文章</td>

</tr>

<tr>

<td class="td_02">文章类型:</td>

<td>

<select name="articType">

<option value="程序设计">程序设计</option>

<option value="军事">军事</option>

<option value="艺术设计">艺术设计</option>

<option value="传统文化">传统文化</option>

<option value="篮球体育">篮球体育</option>

<option value="世界地图">世界地图</option>

</select>

</td>

</tr>

<tr>

<td class="td_02">文章标题:</td>

<td>

<input type="text" name="articTitle"/>

</td>

</tr>

<tr>

<td class="td_03">文章内容:</td>

<td>

<textarea rows="10" cols="41" name="articContent"></textarea>

</td>

</tr>

<tr>

<td class="td_02">您已发表的文章数:</td>

<td>${sessionScope.count }篇</td>

</tr>

<tr >

<td colspan="2" align="center">

<input type="submit" value="确定发表"> &nbsp;&nbsp;

<input type="button" onclick="out()" value="返回首页">&nbsp;&nbsp;

<input type="button" onclick="back()" value="返回用户界面">

</td>

</tr>

</table>

</form>

<script type="text/javascript">

function out(){

window.location.href="../index.jsp";

}

//var path = ${pageContext.request.contextPath };

function back(){

//alert(1);

window.location.href="./user.jsp";

}

</script>

</body>

</html>

(2)PublishServlet.java

package cn.cszyedu.servlet;


import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date;


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 cn.cszyedu.po.Articles;


@WebServlet(description = "PublishServlet", urlPatterns = { "/PublishServlet" })

public class PublishServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}


public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

//获取参数

String articType = request.getParameter("articType");

String articTitle = request.getParameter("articTitle");

String articContent = request.getParameter("articContent");

// User user = (User) request.getSession().getAttribute("user");

// String articAuthor = user.getUserName();

if(articTitle==null||articTitle==""||articContent==null||articContent==""){

request.setAttribute("message", "文章标题和文章内容不能为空");

request.getRequestDispatcher("jsp/publish.jsp").forward(request, response);

}else{

Articles article=new Articles(null,articType,articTitle,articContent,request.getSession().getAttribute("userName").toString(),new Date());

request.setAttribute("article", article);

request.getRequestDispatcher("jsp/user.jsp").forward(request, response);

// response.sendRedirect(request.getContextPath()+"/jsp/user.jsp");

}

//System.out.println(articType);

}

}

效果图如下: