Servlet 在服务器运行java代码 只有用servletApi这个类才属于servlet 最大特点就是动态加载网页(而且是在java代码里写的),后面学习的jsp= servlet +html;
作用:他不处理逻辑关系,server来处理逻辑关系,它只用于调用哪一个实体的bear 把相应的数据转发到相应的界面
实现serlet两种方法:1. 实现接口servlet;
2.继承httpServlet 大部分网站用的http协议(比较常用)
解决乱码:
get提交方式:项目、tomcat、servlet类中请求的对象 request 的编码格式设置成UTF-8。
Post提交方式:servlet类中响应的对象response 编码格式设置为 UTF-8
在servlet中首先统一编码格式:
req.setCharacterEncoding(“utf-8”);
resp.setCharacterEncoding(“utf-8”);
resp.setContentType(“text/html;charset=utf-8”);
Tomcat目录下的sever文件中 :编码格式改成UTF-8
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
要把访问的url和服务器的servlet匹配上,必须在web.xml中建立联系:
FirstServlet
com.offf.cn.MyServlet
userName
root
FirstServlet
/MyServlet
/MyServlet这里是匹配的url,它还有其他几种方式:
1.全局匹配:/* 根目录下的所有文件都会直接匹配servlet
2.模糊: *.do 只要是.do结尾的都能匹配到
3./im/* 只要是im文件夹下的都能匹配
4.优先级:精确匹配 > /im/* > *.do
5./ 和 * 不能同时出现
Init()方法,是servlet初始化
ServletConfig 对象 用来获取servlet配置信息。
servlet 的init 的方式可以来设置servlet的配置信息(在web.xml里设置);
当我web容器在创建servlet时 ,自动会将我们设置的servlet信息封装到ServletConfig 里。
我们在调用servlet 的init()的方法时,就能获取到ServletConfig 里的配置信息。
注册功能的实现:
1.前端 jsp(注册界面)
2.后端 操作数据库的相应代码
数据库设计(需求)
1.注册的表(主键id,用户名,密码,昵称)
连接数据库:
package com.offf.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.offf.entity.User;
public class BaseDao {
Connection conn;
public Connection getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shoppingku", "root", "123456");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//增加
public int addUser(User user){
int num=-1;
try {
conn = getConnection();
String sql= “insert into user
values(?,?)”;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, user.getRname());
ps.setObject(2, user.getRpwd());
num = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return num;
}
public User yanzheng(User user){
User user2 = null;
try {
conn= getConnection();
String sql=”select * from user where rname=? and rpwd=?”;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, user.getRname());
ps.setObject(2, user.getRpwd());
ResultSet rs = ps.executeQuery();
if(rs.next()){
user2 = new User();
user2.setRname(rs.getString("rname"));
user2.setRpwd(rs.getString("rpwd"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user2;
}
}
服务器连接前端,并作出相应:
package com.offf.server;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.offf.dao.BaseDao;
import com.offf.entity.User;
public class MyServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public MyServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
String rname = request.getParameter("userName");
String rpwd = request.getParameter("userpassword");
User user = new User();
user.setRname(rname);
user.setRpwd(rpwd);
System.out.println(user);
BaseDao baseDao = new BaseDao();
PrintWriter out = response.getWriter();
//
User user2 = baseDao.yanzheng(user);
if(user2 !=null){
out.print("登陆成功");
//
}else{
out.print("登陆失败");
}
}
private int Number(String rid) {
// TODO Auto-generated method stub
return 0;
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}