MVC的基础及开发和Servlet的基础与使用

MVC概念

Model (模型)、View(视图)、Controller(控制器)构成了MVC,是一种把数据、页面、业务逻辑分开实现的一种开发思想。

Model:处理应用程序数据逻辑或实体类,使用javaBean实现。
View:进行交互。使用html、css、JavaScript、jquery等前端代码实现。
Controller:实现业务逻辑:可以用JSP实现,一般使用Servlet实现。

MVC的使用

Controller层(Servlet)

package com.Test.mvcTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;

import javax.servlet.AsyncContext;
import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpUpgradeHandler;
import javax.servlet.http.Part;

public class userServlet extends HttpServlet {
	
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		req.setCharacterEncoding("utf-8");
		String uname = req.getParameter("uname");
		String upwd = req.getParameter("upwd");
		
		userBean ub = new userBean(uname,upwd);
		
		userDao ud = new userDao();
		int num = ud.contion(ub);
		
		if (num==1) {
			resp.sendRedirect("Hello.jsp");
		}else {
			resp.sendRedirect("login.jsp");
		}
	}

	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req,resp);
	}
}

View层(JSP):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="userServlet" method="post">
		用户名:<input type="text" name="uname" />
		密码:<input type="password" name="upwd" />
		<input type="submit" value="登录"/>
	</form>
</body>
</html>

Modol层(javaBean):

package com.Test.mvcTest;

public class userBean {    //javaBean

	private String uname;
	private String upwd;
	
	public userBean(String uname, String upwd) {
		this.uname = uname;
		this.upwd = upwd;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpwd() {
		return upwd;
	}
	public void setUpwd(String upwd) {
		this.upwd = upwd;
	}
	
	
}
package com.Test.mvcTest;

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

import javax.servlet.http.HttpServlet;

public class userDao {       //实现数据库连接,和对数据库进行操作

		Connection con;
		String name = "root";
		String passwd = "123456";
		String url = "jdbc:mysql://localhost:3306/text";
		String sql = "select count(*) from student where student_name=? and student_possword=?";
		ResultSet re;
		PreparedStatement pstm;
	public int contion(userBean user) {

		
		int count=0;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection(url,name,passwd);
			pstm=con.prepareStatement(sql);
			
			pstm.setString(1, user.getUname());
			pstm.setString(2, user.getUpwd());
			re=pstm.executeQuery();
			
			if(re.next()) {
				int i = re.getInt(1);
				if (i>0) {
					count =1;
				}else {
					count = 0;
				}
			}
			return count;
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return -1;
		}catch(SQLException e) {
			e.printStackTrace();
			return -1;
		}finally {
			try {
				if(re!=null)re.close();
				if(pstm!=null)pstm.close();
				if(con!=null)con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}
}

Servlet

当Java的类符合一定的规范:
1、必须继承javax.servlet.http.HttpServlet
2、重写doGet()、doPost()方法。
(1)、doGet()方法接收并处理所有的get提交方式
(2)、doPost()方法接受并处理所有的post提交方式

Servlet的使用,必须进行配置:
Servlet2.5:配置web.xml
Servlet3.0:@WebServlet,该注解只属于对应的Servlet,所以只能设置该Servlet对应的参数,不能设置全局参数,例如用web.xml文件设置的Web容器全局参数:

  <context-param>
  		<param-name>WebContextParam</param-name>
  		<param-value>WebContextValue</param-value>
  </context-param>

Servlet2.5的web.xml的配置方式:

  <servlet>
  		<servlet-name>a</servlet-name>
  		<servlet-class>com.servlettest.Welcome</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>a</servlet-name>
  		<url-pattern>/Welcome</url-pattern>
  </servlet-mapping>

Servlet的执行流程:
请求 —> <url-pattern>/Welcome</url-pattern> -->通过<servlet-mapping>中的<servlet-name>a</servlet-name>匹配<servlet>中的<servlet-name>a</servlet-name>,之后找到<servlet-class>中的对应包中的类。

’ / ’ 在web.xml和JSP中的意义:

web.xml中 ’ / ’ 代表的是项目根路径(项目名为:ServletTest):

http://localhost:8080/ServletTest/

JSP中的 ’ / '代表的是服务器根路径:

http://localhost:8080/

Servlet的生命周期:
加载
初始化:init()
服务:service() - >doGet() doPost()
销毁:destory()
卸载

init():默认在第一次访问Servlet的时候执行(只执行一次)
但是修改xml文件

<servlet>
	<load-on-startup>1<load-on-startup>  //1代表第一个执行
</servlet>

destory():在关闭Tomcat服务器时,执行一次。

Servlet的API
Servlet的API:由两个软件包组成,对应于HTTP协议的软件包,对应除了HTTP协议以外的其他软件包。即Servlet API可以适用所有的通信协议
我们学习的Servlet是javax.servlet.http中的类和接口,shi基础的HTTP协议。

Servlet的继承关系

ServletConfig接口:
ServletContext getServletContext():获取Servlet上下文对象 (application)
String getInitParameter(String name):在当前Servlet范围中,获取name的值

ServletContext接口:
getContentPath():相对路径
getRealPath():绝对路径
setAttribute()、getAttribute()
String getInitParameter(String name):在当前Web容器中,获取名为name的值

Servlet中使用JSP对应对象的方法

out : PrintWriter out =response.getWriter();
Session : request.getSession();
application : request.getServeltContext();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值