Servlet(1)----------简介及Servlet+JDBC整合

1、Servlet是JAVAEE规范下的一个子规范,是运行于服务器端的一段JAVA程序,主要用于编写动态JAVAWEB网页。

2、servlet技术特点:

    1)功能强大:采用java语言编写,可以调用API中的对象及方法,servlet对象对web应用进行了封装,提供servlet对web应用的编程接口,还对Http请求进行相应的处理。

    2)可移植:java语言是跨平台的,servlet继承了java语言的优点,一次编码,多平台运行。

    3)性能高:servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务;servlet对象在servlet容器启动时被初始化,第一次被请求时,servlet容器将其实例化,此时它将驻存于内存中。如果存在多个请求,servlet不会再被实例化,仍然由此servlet对其进行处理。每个请求是一个线程,而不是一个进程。

    4)安全性高:servlet使用了java安全框架,同时servlet容器还为servlet提供额外的功能,从外界调用一个servlet的惟一方法就是通过Web服务器。

    5)可扩展:由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。

3、如何实现一个Servlet程序:

    1)在javax.servlet包下有一个Servlet接口,所有的servlet直接或间接的实现servlet方法。

    2)核心实现service方法来处理请求:参数:servletRequest 对象  专门处理请求方向相关事宜。

                                                                        servletReponse对象  专门处理响应方向的事宜。

4、使用Servlet手动开发一个动态的web应用,步骤如下:

            1)编写Servlet程序:定义一个类实现Servlet接口,并是实现service方法:   

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

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FirstServlet implements Servlet {

	@Override
	public void destroy() {
	

	}

	@Override
	public ServletConfig getServletConfig() {
		
		return null;
	}

	@Override
	public String getServletInfo() {
		
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		

	}

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		//1、设置编码格式 和 响应类型
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		
		//2、获取输出流
		PrintWriter out = response.getWriter();
		//3、响应的结果
		out.append("<html>");
		out.append("<body>");
		for(int i=0;i<5;i++)
			out.append("<p style='color:red;font-size:60px;'>"+"hello world!"+"<p>");
		out.append("</body>");
		out.append("</html>");
		//清空缓存区
		out.flush();

	}

}

                2)编译:在  项目-->WebRoot-->WEB-INF-lib  中加入servlet-api.jar(D:\apache-tomcat-8.0.50\lib目录下)

                3)在服务器中部署项目:将编译好的.class文件放到tomcat--webapps下项目中的WEB-INF-classes中(带包名)

                4)编写web.xml(部署描述符)

 <servlet>
        <!--  为servlet起个别名(唯一)  -->
  	<servlet-name>firstServlet</servlet-name>
  	<!--  全限定名(包名+类名)   -->
  	<servlet-class>com.baizhi.first.servlet.FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<!-- 为servlet起个别名(唯一),与上文保持一致 -->
	<servlet-name>firstServlet</servlet-name>
	<!-- 指定访问时的路径 -->
	<url-pattern>/showData</url-pattern>  
  </servlet-mapping>

                5)启动服务器测试:

            注意:注意启动服务器时,服务器会主动读取项目中的web.xml文件。

5、servlet简单执行流程

            

6、Servlet生命周期

        1)初始化:1.1)当用户第一次请求某个Servlet的时候

                           1.2)在启动服务器的时候初始化:需要在web.xml中指定:<load-on-startup>1</load-on-startup>

        2)服务:处理请求

        3)销毁:关闭服务器时销毁

注意:Servlet是单例的:

         每一次请求到达服务器时,服务器会检查有没有下一个目标的请求,如果没有则创建,如果有,则拿来直接使用。

        由于servlet是单例的,所有的用户共享的是一个对象,所以在servlet实现类中不建议定义成员变量,在高并发情况下Servlet是线程不安全的。


7、使用Eclipse集成环境开发,先配置服务器;

        1)继承javax.servlet.http.HttpServlet

                类关系:javax.servlet.http.HttpServlet extends GenericServlet

                              GenericServlet  implements Servlet

