JAVAWEB经典完整实例之JSP+SERVLET(+DAO)代码WORD版
- 格式:pdf
- 大小:173.86 KB
- 文档页数:13
JavaWeb是一种基于Java语言的Web开发技术,它可以帮助开发人员快速、高效地构建复杂的Web应用程序。
而Servlet是JavaWeb 技术中的一种核心组件,它可以处理客户端的请求并生成响应。
本篇文章将介绍如何利用Servlet来开发一个简单的JavaWeb应用程序,并通过具体的案例来说明其实现过程。
一、准备工作在开始编写JavaWeb应用程序之前,我们需要进行一些准备工作:1. 安装JDK和Tomcat我们需要安装Java Development Kit(JDK),它包括了Java编译器和其他的开发工具,能够帮助我们编写和运行Java程序。
另外,我们还需要安装Tomcat,它是一个开源的服务器软件,用于在本地计算机上运行JavaWeb应用程序。
2. 创建项目接下来,我们需要在IDE中创建一个新的JavaWeb项目。
我们可以选择Eclipse、IntelliJ IDEA等流行的IDE来进行开发。
在创建项目的过程中,我们需要选择Servlet支持,以便后续编写Servlet程序。
3. 编写HTML页面在项目中创建一个HTML页面,用于向用户展示表单界面。
用户可以在该页面中输入信息并提交给服务器。
二、编写Servlet程序1. 创建Servlet类在项目中创建一个新的Servlet类,可以继承自javax.servlet.网络协议.HttpServlet类。
在该类中,我们可以重写doGet和doPost等方法,用于处理客户端的请求。
2. 实现doGet方法在doGet方法中,我们可以获取客户端提交的参数,并根据业务逻辑进行处理。
如果用户输入了用户名和密码,我们可以在这里进行验证并生成相应的响应。
3. 实现doPost方法与doGet方法类似,doPost方法也用于处理客户端的请求。
在实际开发中,doPost方法通常用于提交表单数据等操作。
三、部署和运行1. 配置web.xml在项目中的web.xml文件中,我们需要配置Servlet的映射,以便让Tomcat能够正确识别和调用Servlet程序。
简单servlet调⽤dao层完整步骤导⼊包lib(⽂件名称)⽬录结构:web下:views、web-inf、index.jspviews下各种jsp⽂件和js(⾥⾯放封装好的jquery包)js下:jquery包(js⽂件后缀)web-inf⽬录下:classes(编译输出路径)、lib、 web.xml⾸先编写index.jsp⽂件<form method="post" action="/touhou/isLogin"><input type="text" required name="admin" ><br/><br/><input type="password" required name="password" ><br/><br/><span id="errorMessage"> ${error}</span><br/><br/><input type="submit" value="LinkStart"></form>接着响应表单提交的servlet “isLogin”package com.aaa.servlet;import com.aaa.dao.IUserDAO;import erDAOImpl;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 java.io.IOException;import java.util.Map;@WebServlet("/isLogin")public class IsLoginServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置编码格式为UTF-8req.setCharacterEncoding("UTF-8");//将表单中获取到的元素提取出来String admin=req.getParameter("admin");String password=req.getParameter("password");//将这些元素引⼊dao层进⾏⽐对IUserDAO userDAO = new UserDAOImpl();Map<String, Object> map = userDAO.isLogin(admin, password);//查看⽐对结果并进⾏相应后续处理if(map!=null){//map不为空时设置map属性值并请求转发到登陆成功的主页req.setAttribute("map",map);System.out.println(map);req.getRequestDispatcher("/views/loginSuccess.jsp").forward(req,resp);}else {//失败时将错误信息传递给req.setAttribute("error","账号或者密码不正确");req.getRequestDispatcher("/index.jsp").forward(req,resp);}}}当然,最后判断是否成功<%--Created by IntelliJ IDEA.User: AdministratorDate: 2019/6/24Time: 10:43To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib uri="/jsp/jstl/core" prefix="c"%><%--进⾏list循环时需要⽤到的--%><html><head><title>Title</title></head><%--添加jquery代码实现--%><script src="js/jquery-2.1.0.js"></script><body><span>欢迎你,可爱的${map.mininame}</span></body></html>。
javaservlet代码样例(demo)今天⼜搞了下jsp +servlet 的代码样例,感觉虽然搭了好多次,可是每次还是不记得那些参数,都要去⽹上搜索,索性⾃⼰把这次的简单demo给记录下来,供下次使⽤的时候直接复制吧。
这个web逻辑 input.jsp ---->ReportServlet -->output.jsp (在servlet中输⼊值,将参数传递到output.jsp中)整个⽂档⽬录结构如下:相关代码如下:input.jsp:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/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><form method="post" action="report" ><p> seller_id</p><input type="text" name="seller_id"></input><label for="from_date">from_date:</label><input type="text" id="from_date" name="from_date" /><label for="end_date">end_date:</label><input type="text" id="end_date" name="end_date" /><input type="submit" id="submit" name="submit" /></form></body></html>output.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page import="java.util.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/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><%List<String> result =(List)request.getAttribute("result");%><table><%for(String str:result){%><tr><td><%=str+"\n" %></td></tr><%} %></table></body></html>web.xml(主要是注意servlet配置)<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="/xml/ns/javaee http://ja <display-name>Report</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>reportServlet</servlet-name><servlet-class>.ReportServlet</servlet-class></servlet><servlet-mapping><servlet-name>reportServlet</servlet-name><url-pattern>/report</url-pattern></servlet-mapping></web-app>ReportServlet.java 内容package ;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class ReportServlet 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 {String from_date = request.getParameter("from_date");System.out.println(from_date);List <String> result = new ArrayList<String>();result.add("apple");result.add("apple");result.add("apple");result.add("apple");//HttpSession session=request.getSession();request.setAttribute("result", result);request.getRequestDispatcher("output.jsp").forward(request,response);//return ;//response.sendRedirect("/Report/output.jsp");//request.//response.sendRedirect(arg0)// response.setContentType("text/html;charset=utf-8");// PrintWriter out = response.getWriter();// request.setCharacterEncoding("utf-8");// out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); // out.println("<HTML>");// out.println(" <HEAD><TITLE>display survey information</TITLE></HEAD>");// out.println(" <BODY>");// out.println("<h2>⽤户输⼊的信息</h2>");// out.println("⽤户名:"+request.getParameter("name")+"<br>");// out.println("e-mail:"+request.getParameter("email")+"<br>");// out.println("年纪:"+request.getParameter("age")+"<br>");// out.println("编程时间:"+request.getParameter("codetime")+"<br>");// out.println("你使⽤的操作系统:");// printValues(out,request.getParameterValues("os"));// out.println("你使⽤的编程语⾔:");// printValues(out,request.getParameterValues("language"));// out.println("建议:"+request.getParameter("comment")+"<br>");// out.println(" </BODY>");// out.println("</HTML>");// out.flush();// out.close();}public void printValues(PrintWriter out,String[] values){if(values==null || values.length==0)return;out.println("<ul>");for(int i=0;i<values.length;i++){out.println("<li>"+values[i]+"</li>");}out.println("</ul>");}}View Code好了,就这样了,祝学习web的朋友们好运。
jsp+dao+bean+servlet(MVC模式)实现简单⽤户登录和注册页⾯⽬录功能介绍前期⼯作准备创建数据库Bean封装的数据信息Dao对数据库进⾏操作实现登录页⾯三个页⾯处理实现注册页⾯功能演⽰总结功能介绍本项⽬通过使⽤jsp和servlet实现简单的⽤户登录。
主要逻辑为:如果⽤户不存在,则⾸先进⾏注册(注册信息同步到数据库中)。
进⾏注册后,可进⼊登录页⾯对账号进⾏登录。
如果账号存在,则正确跳转到欢迎界⾯,否则提⽰⽤户账号信息输⼊错误。
⽤户进⾏登录页⾯时需要填写验证码同时可勾选是否两周内免登陆。
⽤户进⼊欢迎界⾯,则会显⽰这是⽤户第⼏次登录,如果不是第⼀次登录则会显⽰上次登录时间。
如果⽤户直接进⼊welcome,(没有进⾏登录,直接打开welcome.jsp)则会跳转到登录页⾯,防⽌⾮法登录。
前期⼯作准备1.安装了Tomcat并可以成功使⽤。
2.由于需要与数据库连接,本项⽬使⽤的是mysql数据库,需要引⼊mysql-connector-java-5.1.9.jar包(可在官⽅下载或者通过maven引⼊mysql依赖),需要注意mysql-connector-java-5.1.9.jar 需要放在C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext路径下,否则会出现连接数据库异常。
引⼊maven依赖:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency>创建数据库如果在DOS窗⼝下创建表的话则应该加上ENGINE=InnoDB DEFAULT CHARSET=utf-8:表⽰可以添加中⽂字符,否则直接添加中⽂字符会出现乱码。
JavaWeb中DAO层的设计与测试(附代码)***************************DAO层的主要⽅法********************************⼀般包含以下⽅法:T类型public int count();public int add(Menus menus);public int del(int id);public int update(int id, T t);public ArrayList<TInfo> findAll();public T findById(int id);public T findByName(String name);public Page<TInfo> findByPage(Page<TInfo> page);************************* DAO包⾥的UserDao******************************************导⼊的包*******************在try--catch语句最后有可能还有⼀个finally,这个代码块是⽆论是否发⽣异常都要执⾏的操作dao:检查WebConnecnt--WEB-INF--lib是否由jstl和mysql-connector的jar包,有的话,在dao中创建class就会⾃动导⼊4个包{import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;}***************************设计框架*******************************public User find() {然后进⾏查找操作:建⼀个⽅法(查询⽤户名和密码)1、创建连接Connection conn = DBUtil.getConn();2、写sql语句(根据⽤户名和密码查询)String sql = "select * from user where username=? and password=?";3、创建PreparedStatementPreparedStatement pstmt = null;ResultSet rSet = null;4、创建user对象也默认未nullUser user = null;5、把pstmt和sql关联在⼀起,使⽤异常处理的代码块try {pstmt = conn.prepareStatement(sql);//1和2对应的是上⾯sql的问号,⼀个对应⼀个,username和password是⽅法中的变量名,都写好了之后⼀起发送给pstmt.setString(1, username);pstmt.setString(2, password);//executeQuery⽅法会把数据库响应的查询结果存放在resultSet分类对象中供我们使⽤,⼀次返回⼀句sql语句rSet = pstmt.executeQuery();//处理结果rSet -->User//rSet可以储存很多条数据,按顺序存放,判断条件是⼀个指向第⼀条的指针,如果有多次查询,则可以⽤while代替if 多次循环查询,不断指向下⼀个。
jsp编程之@WebServlet详解编写好Servlet之后,接下来要告诉Web容器有关于这个Servlet的⼀些信息。
在Servlet 3.0中,可以使⽤标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。
例如在HelloServlet.java中:@WebServlet(“/hello.view”)public class HelloServlet extends HttpServlet {只要在Servlet上设置@WebServlet标注,容器就会⾃动读取当中的信息。
上⾯的@WebServlet告诉容器,如果请求的URL是“/hello.view”,则由HelloServlet的实例提供服务。
可以使⽤@WebServlet提供更多信息。
@WebServlet(name=”Hello”,urlPatterns={“/hello.view”},loadOnStartup=1)public class HelloServlet extends HttpServlet {上⾯的@WebServlet告知容器,HelloServlet这个Servlet的名称是Hello,这是由name属性指定的,⽽如果客户端请求的URL是/hello.view,则由具Hello名称的Servlet来处理,这是由urlPatterns属性来指定的。
在Java EE相关应⽤程序中使⽤标注时,可以记得的是,没有设置的属性通常会有默认值。
例如,若没有设置@WebServlet的name 属性,默认值会是Servlet的类完整名称。
当应⽤程序启动后,事实上并没有创建所有的Servlet实例。
容器会在⾸次请求需要某个Servlet服务时,才将对应的Servlet类实例化、进⾏初始化操作,然后再处理请求。
这意味着第⼀次请求该Servlet的客户端,必须等待Servlet类实例化、进⾏初始动作所必须花费的时间,才真正得到请求的处理。
JavaServlet详解(体系结构+注解配置+⽣命周期)Java Servlet详解(注解配置+⽣命周期)什么是Servlet : (Server applet)?顾名思义:服务端的⼩程序Servlet只是⼀个接⼝,定义了Java被浏览器访问到(Tomcat)的识别规则,我们需要定义⼀个类来实现Servlet接⼝创建⼀个项⽬流程1.创建⼀个JavaEE项⽬2.定义⼀个类实习Servlet⽅法3.实现接⼝中的抽象⽅法import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;public class Servlet implements javax.servlet.Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("初始化");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("访问");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {System.out.println("关闭");}}4.在WEB.XML中配置Servelt<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>demo1</servlet-name><servlet-class>Servlet</servlet-class></servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern></servlet-mapping></web-app>结果执⾏原理加图解1.当服务器接受到服务器请求的时候,会先解析浏览器的UPL地址,获取访问服务的路径2.然后查找WEB.xml⽂件,查看是否有对应的标签体的内容3.如果有,则找到对应的全类名4.tomcat会将字节码⽂件加载进内存,并且创建其对象5.调⽤其⽅法Servlet的⽣命周期1.被创建:执⾏init⽅法只执⾏⼀次Servlet什么时候创建?默认情况:在第⼀次被访问的时候创建可以在配置执⾏Servlet的创建时机在标签下配置第⼀次被访问时,创建的值为负数在服务器启动时,创建的值为0或正整数注意Servlet的init⽅法,只执⾏⼀次,说明⼀个Servlet在内存中只存在⼀个对象,Servlet是单例的多个⽤户同时访问时,可能存在线程安全问题。
Java学习笔记之:Servlet写法⼀、编写servlet1.编写servlet我么需要继承HttpServlet(⼀个java类,提供了servlet的接⼝⽅法)public class HelloServlet extends HttpServlet2.HttpServlet提供了:init():初始化服務器, doget()&&dopost():处理请求的⽅法,destroy():销毁的⽅法。
public class HelloServlet extends HttpServlet {/**** 1.servlet 的初始化⽅式init()⽅法的执⾏* a.在⽤户第⼀次发起请求的时候执⾏init()⽅法。
⽅法只会执⾏⼀次* b.在web.xml⽂件中配置<load-on-startup>1</load-on-startup>,init()⽅法会在服务器* 启动的时候执⾏。
load-on-startup 的值为0-9的任意值,值的⼤⼩不具备任何含义,只有值本⾝有⼀定 * 的语义.表⽰如果配置了值就是在服务器启动的时候执⾏init()⽅法.init()⽅法同样的只会执⾏⼀次.* c.在服务器启动的时候执⾏init()⽅法,并且进⾏参数的传递,那么执⾏的是init()的⽅法重载.*/@Overridepublic void init() throws ServletException {System.out.println("init");}/*** get⽅式请求*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("do get");// 返回页⾯的⽅法req.getRequestDispatcher("main.jsp").forward(req, resp);}/*** post⽅式请求*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("do post");// 返回页⾯的⽅法req.getRequestDispatcher("main.jsp").forward(req, resp);}/*** 销毁服务*/@Overridepublic void destroy() {System.out.println("destroy");}}3.配置web.xml⽂件:是连接页⾯和服务器端之间的桥梁<!--servlet的配置⽂件的配置要求1.servlet和servlet-mapping节点的⼦节点servlet-name要是对应的。
User.javapackage com.zuijiajiao.servlab.DatabaseWEB.DTO;publicclass User {private String name;private String password;private Integer id;public Integer getId() {return id;}publicvoid setId(Integer id) {this.id = id;}public String getName() {return name;}publicvoid setName(String name) { = name;}public String getPassword() {return password;}publicvoid setPassword(String password) {this.password = password;}public User(String name, String password) {super(); = name;this.password = password;}public User() {}@Overridepublic String toString() {return"UserDAO [name=" + name + ", password=" + password + "]";}}UserDao.javapackage com.zuijiajiao.servlab.DatabaseWEB.DAO;import java.io.Serializable;import java.util.List;import er;publicinterface UserDAO {publicvoid delete(User user)throws ClassNotFoundException;publicvoid update(User user)throws ClassNotFoundException;public List<User>findAll(String name,String password)throws ClassNotFoundException;public List<User>findAll()throws ClassNotFoundException;public User findByNameAndPassword(Stringname,String paaword)throws ClassNotFoundException;public Serializable save(User user)throws ClassNotFoundException;public User get(Serializable id)throws ClassNotFoundException;}UserDaoImpl.javapackage com.zuijiajiao.servlab.DatabaseWEB.DAOImpl;import java.io.Serializable;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 erDAO;import er;import com.zuijiajiao.servlab.DatabaseWEB.JDBC.ConnectionFacroty; publicclass UserDAOImpl implements UserDAO {Connection connection = null;PreparedStatement preparedStatemen = null;ResultSet resultSet = null;@Overridepublicvoid delete(User user) throws ClassNotFoundException { try {StringBuffer sql = new StringBuffer();sql.append(" DELETE * FROM tb_user ");sql.append(" WHERE ? = ? ");connection = ConnectionFacroty.getConnection();preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setString(1, "id");preparedStatemen.setInt(2, 3);int result = preparedStatemen.executeUpdate();if (result != 0) {System.out.println("成功修改" + result + "条记录");} else {System.out.println("0条记录被修改,修改失败");}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}}@Overridepublicvoid update(User user) throws ClassNotFoundException { try {StringBuffer sql = new StringBuffer();sql.append(" UPDATE tb_user ");sql.append(" SET name = ? ");sql.append(" SET password = ? ");sql.append(" WHERE id = ? ");connection = ConnectionFacroty.getConnection();preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setString(1, user.getName());preparedStatemen.setString(2, user.getPassword());preparedStatemen.setInt(3, user.getId());int result = preparedStatemen.executeUpdate();if (result != 0) {System.out.println("成功修改" + result + "条记录");} else {System.out.println("0条记录被修改,修改失败");}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}}@Overridepublic List<User>findAll(String name, String password)throws ClassNotFoundException {try {connection = ConnectionFacroty.getConnection();StringBuffer sql = new StringBuffer();sql.append(" SELECT id,name,password ");sql.append(" FROM tb_user ");sql.append(" WHERE name = ? ");sql.append(" AND password = ? ");preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setString(1, name);preparedStatemen.setString(2, password);resultSet = preparedStatemen.executeQuery();List<User>users = new ArrayList<User>();while (resultSet.next()) {User user = new User();user.setName(resultSet.getString(name));user.setPassword(resultSet.getString(password));user.setId(resultSet.getInt("id"));users.add(user);return users;}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}returnnull;}@Overridepublic User findByNameAndPassword(Stringname,String password)throws ClassNotFoundException{try {StringBuffer sql = new StringBuffer();sql.append(" SELECT id,name,password ");sql.append(" FROM tb_user ");sql.append(" WHERE name = ? ");sql.append(" AND password = ? ");connection = ConnectionFacroty.getConnection();preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setString(1, name);preparedStatemen.setString(2, password);resultSet = preparedStatemen.executeQuery();User user = new User();while (resultSet.next()) { // if(resultSet.next()){user.setName(resultSet.getString(name));user.setPassword(resultSet.getString(password));user.setId(resultSet.getInt("id"));return user;}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}returnnull;}@Overridepublic Serializable save(User user) throws ClassNotFoundException { try {StringBuffer sql = new StringBuffer();sql.append(" INSERT INTO tb_user (name,password) ");sql.append(" VALUES(?,?) ");connection = ConnectionFacroty.getConnection();preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setString(1, user.getName());preparedStatemen.setString(2, user.getPassword());preparedStatemen.executeUpdate();resultSet = preparedStatemen.getGeneratedKeys();while(resultSet.next()){int id = resultSet.getInt(1);System.out.println("id is:"+id);return id;}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}returnnull;}@Overridepublic User get(Serializable id) throws ClassNotFoundException { try {StringBuffer sql = new StringBuffer();sql.append(" SELECT id,name,password ");sql.append(" FROM tb_user ");sql.append(" WHERE id = ? ");connection = ConnectionFacroty.getConnection();preparedStatemen =connection.prepareStatement(sql.toString());preparedStatemen.setInt(1, (int) id);resultSet = preparedStatemen.executeQuery();User user = new User();while (resultSet.next()) { // if(resultSet.next()){user.setName(resultSet.getString("name"));user.setPassword(resultSet.getString("password"));user.setId(resultSet.getInt((int) id));return user;}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}returnnull;}@Overridepublic List<User>findAll() throws ClassNotFoundException { try {connection = ConnectionFacroty.getConnection();StringBuffer sql = new StringBuffer();sql.append(" SELECT * FROM tb_user ");preparedStatemen =connection.prepareStatement(sql.toString());resultSet = preparedStatemen.executeQuery();List<User>users = new ArrayList<User>();while (resultSet.next()) {User user = new User();user.setName(resultSet.getString("name"));user.setPassword(resultSet.getString("password"));user.setId(resultSet.getInt("id"));users.add(user);return users;}} catch (SQLException e) {e.printStackTrace();} finally {ConnectionFacroty.close(connection, preparedStatemen, resultSet);}returnnull;}}ConnectionFactory.javapackagecom.zuijiajiao.servlab.DatabaseWEB.JDBC;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/*** ConnectionFactory --链接工厂** 从面向对象的角度来说,凡是和链接相关的基本操作都交给这个对象来处理即可* 将基本代码封装成一个对象,从而就可以省去不少事** 基本操作包括* 1.获取连接* 2.关闭资源* */public class ConnectionFacroty {//定义数据库参数private static final String URL="jdbc:mysql://localhost:3306/databaseWeb";private static final String DRIVER="com.mysql.jdbc.Driver";private static final String USER="root";private static final String password="19950412";//获取链接public static Connection getConnection() throws ClassNotFoundException{Connection connection;try {Class.forName(DRIVER); //注册驱动connection = DriverManager.getConnection(URL, USER, password); //获取链接} catch (SQLException e) {System.out.println("################################数据库连接错误#############################");e.printStackTrace();return null;}return connection;}//关闭数据库资源public static void close(Connection connection){try {if(connection!=null)connection.close();} catch (SQLException e) {System.out.println("##################################数据库连接错误############################");e.printStackTrace();}}public static void close(Statement statement,ResultSetresultSet){try {if(statement!=null)statement.close();if(resultSet!=null )resultSet.close();} catch (SQLException e) {System.out.println("##################################数据库连接错误############################");e.printStackTrace();}}public static void close(Connection connection, Statement statement,ResultSetresultSet){ try {if(connection!=null)connection.close();if(statement!=null)statement.close();if(resultSet!=null )resultSet.close();} catch (SQLException e) {System.out.println("##################################数据库连接错误############################");e.printStackTrace();}}}LoginServlet.javapackagecom.zuijiajiao.servlab.DatabaseWEB.servlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;erDAO;erDAOImpl;er;@WebServlet({ "/LoginServlet", "/login.action" })public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;publicLoginServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String password = request.getParameter("password");User user = null;UserDAOImpldao = new UserDAOImpl();try {user = dao.findByNameAndPassword(name, password);if(user!=null){System.out.println("成功定位该用户,先将信息保存到session(而不是request)中,然后执行跳转操作");HttpSession session = request.getSession();session.setAttribute("name", name);session.setAttribute("password", password);request.getRequestDispatcher("welcome.jsp").forward(request, response);}else{System.out.println("该用户不存在,请重新输入");response.sendRedirect("index.jsp");}} catch (ClassNotFoundException e) {e.printStackTrace();}}}Index.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>JavaWEB经典示例</title></head><body><fieldset><legend>请登录</legend><div align="center"><form action="login.action"method="post"><div>用户名:<input type="text"size="20"name="name"/><br> </div><div>密 码:<input type="password"size="20"name="password"/><br></div><div>   ; <input type="submit"name="Submit"value="提交"/> <input type="reset"name="Reset"value="重置"/></div></form></div></fieldset></body></html>Welcome.jsp<%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>WelcomePage</title></head><body><div align="center"><h2><font color="red">${ }</font> Welcome To This Tage! </h2><h4><font color="yellow">Coming here means you havescceeded!Congraturelations!</font></h4></div></body></html>。
Java之dao模式详解及代码⽰例什么是dao模式?DAO(Data Access Object)顾名思义是⼀个为数据库或其他持久化机制提供了抽象接⼝的对象,在不暴露底层持久化⽅案实现细节的前提下提供了各种数据访问操作。
在实际的开发中,应该将所有对数据源的访问操作进⾏抽象化后封装在⼀个公共API中。
⽤程序设计语⾔来说,就是建⽴⼀个接⼝,接⼝中定义了此应⽤程序中将会⽤到的所有事务⽅法。
在这个应⽤程序中,当需要和数据源进⾏交互的时候则使⽤这个接⼝,并且编写⼀个单独的类来实现这个接⼝,在逻辑上该类对应⼀个特定的数据存储。
DAO模式实际上包含了两个模式,⼀是Data Accessor(数据访问器),⼆是Data Object(数据对象),前者要解决如何访问数据的问题,⽽后者要解决的是如何⽤对象封装数据。
⼀、信息系统的开发架构客户层-------显⽰层-------业务层---------数据层---------数据库1.客户层:客户层就是客户端,简单的来说就是浏览器。
2.显⽰层:JSP/Servlet,⽤于给浏览器显⽰。
3.业务层:对于数据层的原⼦操作进⾏整合。
4.数据层:对于数据库进⾏的原⼦操作,增加、删除等;⼆、DAO(Data Access Object)介绍DAO应⽤在数据层那块(对于数据库进⾏的原⼦操作,增加、删除等;),⽤于访问数据库,对数据库进⾏操作的类。
三、DAO设计模式的结构DAO设计模式⼀般分为⼏个类:1.VO(Value Object):⼀个⽤于存放⽹页的⼀⾏数据即⼀条记录的类,⽐如⽹页要显⽰⼀个⽤户的信息,则这个类就是⽤户的类。
2.DatabaseConnection:⽤于打开和关闭数据库。
3.DAO接⼝:⽤于声明对于数据库的操作。
4.DAOImpl:必须实现DAO接⼝,真实实现DAO接⼝的函数,但是不包括数据库的打开和关闭。
5.DAOProxy:也是实现DAO接⼝,但是只需要借助DAOImpl即可,但是包括数据库的打开和关闭。
Java语言程序设计-Eclipse入门之Servlet/JSP程序与例1-3、1-4程序说明:这2个例程需要,请提早安装,本文假设安装在D:\Tomcat途径下: Step 1:新建动态网站项目并配置Servlet效劳器启动Eclipse,新建一个项目,在成立新项目的向导当选择"Dynamic Web Project"(动态网站项目),如图:点击“Next”,进入向导的下一步,键入项目名称,那个地址键入“MyWebApp”,然后是设置Servlet效劳器,那个地址需要把已经安装完成的设置为Eclipse 的调试Servlet程序的默许效劳器。
设置方式为点击“New...”如图:在接下来对话框当选择,如图:点击“Next”进入向导的下一步,点击“Browse...”,设置的安装途径,设置好后点击“Finnish”,完成servlet效劳器设置。
Servlet效劳器设置成功后,Eclipse会显示如图的信息,点击"Finish"完成新建项目的向导!动态网站项目成立成功后,Eclipse的显示和各个图标的作用如图显示:Step 2:新建Servlet程序,并调试程序:与一般Java项目类似,需要新成立Servlet类文件,在项目图标“MyWebApp”上点击鼠标右键,选择“New”->"Servlet",如图:在弹出的向导对话框中,输入新成立的Servlet类名“EchoForm”,如图:输入完成后点击“Finish”完成新建Servlet类成立Servlet类后,在程序编辑器中编辑程序,依照例1-3的输入,输入完成后,点击工具栏中的运行按钮,运行程序://EchoForm.java:import .*;import .*;import java.io.*;import .*;public class EchoForm extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse res)throws IOException{("text/html");PrintWriter out = ();Enumeration flds = ();if(!()){("<html>");("<form method=\"POST\"" +"action=\"EchoForm\">");for(int i = 0; i < 10; i++)("<b>Field" + i + "</b> " +"<input type=\"text\""+" size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>");("<INPUT TYPE=submit name=submitValue=\"Submit\"></form></html>");}else{("<h1>Your form contained:</h1>");while(()){String field= (String)();String value= (field);(field + " = " + value+ "<br>");}}();}}在WEB-INF目录下修改web.xml,文件内容:( )<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="java.sun/xml/ns/javaee"xmlns:web="java.sun/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="java.sun/xml/ns/javaeejava.sun/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>HelloWorld</display-name><!-- 那个地址开始添加servlet的配置 --><servlet><servlet-name>EchoForm</servlet-name><servlet-class>EchoForm</servlet-class></servlet><servlet-mapping><servlet-name>EchoForm</servlet-name><url-pattern>/MyWebApp/servlet/EchoForm</url-pattern></servlet-mapping><!-- 终止servlet的配置 --><!--web的默许启动页--><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></web-app>运行程序时会弹出一个对话框选择运行Servlet的效劳器,那个地址选择新建一个Servlet效劳器后点击“Finish”若是Tomcat已经设置好,能够看到Servlet程序的运行成效,如图,事实上确实是在Eclipse中运行了一个IE阅读器作为客户端,能够在“Field0”。
Servlet/JSP配置详解初学者问的诸如:《怎样配置环境变量》《怎样运行Servlet》啊?这样的问题太多了,现在我写一个初学者入门必读,以便对初学者有指导作用!首先是下载工具:我建议初学者用Editplus+JDK,我觉得如果用例如JB,Eclipse,JCreator,虽然刚开始的时候比较方便,但是确使初学者门不知道怎样配置环境变量,从而难以达到知其然,知其所以然的地步。
然后就是安装JDK,我是把它装到从c:\JDK目录下面。
然后设置CLASSPATH的问题了:正如操作系统利用PATH来搜索可执行程序一样,Java运行环境也会遍历CLASSPATH来查找类,即便是HelloWorld这样简单的程序,JVM 也会遍历CLASSPATH定义的每一个路径,直到找到相应的文件为止。
相信大家用的系统不是2k就是XP,然后就应当如下设置Path:我的电脑->属性->高级->环境变量然后在环境变量的Path后面追加: C:\JDK\bin;.;C:\JDK\lib 也可以这样配置:C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar ★记住:环境变量中的. 切记不能少,它表示当前路径,如果少掉出现的错误等会就说!dt.jar是关于运行环境的类库,tools.jar是关于一些工具的类库如果没有配置:C:\JDK\bin,则会出现“javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
”这样的错误。
下面我们就写一个示例程序:打开Editplus,新建一个Java文件,请照着如下输入,要一字不漏,并且分清大小写:public class HelloWorld{public static void main(String[] args){System.out.println("Hello,World!");}}然后把这个文件保存(ctrl + s)到HelloWorld.java,Java是分大小写的,所以大小写一定要分清,是HelloWorld.java不是helloworld.java或者其他。
Servlet开发JavaWeb⼯程⽰例详解⼀、什么是Servlet?Servlet是在服务器上运⾏的⼩程序,也就是⼀个Java类,但⽐较特殊,不需要new,⾃动就可以运⾏。
也有创建、垃圾回收和销毁过程。
Servlet是JavaWeb的三⼤组件之⼀(Servlet、Filter、Listener),它属于动态资源。
Servlet的作⽤是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:接收请求数据;处理请求;完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理。
Servlet需要我们⾃⼰来编写,每个Servlet必须实现javax.servlet.Servlet接⼝。
Servlet对象驻留在服务器内存中。
1、编写⼀个Servlet程序写⼀个java类,实现Servlet接⼝,实现了该接⼝,该类就不是普通的类了。
package servletdemo;import javax.servlet.*;import javax.servlet.annotation.WebServlet;import java.io.IOException;@WebServlet("/servlet")public class servletDemo implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("Hello Servlet");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}}部署应⽤到tomcat服务器。
Java Servlet 是一种用于开发基于Java 的Web 应用程序的技术。
它是一种Java 类,用于处理来自Web 客户端的请求,并生成动态Web 页面或数据。
下面是一个简单的Java Servlet 编程示例:```javaimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>Hello World!</h1>");out.println("</body></html>");}}```这个示例中,我们创建了一个名为`MyServlet` 的Servlet 类,并覆盖了它的`doGet` 方法来处理GET 请求。
在这个方法中,我们设置了响应的内容类型为"text/html",并使用`PrintWriter` 对象向客户端输出一个简单的HTML 页面。
要运行这个Servlet,你需要在Web 应用程序的部署描述符(例如`web.xml`)中配置它,并将它部署到支持Java Servlet 的Web 服务器上,例如Apache Tomcat。