JavaWeb基础使用简介
文章目录
一、 request获取页面值
//获取全部的请求路径
String url = req.getRequestURL().toString();
System.out.println("全部请求路径"+url);
//获取部分请求路径
String uri = req.getRequestURI();
System.out.println("获取部分请求路径"+uri);
//获取站点名
String contextPath = req.getContextPath();
System.out.println("站点名"+contextPath);
//获取请求方法
String method = req.getMethod();
System.out.println("获取请求方法"+method);
//获取参数
String name = req.getParameter("name");
System.out.println("姓名"+name);
//获取多个参数(复选框)
String[] hobbys = req.getParameterValues("hobbys");
if(hobbys!=null&&hobbys.length>0){
for (String hobby:hobbys) {
System.out.println("爱好:"+hobby);
}
}
二、设置获取页面信息的格式
//设置获取请求的编码信息
req.setCharacterEncoding("utf-8");
//获取前台页面的数据
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println(name);
System.out.println(password);
三、设置XML访问方式
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<!--首先起名,随意就好-->
<servlet-name>abc</servlet-name>
<!--写服务器的类,全部路径-->
<servlet-class>pratice</servlet-class>
</servlet>
<servlet-mapping>
<!--名字和上面必须相同 -->
<servlet-name>abc</servlet-name>
<!--访问的路径-->
<url-pattern>/ser</url-pattern>
</servlet-mapping>
</web-app>
四、超级链接的跳转以及传递参数
<a href="index?name=Tom&password">删除</a>
String name = req.getParameter("name");
String password = req.getParameter("password");
五、重定向
//重定向
if(req.getParameter("name")!=""){
resp.sendRedirect("success.jsp");
}else{
resp.sendRedirect("fail.jsp");
}
六、转发以及传递参数
//转发以及带参数转发
if(req.getParameter("name")!=""){
String name = req.getParameter("name");
//参数1随意,参数2为数据名
req.setAttribute("userName",name);
//转发的是请求
req.getRequestDispatcher("success.jsp").forward(req,resp);
}else {
req.getRequestDispatcher("fail.jsp").forward(req,resp);
}
七、获取页面复选框的值
//获取复选框的值
String[] date = req.getParameterValues("hobbys");
if(date!=null&&date.length>0){
for (String hobby:date) {
System.out.println(hobby);
}
}
八、把服务器的集合数据传递到前台
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置集合并存储数据
List<Student> list = new ArrayList<>();
list.add(new Student("Tom","man",18));
list.add(new Student("LiLi","woman",19));
//传递数据到其他界面
req.setAttribute("listStudent",list);
req.getRequestDispatcher("index2.jsp").forward(req,resp);
}
九、连接数据库参数(MySQL)
public interface FileUtlis {
public String DRIVER = "com.mysql.jdbc.Driver";
public String URL = "jdbc:mysql://localhost:3306/mydb";
public String USER = "root";
public String PASSWORD = "123456";
}
十、连接数据库方法
/* 连接数据库 */
public static Connection getConnection(){
Connection connection = null;
try {
Class.forName(FileUtlis.DRIVER);
connection = DriverManager.getConnection(FileUtlis.URL,FileUtlis.USER,FileUtlis.PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
System.out.println("数据库加载驱动或连接参数错误"+e.getMessage());
}
return connection;
}
十一、关闭数据库连接
/* 关闭数据库连接 */
public static void releaseall(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
十二、数据库增加、删除、修改的方法
/*数据库删除,修改,插入的方法*/
public boolean modifyDate(String sql,Object...objects){
/*首先获取数据库连接*/
Connection connection = ConnectionUtils.getConnection();
/*定义影响行*/
int result = 0;
/*解析SQL语句*/
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i=0;i<objects.length;i++){
/*循环加载参数构建语句*/
preparedStatement.setObject(i+1,objects[i]);
}
/*更新影响行数*/
result = preparedStatement.executeUpdate();
} catch (SQLException e) {
System.out.println("数据库语句解析错误"+e.getMessage());
}
/*影响行数大于0时则返回true*/
return result>0?true:false;
}
十三、在JSP页面中循环生成表格
<table>
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<%for(Student student:list){%>
<tr>
<td><%=student.getSno()%></td>
<td><%=student.getSname()%></td>
<td><%=student.getSage()%></td>
<td><%=student.getSex()%></td>
</tr>
<%}%>
</table>
十四、创建业务接口
/*创建接口业务层*/
public interface Service {
public List<Student> findAll();
}
十五、实现业务
/*实现业务层*/
public class ServiceImplemet implements Service {
SeekDao seekDao = new SeekDao();
@Override
public List<Student> findAll() {
/*创建方法需要的SQL语句*/
String sql = "select id,name,age,sex from student";
/*返回查询到的数据集合*/
return seekDao.seekDao(sql);
}
}
十六、数据库查询方法
public class SeekDao {
/*查询的结果返回实体对象的结果集*/
public List<Student> seekDao(String sql, Object...objects){
/*获取连接*/
Connection connection = ConnectionUtils.getConnection();
/*初始化解析属性*/
PreparedStatement preparedStatement = null;
/*初始化结果集属性*/
ResultSet resultSet = null;
/*创捷集合*/
List<Student> list = new ArrayList<>();
try {
preparedStatement = connection.prepareStatement(sql);
for(int i=0;i<objects.length;i++){
preparedStatement.setObject(i+1,objects[i]);
}
/*输出结果集*/
resultSet = preparedStatement.executeQuery();
/*循环遍历结果集*/
while (resultSet.next()){
/*创建对象,以便将对象存入集合*/
Student student = new Student();
/*将输入存入对象之中*/
student.setSno(resultSet.getInt(1));
student.setSname(resultSet.getString(2));
student.setSage(resultSet.getInt(3));
student.setSex(resultSet.getString(4));
/*将对象存入集合之中*/
list.add(student);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return list;
}
}
十六、request的作用域
1.request可以多次传递,并且值不发生改变,
2.当请求改变时,request中的值将发生改变
十七、服务器端的增删改查
1.可以通过隐藏域的方式传递标识用于分辨不同的操作
2.Get和Post的方法可以相互调用,查询方法最好写到Post中
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*获取标识位进行方法判断*/
String main = req.getParameter("main");
System.out.println(main);
if("delete".equals(main)){
doDelete(req,resp);
}else if("insert".equals(main)){
doInsert(req,resp);
}else if("update".equals(main)){
doUpdate(req,resp);
}
//直接返回,数据页面
doPost(req,resp);
}
/*分离删除方法*/
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取URL中的参数值
String id = req.getParameter("id");
ServiceImplemet serviceImplemet = new ServiceImplemet();
boolean flag = serviceImplemet.delete(Integer.parseInt(id));
}
/*分离插入方法*/
protected void doInsert(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
/*插入数据*/
System.out.println("insert");
String sname = req.getParameter("name");
String sex = req.getParameter("sex");
int sage = Integer.parseInt(req.getParameter("age"));
ServiceImplemet serviceImplemet = new ServiceImplemet();
Student student = new Student(sname,sex,sage);
boolean flag = serviceImplemet.insert(student);
}
/*分离修改方法*/
protected void doUpdate(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
/*修改数据*/
int id = Integer.parseInt(req.getParameter("id"));
String sname = req.getParameter("name");
String sex = req.getParameter("sex");
int sage = Integer.parseInt(req.getParameter("age"));
ServiceImplemet serviceImplemet = new ServiceImplemet();
Student student = new Student(id,sname,sex,sage);
boolean flag = serviceImplemet.update(student);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*获取数据*/
ServiceImplemet serviceImplemet = new ServiceImplemet();
List<Student> students = serviceImplemet.findAll();
/*传递数据*/
req.setAttribute("StudentList",students);
/*携带数据跳转页面*/
req.getRequestDispatcher("index2.jsp").forward(req,resp);
}
void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*获取数据*/
ServiceImplemet serviceImplemet = new ServiceImplemet();
List<Student> students = serviceImplemet.findAll();
/*传递数据*/
req.setAttribute("StudentList",students);
/*携带数据跳转页面*/
req.getRequestDispatcher("index2.jsp").forward(req,resp);
}