8、路径概念:

        1)URL:统一资源定位符。

                作用:唯一在网络上标识一个资源。比如:http://localhost:8888/ServletDay_1/showDate

        2)URI:统一资源描述符。

                作用:用于在web服务器唯一标识一个资源。比如:/ServletDay_1/showDate

        3)url-pattern:用于唯一在一个项目中标识一个资源 。比如:配置web.xml

9、请求一个servlet的几种方式:

        1)地址栏请求:比如:localhost:8888:/servlet_day1/showDate

        2)HTML页面超链接请求:比如<a href=”/servlet_day1/showDate“>点我啊!</a>

        3)HTML页面的表单请求:比如<form action='/servlet_day1/showDate' method='get/post'> </form>

        4)请求转发的方式  : 比如request.getRequestDispatcher('/showDate');

        5)请求重定向:比如response.sendRedirect('/servlet_day1/showDate');

10、JDBC+Servlet整合实现登陆功能

entity包:实体类

package entity;

public class Person {
	private String username;
	private String password;
	public Person(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}
	public Person() {
		super();
	}
	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 "PersonBean [username=" + username + ", password=" + password
				+ "]";
	}
	
	
}

dao包:操作数据口(接口)

package dao;

import entity.Person;

public interface PersonDao {
	Person seletPerson(String username,String password);
}

daoImpl包:实现dao包中的接口

package daoImpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import util.JDBCUtil;
import dao.PersonDao;
import entity.Person;

public class PersonDaoImpl implements PersonDao {

	
	@Test
	public Person seletPerson(String username,String password) {
		Connection conn = JDBCUtil.getConnection();
		PreparedStatement ps = null;
		ResultSet rs = null;
		Person p=null;
		String sql = "select * from test_user where username=? and password=?";
		
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, username);
			ps.setString(2, password);
			rs = ps.executeQuery();
			if(rs.next()){
				p = new Person(rs.getString(1),rs.getString(2));
			}
			return p;
			
		} catch (SQLException e) {
			e.printStackTrace();
			throw new  RuntimeException("出现错误!");
		}finally{
			JDBCUtil.closeAll(ps, null, rs);
		}
	}

}

service包:业务层(接口)

package service;

import entity.Person;

public interface PersonService {
	Person login(String username,String password);
}

serviceImpl:实现业务层接口

package serviceImpl;

import java.sql.Connection;
import java.sql.SQLException;

import service.PersonService;
import util.JDBCUtil;
import dao.PersonDao;
import daoImpl.PersonDaoImpl;
import entity.Person;

public class PersonServiceImpl implements PersonService {

	private PersonDao pd = new PersonDaoImpl();
	@Override
	public Person login(String username, String password) {
		
		
		Connection conn = JDBCUtil.getConnection();
		try{
			conn.setAutoCommit(false);
			Person person = pd.seletPerson(username, password);
			conn.commit();
			return person;
		}catch(Exception e){
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new RuntimeException("出问题了-----");
		}
	}

}

servlet:处理请求并响应

package servlet;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import service.PersonService;
import serviceImpl.PersonServiceImpl;
import entity.Person;

public class LoginServlet extends HttpServlet {
	public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		PersonService ps = new PersonServiceImpl();
		Person person = ps.login(username,password);
		
                if(person!=null)
                    out.println("<html><body><h1>登陆成功!</h1></body></html>");
                  else                     out.println("<html><body><h1>登陆失败!</h1></body></html>");}}

