[FMG]两个简单的JSP+servlet小程序

周末啦,最后一天,问了一下妹子,你作业写完了没有,妹子说,木有,我就傻眼了。。。

好吧,妹子,我来帮你写。

于是乎,把作业ppt下载下来,看了看,还可以,不算难,于是就帮妹子写完了这一个作业。虽然说还有一个作业ppt连我都看不懂布置的老师是想要干什么,真心想吐槽一句,老师,不给力啊。

好了,先上一个代码结构图吧:

主要代码分为java代码部分和WebContent代码部分:

java代码部分主要分成了3个包:BEAN(实体类包),DAO(数据库访问类包),Servlet(Servlet类包)

BEAN包包含了2个实体:user.java(用户实体),vote.java(参选人信息实体)

DAO包含了3个类:BaseDao.java(提供数据库连接的基本类),UserDao.java(访问用户表的DAO),VoteDao.java(访问参选人信息表的DAO)

Servlet包含了5个类:RandCode.java,YZMServlet.java(这两个类提供了验证码的功能),addVoteNumber.java(提供了投票的功能,即被选中的人票数+1),login.java(用户登录验证),reg.java(用户注册功能)

WebContent包含了4个html页面和4个JSP页面:

ShowAllVoteInfo.jsp页面:显示所有参选人的简略信息,并提供前往投票界面的通道。
addVoteNumber.jsp页面:显示被选中的那个参选人的详细信息,并提供投票功能

UserLogin.jsp页面:提供用户登录功能,并提供前往注册的通道

UserReg.jsp页面:提供新用户注册的功能。

剩下4个html页面都是简单的成功失败信息提示页面,无需过多说明。

先说一下,做这个练习的思路。我是先把实体制作好了先的人。

要制作实体,先要有对应的数据库及表,

所以,第一步是创库创表加数据

create database vote
go

use vote
go

create table voteInfo
(
    id int primary key identity,
    pname varchar(20) not null,
    voteNumber int not null default 0,
    pImgSrc varchar(200) ,--图片路径
    achievement1 text,--事迹
    achievement2 text
)

insert voteInfo values(‘张三‘,100,‘1.jpg‘,‘他姓张‘,‘排行老三‘)
insert voteInfo values(‘马云‘,111,‘2.jpg‘,‘淘宝‘,‘天猫‘)
insert voteInfo values(‘李连杰‘,33,‘3.jpg‘,‘非常能打‘,‘‘)

select * from voteInfo

create table userInfo
(
    id int primary key identity,
    uaccount varchar(20) not null,
    upwd varchar(20) not null
)

insert userInfo values(‘qiu‘,‘123456‘)
insert userInfo values(‘yangmei‘,‘520.‘)

第二步,对应数据库的表制作实体:

user.java,用户实体

package BEAN;

public class user {
    private int id;
    private String uaccount;
    private String upwd;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUaccount() {
        return uaccount;
    }
    public void setUaccount(String uaccount) {
        this.uaccount = uaccount;
    }
    public String getUpwd() {
        return upwd;
    }
    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }
}

vote.java,参选人信息实体

package BEAN;

public class vote {
    private int id;
    private String pname;
    private int voteNumber;
    private String pImgSrc;
    private String achievement1;
    private String achievement2;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public int getVoteNumber() {
        return voteNumber;
    }
    public void setVoteNumber(int voteNumber) {
        this.voteNumber = voteNumber;
    }
    public String getpImgSrc() {
        return pImgSrc;
    }
    public void setpImgSrc(String pImgSrc) {
        this.pImgSrc = pImgSrc;
    }
    public String getAchievement1() {
        return achievement1;
    }
    public void setAchievement1(String achievement1) {
        this.achievement1 = achievement1;
    }
    public String getAchievement2() {
        return achievement2;
    }
    public void setAchievement2(String achievement2) {
        this.achievement2 = achievement2;
    }

}

第三步,查看信息,列出所有需要提供的功能,并为功能编写DAO

BaseDao.java,数据库连接Dao

package DAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
    private static String username = "sa";
    private static String password = "123456";
    private static String url = "jdbc:sqlserver://localhost:1433;databaseName=vote";
    private static String classname = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static Connection conn;
    PreparedStatement stat;

    static{
        try {
            Class.forName(classname);
            System.out.print("forName");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }    

    public static Connection getCon() {
        try {
             conn = DriverManager.getConnection(url, username, password);
             System.out.print("getConnection");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void closeAll(Connection conn,PreparedStatement ps,ResultSet rs){

            try {
                if(rs != null)
                    rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

            try {
                if(ps != null)
                    ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

            try {
                if(conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

    }
}

UserDao.java ,用户Dao

package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import BEAN.user;
import BEAN.vote;

public class UserDao {  //提供根据实体类对象来判断是否登录成功的方法
    public Boolean login(user u) throws SQLException{
        Connection conn = BaseDao.getCon();
        PreparedStatement statement =null;
        ResultSet rest = null;
        try {
            String sql = "select * from userInfo where uaccount=‘"+u.getUaccount()
                    +"‘ and upwd=‘"+u.getUpwd()+"‘";
            statement = conn.prepareStatement(sql);
            rest = statement.executeQuery();
            if (rest.next()) {
                return true;
            }
            else
                return false;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            conn.close();
        }
        return false;
    }  //判断用户注册的账号是否已经存在
    public Boolean hasUser(String uaccount) throws SQLException{
        Connection conn = BaseDao.getCon();
        PreparedStatement statement =null;
        ResultSet rest = null;
        try {
            String sql = "select * from userInfo where uaccount=‘"+uaccount+"‘";
            statement = conn.prepareStatement(sql);
            rest = statement.executeQuery();
            if (rest.next()) {
                return true;
            }
            else
                return false;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            conn.close();
        }
        return false;
    }
    //添加用户
    public boolean addUser(user     u)
    {
        Boolean result=false;
        Connection conn = BaseDao.getCon();
        PreparedStatement statement =null;
        String sql = "insert userInfo values(?,?);";

        try {
            statement = conn.prepareStatement(sql);
            statement.setString(1, u.getUaccount());
            statement.setString(2, u.getUpwd());
            int rows=statement.executeUpdate();

            if(rows>0)
                result=true;
            else
                result=false;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            BaseDao.closeAll(conn, statement, null);
        }
        return result;
    }
}

VoteDao.java,参选人信息Dao

package DAO;
import java.sql.*;
import java.util.*;

import BEAN.vote;

public class VoteDao {  //得到一个List集合,该集合包含所有参选人的信息
    public List<vote> selectAll() throws SQLException{
        List<vote> list = new ArrayList<vote>();
        Connection conn = BaseDao.getCon();
        vote voteInfo = null;
        PreparedStatement statement =null;
        ResultSet rest = null;
        try {
            String sql = "select * from voteInfo";
            statement = conn.prepareStatement(sql);
            rest = statement.executeQuery();
            while (rest.next()) {
                voteInfo = new vote();
                voteInfo.setId(rest.getInt("id"));
                voteInfo.setPname(rest.getString("pname"));
                voteInfo.setVoteNumber(rest.getInt("voteNumber"));
                voteInfo.setpImgSrc(rest.getString("pImgSrc"));
                voteInfo.setAchievement1(rest.getString("achievement1"));
                voteInfo.setAchievement2(rest.getString("achievement2"));
                list.add(voteInfo);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            conn.close();
        }
        return list;
    }
    //为特定编号的参选人选票+1
    public boolean addVoteNumber(String id)
    {
        Boolean result=false;
        Connection conn = BaseDao.getCon();
        PreparedStatement statement =null;
        String sql = "update voteInfo set voteNumber=voteNumber+1 where id="+id;

        try {
            statement = conn.prepareStatement(sql);

            int rows=statement.executeUpdate();

            if(rows>0)
                result=true;
            else
                result=false;
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            BaseDao.closeAll(conn, statement, null);
        }
        return result;
    }
}

第四步,编写JSP页面,JSP页面相对来说要简单许多,因为在ppt里有提供,依葫芦画瓢就好啦。

ShowAllVoteInfo.jsp页面:显示所有参选人的简略信息,并提供前往投票界面的通道。

效果图:

代码部分如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="DAO.VoteDao" %>
<%@ page import="BEAN.vote" %>
<%@ page import="java.util.*" %>
<!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>Insert title here</title>
</head>
<body>
<%
VoteDao dao=new VoteDao();
List<vote> voteInfo=dao.selectAll();
%>
<table width="100%" height="768">
    <%
        //for(int i=0;i<voteInfo.size()/3+1;i++)
        for(int i=0;i<voteInfo.size();i++)
        {
            vote v=voteInfo.get(i);
            if(i%3==0)
            {
    %>
    <tr>
        <td><img src="/vote/<%=v.getpImgSrc()%>" width=250 height=350><br><%=v.getPname() %>(<%=v.getVoteNumber() %>)票<br>
            <a href="/vote/addVoteNumber.jsp?id=<%=v.getId() %>" >我要投票</a></td>
            <%}
            else if(i%3<2){%>
            <td><img src="/vote/<%=v.getpImgSrc()%>" width=250 height=350><br><%=v.getPname() %>(<%=v.getVoteNumber() %>)票<br>
            <a href="/vote/addVoteNumber.jsp?id=<%=v.getId() %>" >我要投票</a></td>
            <%}
            else{%>
            <td><img src="/vote/<%=v.getpImgSrc()%>" width=250 height=350 ><br><%=v.getPname() %>(<%=v.getVoteNumber() %>)票<br>
            <a href="/vote/addVoteNumber.jsp?id=<%=v.getId() %>" >我要投票</a></td>
    </tr>
        <%} %>
    <%} %>
</table>
</body>
</html>

addVoteNumber.jsp页面:显示被选中的那个参选人的详细信息,并提供投票功能

效果图:

代码部分如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="DAO.VoteDao" %>
<%@ page import="BEAN.vote" %>
<%@ page import="java.util.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
VoteDao dao=new VoteDao();
List<vote> voteInfo=dao.selectAll();
String str=request.getParameter("id");

//for(int i=0;i<voteInfo.size()/3+1;i++)
for(int i=0;i<voteInfo.size();i++)
{
    vote v=voteInfo.get(i);
    if(str.equals(v.getId()+""))
    {
        %>
        <img src="/vote/<%=v.getpImgSrc()%>" width=250 height=350>
        <br><%=v.getPname() %>(<%=v.getVoteNumber() %>)票
        <br><br>主要事迹:<br>1.<%=v.getAchievement1() %><br>2.<%=v.getAchievement2() %><br><br>
        <%
    }
}
%>
<form action="addVoteNumber" method="post">
    <input type=hidden name=id value=<%=str %> />
    <input type=submit value="我要投票" />&nbsp;<a href="ShowAllVoteInfo.jsp">返回首页</a>
</form>
</body>
</html>

UserLogin.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>Insert title here</title>
</head>
<body>
<h1 >用户登录</h1>
<form action="login" method=post name=frm>
账号:<input type=text name=account /><br>
密码:<input type=password name=pwd /><br>
验证码:<input type="text" name=‘myYZM‘><img src="yzm" onclick="this.src=‘yzm?parm=‘+new Date()"><br>
<input type=submit value="登录" />&nbsp;<a href="UserReg.jsp">新用户注册</a>
</form>
</body>
</html>

UserReg.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>Insert title here</title>
</head>
<body>
<h1>新用户注册</h1>
<form action="reg" method=post name=frm onsubmit="return checkData()">
账号:<input type=text name=account /><br>
密码:<input type=password name=pwd /><br>
密码:<input type=password name=pwd2 /><br>
验证码:<input type="text" name=‘myYZM‘><img src="yzm" onclick="this.src=‘yzm?parm=‘+new Date()"><br>
<input type=submit value="注册" />
</form>

<script type="text/javascript">
    function checkData(){
        if(frm.account.value==""){
            alert("用户名不能为空!");
            return false;
        }
        if(frm.pwd.value==""){
            alert("密码不能为空!");
            return false;
        }
        if(frm.pwd.value!=frm.pwd2.value){
            alert("两次密码不一致!");
            return false;
        }
        return true;
    }

</script>
</body>
</html>

最后一步,为特定的功能制作servlet:

其实,一开始我看到验证码的时候我是很蛋疼的,但是妹子直接发给了我功能代码,因为我拿来主义,研究一下,使用了一下,duang,duang,duang,验证码功能就好了

哈哈,就是搞笑一下,其实验证码的功能还挺麻烦的,首先你的有两个文件:

RandCode.java,YZMServlet.java(这两个类提供了验证码的功能)

当添加了这两个类以后,需要在JSP页面和功能servlet页面添加对应的代码,才能正确实现验证。

RandCode.java文件代码作用是设置会产生的字符范围,并且产生4位的随机文字,如下:

package Servlet;

import java.util.Random;

public class RandCode {
    String code="";
    public RandCode(){
        Random rand = new Random();
        String tmp = "@ABCDPghijkmnopqyz0123rsEFKLMNQRSTUVWXYZabcdeGHIJftuvwx456789";
        code="";
        for(int i=0; i<4; i++){
            int index = rand.nextInt(tmp.length());
            code+=tmp.substring(index, index+1);
        }
    }

    public String getCode() {
        return code;
    }
}

YZMServlet.java文件,提供了servlet功能来产生一个验证码图片,代码部分如下:

package Servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/yzm")
public class YZMServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        RandCode yzm = new RandCode();
        BufferedImage bi = new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);
        Graphics g = bi.getGraphics();

        g.setColor(new Color(120,200,50));
        g.setFont(new Font("Tw Cen MT",Font.ROMAN_BASELINE, 24));
        g.fillRect(0, 0, 80, 30);

        g.setColor(Color.RED);
        g.drawLine(20, 15, 80, 0);
        g.setColor(Color.PINK);
        g.fillRoundRect(50, 20, 5, 10, 15, 20);

        //设置随机验证码字符串
        g.setColor(Color.blue);
        g.drawString(yzm.getCode(), 0, 20);

        //将验证码保存在session对象中
        request.getSession().setAttribute("yzm", yzm.getCode());
        //将生成的图片以jpg格式发送到客户端
        ImageIO.write(bi, "JPG", response.getOutputStream());
    }

}

addVoteNumber.java文件(提供了投票的功能,即被选中的人票数+1),这是一个servlet文件,代码如下:

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 DAO.VoteDao;

/**
 * 实现为某一个参选者投票的功能
 */
@WebServlet("/addVoteNumber")
public class addVoteNumber extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public addVoteNumber() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();//得到打印对象

        String str=request.getParameter("id");
        VoteDao dao=new VoteDao();
        Boolean result = dao.addVoteNumber(str);
        if(result==true)
        {//投票成功
            String js= "<script>location.href=‘succ.html‘;</script>";
            out.print(js);
        }
        else
        {//投票失败
            String js= "<script>location.href=‘fail.html‘;</script>";
            out.print(js);
        }
    }

}

login.java(用户登录验证),这是一个servlet文件,代码如下:

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

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 BEAN.user;
import DAO.UserDao;

/**
 * Servlet implementation class login
 */
@WebServlet("/login")
public class login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public login() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();//得到打印对象

        String innerYzm = (String) request.getSession().getAttribute("yzm");//得到服务器端验证码
        String userYzm = request.getParameter("myYZM");//得到用户填写的验证码

        if (innerYzm.equals(userYzm))
        {
            String uaccount=request.getParameter("account");
            String upwd=request.getParameter("pwd");
            UserDao dao=new UserDao();
            user u=new user();
            u.setUaccount(uaccount);
            u.setUpwd(upwd);
            try {
                if(dao.login(u))//查询数据里是否有一致的账号密码,有则登录成功,没有则失败
                {
                    String js= "<script>location.href=‘UserSucc.html‘;</script>";
                    out.print(js);
                }
                else
                {//插入失败
                    String js= "<script>location.href=‘UserFail.html‘;</script>";
                    out.print(js);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            String js = "<script>alert(‘登录失败,验证码出错!‘);location.href=‘UserLogin.jsp‘;</script>";
            out.print(js);
        }
    }

}

reg.java(用户注册功能),提供新用户注册功能的servlet,代码如下:

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

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 BEAN.user;
import DAO.UserDao;

/**
 * Servlet implementation class reg
 */
@WebServlet("/reg")
public class reg extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public reg() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();//得到打印对象

        String innerYzm = (String) request.getSession().getAttribute("yzm");
        String userYzm = request.getParameter("myYZM");
        if (innerYzm.equals(userYzm)) {
            String uaccount=request.getParameter("account");
            String upwd=request.getParameter("pwd");
            UserDao dao=new UserDao();
            user u=new user();
            u.setUaccount(uaccount);
            u.setUpwd(upwd);

            try {
                if(dao.hasUser(uaccount))
                {
                    String js= "<script>location.href=‘UserFail.html‘;</script>";
                    out.print(js);
                    return;
                }

                if(dao.addUser(u))
                {
                    String js= "<script>location.href=‘UserSucc.html‘;</script>";
                    out.print(js);
                }
                else
                {//插入失败
                    String js= "<script>location.href=‘UserFail.html‘;</script>";
                    out.print(js);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            String js = "<script>alert(‘登录失败,验证码出错!‘);location.href=‘UserReg.jsp‘;</script>";
            out.print(js);
        }
    }

}

在制作整个练习的时候,遇到过一些问题。也抓了不少头发,但是终究还是给我做出来了,来,为自己喝彩。。。

1.需要显示的图片不要使用中文名的图片文件,会找不到图片文件的

2.在JSP页面中导入包使用的是<% page命令,示例:<%@ page import="java.util.*" %>

3.在JSP页面中如果写普通的服务器代码可以使用<%%>将它们括起来。

4.借鉴代码的时候一点都不要改,要不然就请理解透彻,要不然就是bug地狱。

5.其实java真的比oc好太多。。。

时间: 2024-08-07 00:13:26

[FMG]两个简单的JSP+servlet小程序的相关文章

最简单的jsp+servlet的增删改查代码

package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ceet.ac.cn.model.Admin; public class AdminDao {

利用x64_dbg破解一个最简单的64位小程序

最近在研究学习一些逆向的东西,其实之前也涉及到这方面的东西,只是之前的系统和应用,基本上都是32位的,所以直接用od来分析就行了,这方面的资料在网上很多,随便一搜到处都是,不过随着技术的不断发展,64位系统出现了,随之64位的应用也出现了,而od只能分析32位应用,所以一些64位应用,od是没办法分析逆向的,所以,在这里要提到另一个可以用于分析64位应用的调试软件,名字叫x64_dbg.网上对于这款软件的介绍很少,只是说能分析64位应用,具体用法也找不到,不过我找到了它的一个教程,里面有一个最简

Netty学习——基于netty实现简单的客户端聊天小程序

Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEven

封装简单的API——微信小程序

前几天自己琢磨微信小程序的基本开发,里边用到的技术包括WebAPI,也就是方法的封装. 当然也可以用ASP.NET MVC WCF来写接口.更简单应该就是 WinForm 简单易部署. 这里用的是 2017版本的 Core 2.0 WebAPI [Route("api/select")] //定义路由 public class SelectController:Controller { /// <summary> /// 查询所有信息 /// </summary>

JSP/Servlet Web 学习笔记 DayFour —— 实现一个简单的JSP/Servlet交互

小实例说明: a)实现一个由JSP负责前台显示,Servlet负责后台处理的交互小实例 b)JSP页面由表单获取一个开始数字,一个结束数字,交给Servlet打印响应的乘法表. 未解决的问题: a)跳转貌似不能识别目录中的HTML文件,所以我把源码复制到JSP中,结果能找到. b)Servlet获取到JSP传过来的数据后,如果想在JSP页面out.print相关的JS代码貌似不能实现 目前的效果是:在当前的Servlet页面弹出了JS alert()弹窗 再重定向回之前的JSP页面. 源码: <