仅为个人笔记!


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: JSP(Java Server Pages),Servlet,JavaBean和MySQL可以结合使用来开发学生成绩管理系统。 首先,使用JSP来实现学生成绩管理系统的前端界面。JSP允许我们将Java代码嵌入到HTML页面中,方便实现页面的动态内容和交互。我们可以通过JSP创建学生登录界面、学生成绩查询界面、成绩录入界面等等。 其次,使用Servlet来处理前端页面的请求和响应。Servlet是基于Java编写的服务器端程序,可以接受来自前端页面的请求,并对请求进行处理。我们可以创建一个Servlet类用于处理学生登录、查询成绩、录入成绩等操作。通过与JSP的配合,我们可以实现数据的传递和页面的跳转。 还可以使用JavaBean来实现学生和成绩的数据模型。JavaBean是一种Java类,用于封装数据和提供相应的访问方法。我们可以创建一个学生类和成绩类作为JavaBean,用于存储和操作学生和成绩的信息。 最后,使用MySQL数据库来存储学生和成绩的数据。MySQL是一种关系型数据库管理系统,可以方便地存储和查询数据。我们可以创建学生表和成绩表,通过SQL语句将数据存储到数据库中,并使用Java的JDBC API来与MySQL数据库进行连接和操作。 通过以上的整合,我们可以开发一个功能完善的学生成绩管理系统。学生可以通过JSP界面登录系统,查询自己的成绩,并可以录入新的成绩。Servlet可以处理来自前端的请求,并将数据存储到MySQL数据库中。JavaBean提供了数据的封装和操作,方便系统的开发和维护。 ### 回答2: 学生成绩管理系统是一个基于JSP(Java Server Pages)、Servlet、JavaBean和MySQL的系统。它旨在帮助学校或教育机构高效地管理学生成绩。 首先,JSP和Servlet是基于Java的Web开发技术,可以实现动态网页的设计和交互。通过JSP和Servlet,我们可以创建一个用户友好的界面,使教师和学生能够方便地访问和管理成绩信息。 其次,JavaBean是一个独立的Java类,用于封装和处理数据。在学生成绩管理系统中,我们可以使用JavaBean来定义学生和课程等对象,以及相关的操作方法。通过JavaBean,我们可以实现对学生成绩的增删改查等功能。 最后,MySQL是一个流行的关系型数据库管理系统。我们可以使用MySQL来存储学生和课程的相关信息,包括姓名、学号、科目、成绩等。通过使用SQL语句,我们可以在系统中执行数据的存储、查询和更新操作,以便教师和学生能够及时获取成绩信息。 学生成绩管理系统的主要功能包括学生信息的录入、成绩的录入与查询、成绩的统计和分析等。教师可以通过系统录入学生信息和各科成绩,并且可以根据需要进行查询和导出。学生可以通过系统查询自己的成绩情况,以及与老师进行交流和反馈。 总之,通过结合JSP、Servlet、JavaBean和MySQL等技术,学生成绩管理系统可以提供一个高效、准确和方便的成绩管理平台,为学校和教育机构提供有效的帮助。 ### 回答3: JSP(JavaServer Pages),Servlet,JavaBean和MySQL可以一起用于学生成绩管理系统的开发。 首先,使用MySQL作为数据库管理系统存储学生成绩数据。可以创建一个名为"student"的表格,其中包括学生的学号、姓名和成绩等列,用于存储学生成绩信息。 接下来,使用Servlet作为后端控制器,通过接收和处理来自前端(例如JSP页面)的HTTP请求,与数据库进行交互。可以编写一个Servlet,用于处理学生成绩的增加、修改、删除和查询等操作。例如,在学生信息的增加功能中,Servlet可以从前端接收学生的学号、姓名和成绩等信息,然后将这些信息存储到MySQL数据库的"student"表格中。 针对JSP页面的开发,可以创建一个用于展示成绩管理的页面。例如,可以设计一个用于查询学生成绩的页面,提供一个输入框用于输入学号,点击查询按钮后,JSP页面向Servlet发送HTTP请求,并从数据库中检索对应学号的学生成绩,并将结果显示在页面上。 最后,可以使用JavaBean作为数据传输对象,用于在JSP页面和Servlet之间传递数据。JavaBean是一个轻量级的Java类,其中定义了成员变量和对应的getter和setter方法。在学生成绩管理系统中,可以创建一个JavaBean类,表示学生信息,并且在JSP页面和Servlet中使用它来传递学生的学号、姓名和成绩等数据。 总结而言,JSP,Servlet,JavaBean和MySQL可以一起用于学生成绩管理系统的开发。通过Servlet作为后端控制器,与MySQL数据库进行交互,并通过JSP页面来展示和传递数据,最终实现学生信息的管理和查询功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值