一个简单的jsp+servlet实例,实现简单的登录

开发环境myeclipse+tomcat5.5 一.先创建web project 在菜单栏选File->New->Web->Dynamic Web Project Project name我命名为JavaWebTest01 (可以随便起) Target runTime 选我们之前tomcat配置的版本. 一直NEXT到Finish 二.新建jsp页面 1.在WebContent下新建一个jsp页面(如果列表里没有jsp选项,到other里去找) 这里我给jsp页面的名字命为welcome

简单的jsp&amp;servlet 购物车项目

这几天根据视频的内容完成了一个小型的购物项目, 只是实现了具体的功能还有很多都没有实现,但是对于自己来说真的也算是一个激励吧. 尽管跟着视频一步一步操作,但是还是有自己的理解在里面 . 当然最主要的是我的目标不是码字机,我要做一个designer; 第一项:页面布局,这里的图片是从数据库里面取出来的;  (这里有一个bug, 数据库的连接,我没有设定close)  从数据库里取出来的数据,用一个javabean封装好,然后用jsp调用就可以了了, 返回的是一个ArrayList(Item) 数组

java_第一个servlet小程序

xml中注册: <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>

一个简单的中奖抽奖小程序

<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="jquery.js"></script> <style type="text/css"> #zhongjiang{ width: 100px; height: 100px; backgrou