Struts2

为什么开发Struts框架?

为了符合更加灵活、高效的开发需求

实质上Struts2是以WebWork为核心的,他采用拦截机制来处理用户请求。

(1)Jsp部分

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>主页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<form action="login" method="post">
请输入学号:<input type="text" name="num"><br/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>

(2)web.xml部分

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 指定struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
          org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
       </filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter在lib里面,不同版本的struts对应的过滤器可能不一样,在这里的是2.4的版本

(3)lib部分

并不需要所有的包(导入所有的包可能会出现错误)

(4)servlet部分

package test;

public class ServletTest {
private String mess;
private String num;
public String getMess() {
return mess;
}
public void setMess(String mess) {
this.mess = mess;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String execute(){
if(num.equals("111"))
return "success";
else
return "wrong";
}
}

(5)struts.xml部分

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<!-- 此处的name与index.jsp里面的action="login"对应 -->
<!-- 此处的class是jsp对应的servlet类的完整名称 -->
<action name="login" class="test.ServletTest">
<!-- 此处的name与test.ServletTest.java里面的方法返回值相对应 -->
<result name="success">/success.jsp</result>
<result name="wrong">/wrong.jsp</result>
</action>
</package>
</struts>



Hibernate

为什么开发hibernate框架?

为了提高数据库访问层的编程速度,Gavin King 开发出了当今最流行的ORM框架——hibernate。

(1)实例类

package entity;

public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }

(2)实体类对应的.hbm.xml文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="org.hibernate.test.array">
<!-- 在class里面,name是实体类的类名,table表示对应的表名 -->
<class name="entity.User" lazy="true" table="user">
<!-- name="id"表示entity.User表里面的id属性,colum="id"表示user表的字段名为id -->
<!-- 如果name和colum的值一样,不需要写colum -->
<id name="id" column="id">
<generator class="native"/><!-- 表示user表里面的id字段是自增型的 -->
</id>
<!-- 其他属性使用property标签来映射 -->
<property name="name" column="name"/>
<property name="age" column="age"/>
</class> </hibernate-mapping>

注意:每一个实体类与他对应的.hbm.xml文件同名

(3)lib

其实还有两个关于日志的包(教材上有介绍),但是在我下载的压缩文件里面没有找到

(4)Hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory>
<!-- 指定方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 数据库驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<!-- 数据库用户名,密码 -->
<property name="connection.username">root</property>
<property name="connection.password">admin</property>
<!-- 显示SQL语句 -->
<property name="show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="format_sql">true</property>
<!-- 用来关联hbm配置文件 -->
<mapping resource="entity/User.hbm.xml"/>
</session-factory> </hibernate-configuration>

(5)Dao

package dao;

import java.util.Iterator;
import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import entity.User; public class DAO {
private Configuration cfg;
private SessionFactory sf;
private Session s;
private Transaction ts;
/**
* 构造函数
*/
public DAO(){
//获取hibernate的配置信息
cfg = new Configuration().configure();
//更具config创建sessionFactory
sf = cfg.buildSessionFactory();
//更具factory创建session
s = sf.openSession();//开启Session,相当于开启JDBC的Connection
ts = s.beginTransaction();//创建事物的对象ts
}
/**
* 添加信息到数据库
* @param name
* @param age
* @return
*/
public int AddUser(User u){
int r=1;
User user = new User();
user.setName(u.getName());
user.setAge(u.getAge());
try{
s.save(user);
ts.commit();
}catch(Exception e){
e.printStackTrace();
ts.rollback();
System.out.println("添加失败!!");
r=0;
}finally{
s.close();
sf.close();
}
return r;
}
/**
* 删除数据库信息
* @param id
* @return
*/
public int DeletUser(int id){
int r =1;
User user = new User();
user.setId(id);
try{
s.delete(user);
ts.commit();
}catch(Exception e){
e.printStackTrace();
ts.rollback();
System.out.println("删除失败!!");
r=0;
}finally{
s.close();
sf.close();
}
return r;
}
/**
* 更新数据库信息
* @param u
* @return
*/
public int UpdateUser(User u){
int r=1;
User user = (User)s.get(User.class, u.getId());
if(u.getAge()!=0){
user.setAge(u.getAge());
}
if(u.getName().length()!=0){
user.setName(u.getName());
}
try{
s.update(user);
ts.commit();
}catch(Exception e){
e.printStackTrace();
ts.rollback();
System.out.println("更新失败!!");
r=0;
}finally{
s.close();
sf.close();
}
return r;
}
/**
* 查询数据库所有信息
* @return
*/
public List QueryUser(){
User user = new User();
Query query = s.createQuery("from User");//注意!!这里是:from 实例类名
List users = query.list();//序列化
//迭代
Iterator it = users.iterator();
while(it.hasNext()){
user=(User)it.next();
System.out.println(user.getId()+"号"+user.getName()+" "+user.getAge()+"岁");
}
return users;
}
/**
* 查询数据库所有名字是name的信息
* @param name
* @return
*/
public List FindUserByName(String name){
User user = new User();
Query query = s.createQuery("from User where name='"+name+"'");//注意!!这里是:from 实例类名
List users = query.list();//序列化
//迭代
Iterator it = users.iterator();
while(it.hasNext()){
user=(User)it.next();
System.out.println(user.getId()+"号"+user.getName()+" "+user.getAge()+"岁");
}
return users;
}
/**
* 查询数据库所有id是id的信息
* @param id
* @return
*/
public User FindUserById(int id){
User user = (User)s.get(User.class, id);
return user;
}
}

(6)数据库的增删查改

A:添加信息到数据库

package action;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import entity.User;
import dao.DAO; public class Add extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response){
String mess="添加用户信息成功!!";
String user = "minuobaci";
int age = 12;
User u = new User();
u.setAge(age);
u.setName(user);
DAO dao = new DAO();
int r = dao.AddUser(u);
if(r==0){
mess="添加用户信息失败!!";
System.out.println("添加用户信息失败!!");
}
try {
request.setAttribute("mess", mess);
request.getRequestDispatcher("/all").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

B:删除数据库信息

package action;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import dao.DAO; public class Delete extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response){
String mess="删除用户信息成功!!";
int id = 1; DAO dao = new DAO();
int r = dao.DeletUser(id);
if(r==0){
mess="删除用户信息失败!!";
System.out.println("删除用户信息失败!!");
}
try {
request.setAttribute("mess", mess);
request.getRequestDispatcher("/all").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

C:遍历数据库所有信息

package action;

import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import entity.User;
import dao.DAO; public class Find extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response){
String user = "minuobaci";
DAO dao = new DAO();
List lists = dao.FindUserByName(user);
for(User u:lists){
System.out.println("username: "+u.getId()+" age:"+u.getName())
}
}
}



SSH

1:创建web项目并导入对应的jar包

2:修改web.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- spring 监听器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 指定struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

3:创建实体类

package com.gx.entity;

public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}

4:创建实体类对应的hibernate配置文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="org.hibernate.test.array">
<!-- 在class里面,name是实体类的类名,table表示对应的表名 -->
<class name="com.gx.entity.User" lazy="true" table="user">
<!-- name="id"表示entity.User表里面的id属性,colum="id"表示user表的字段名为id -->
<!-- 如果name和colum的值一样,不需要写colum -->
<id name="id" column="id">
<generator class="native"/><!-- 表示user表里面的id字段是自增型的 -->
</id>
<!-- 其他属性使用property标签来映射 -->
<property name="name" column="name"/>
<property name="age" column="age"/>
</class> </hibernate-mapping>

5:创建spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean name="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mappingResources">
<list>
<value>com/gx/entity/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hbm2ddl.auto=update
</value>
</property>
</bean> <bean name="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3307/test?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
</beans>

6:创建Dao接口

package com.gx.dao;

import java.util.List;

import com.gx.entity.User;

public interface UserDAO {
//增加用户
public int addUser(User user);
//删除用户
public int deleteUser(User user);
//通过id查询用户
public User findUserById(int id);
//通过用户名查询用户
public List<User> findUserByName(String name);
//查询所有用户
public List<User> findAll();
//修改用户
public int updateUser(User user);
}

7:创建Dao接口的实现类

package com.gx.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.gx.entity.User; public class UserDAOImp extends HibernateDaoSupport implements UserDAO{
/**
* 增加用户
*/
public int addUser(User user){
int r=1;
System.out.println("########################################");
try{
this.getHibernateTemplate().save(user);
System.out.println("在UserDAOImp里面的addUser方法中添加用户成功!!");
System.out.println("########################################");
}catch(Exception e){
r=0;
System.out.println("在UserDAOImp里面的addUser方法中添加用户失败……");
System.out.println("########################################");
}
return r;
}
/**
*删除用户
*/
public int deleteUser(User user){
int r=1;
System.out.println("########################################");
try{
this.getHibernateTemplate().delete(user);
System.out.println("在UserDAOImp里面的deleteUser方法中删除用户成功!!");
System.out.println("########################################");
}catch(Exception e){
r=0;
System.out.println("在UserDAOImp里面的deleteUser方法中删除用户失败……");
System.out.println("########################################");
}
return r;
}
/**
* 通过用户名查询用户
*/
public List<User> findUserByName(String name){
ApplicationContext context =
          new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
SessionFactory lsf = (SessionFactory) context.getBean("sf");
Session session = lsf.openSession();
Transaction t = session.beginTransaction();
String hql="from User where name='"+name+"'";
System.out.println("########################################");
System.out.println("在UserDAOImp里面的findUserByName方法中hql="+hql);
System.out.println("########################################");
List<User> users = session.createQuery(hql).list();
return users;
}
/**
* 查询所有用户
*/
public List<User> findAll(){
return this.getHibernateTemplate().find("from User");
}
/**
* 通过id查询用户
*/
public User findUserById(int id){
return (User)this.getHibernateTemplate().get(User.class, id);
}
/**
* 修改用户
*/
public int updateUser(User user){
int r=1;
System.out.println("########################################");
try{
this.getHibernateTemplate().update(user);
System.out.println("在UserDAOImp里面的updateUser方法中更新用户成功!!");
System.out.println("########################################");
}catch(Exception e){
r=0;
System.out.println("在UserDAOImp里面的updateUser方法中更新用户失败……");
System.out.println("########################################");
}
return r;
}
}

8:在applicationContext.xml添加以下代码

    <bean name="UserDAO" class="com.gx.dao.UserDAOImp">
<property name="sessionFactory" ref="sf" />
</bean>

9:创建Service接口

package com.gx.service;

import java.util.List;

import com.gx.entity.User;

public interface UserService {
//添加用户
public String addUser(User user);
//通过id查询用户
public User findUserByID(int id);
//查询所有用户
public List<User> findAll ();
//通过用户名查询
public List<User> findUserByName(String name);
//删除用户
public String deleteUser(User user);
//更新用户
public String updateUser(User user);
}

10:创建Service接口的实现类

package com.gx.service;

import java.util.List;

import com.gx.dao.UserDAO;
import com.gx.entity.User; public class UserServiceImp implements UserService{
private UserDAO udao;
public UserDAO getUdao() {
return udao;
}
public void setUdao(UserDAO udao) {
this.udao = udao;
}
/**
* 更新用户
*/
public String updateUser(User user){
System.out.println("***********************************************");
System.out.println("正在执行UserServiceImp中的updateUser方法……");
System.out.println("***********************************************");
int r = udao.updateUser(user);
if(r==0)
return "更新失败!!";
else
return "ok";
}
/**
* 添加用户
*/
public String addUser(User user){
System.out.println("***********************************************");
System.out.println("正在执行UserServiceImp中的addUser方法……");
System.out.println("***********************************************");
int r = udao.addUser(user);
if(r==0)
return "添加用户失败!!";
return "ok";
}
/**
* 查询所有用户
*/
public List<User> findAll (){
return udao.findAll();
}
/**
* 通过用户名查询
*/
public List<User> findUserByName(String name){
System.out.println("***********************************************");
System.out.println("正在执行UserServiceImp中的findUserByName方法……");
System.out.println("***********************************************");
return udao.findUserByName(name);
}
/**
* 删除用户
*/
public String deleteUser(User user){
System.out.println("***********************************************");
System.out.println("正在执行UserServiceImp中的deleteUser方法……");
System.out.println("***********************************************");
int r = udao.deleteUser(user);
if(r==0)
return "删除用户失败!!";
else
return "ok";
}
/**
* 通过id查询用户
*/
public User findUserByID(int id){
return udao.findUserById(id);
}
}

11:在applicationContext.xml里面添加以下代码

    <bean id="UserService" class="com.gx.service.UserServiceImp">
<property name="udao" ref="UserDAO"></property>
</bean>

12:创建Action接口

package com.gx.action;

public interface UserAction {
//添加用户
public String add();
//显示所有的用户
public String show();
//显示所查询的用户
public String find();
//删除用户
public String delete();
//更新用户,获得用户信息
public String updateGet();
//更新用户 更新信息
public String update();
}

13:创建Action的实现类

package com.gx.action;

import java.util.List;
import com.gx.service.UserService;
import com.gx.entity.User;
public class UserActionImp implements UserAction{
private UserService uservice;
private List<User> users;
private User user;
private String mess;
public String getMess() {
return mess;
}
public void setMess(String mess) {
this.mess = mess;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserService getUservice() {
return uservice;
}
public void setUservice(UserService uservice) {
this.uservice = uservice;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
/**
* 添加用户
*/
public String add(){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("在UserActionImp中的add方法中");
System.out.println(user.toString());
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
mess = uservice.addUser(user);
if(mess.equals("ok")){
users = uservice.findAll();
return "addtrue";
}else{
return "addfalse";
}
}
/**
* 显示所有的用户
*/
public String show(){
users = uservice.findAll();
return "addtrue";
}
/**
* 显示所查询的用户
*/
public String find(){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("正在执行UserActionImp中的find方法……");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
users = uservice.findUserByName(user.getName());
return "addtrue";
}
/**
* 删除用户
*/
public String delete(){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("正在执行UserActionImp中的delete方法……");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
User u = uservice.findUserByID(user.getId());
mess = uservice.deleteUser(u);
if(mess.equals("ok"))
mess="删除用户成功!!";
users = uservice.findAll();
return "addtrue";
}
/**
* 更新用户 , 获得用户信息
*/
public String updateGet(){
user = uservice.findUserByID(user.getId());
return "updatetrue";
}
/**
* 更新用户信息 , 更新用户信息
*/
public String update(){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("正在执行UserActionImp中的update方法……");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
User u = uservice.findUserByID(user.getId());
u.setAge(user.getAge());
u.setName(user.getName());
mess = uservice.updateUser(u);
if(mess.equals("ok")){
users = uservice.findAll();
return "addtrue";
}
return "updatetrue";
}
}

14:在applicationContext.xml文件里面添加以下代码

<bean id="User" class="com.gx.action.UserActionImp">
<property name="uservice" ref="UserService"></property>
</bean>

15:创建Struts2配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="user_*" class="User" method="{1}">
<result name="addtrue">/index.jsp</result>
<result name="addfalse">/addUser.jsp</result>
<result name="updatetrue">/updateUser.jsp</result>
</action>
</package>
</struts>

16:创建index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>主页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="css/index.css"> </head> <body>
<form action="user_find" method="post">
<input id="find" type="text" name="user.name" placeholder="请输入需要查找的用户名" />
<input id="fs" type="submit" value="查询" />
</form>
<hr>
<div id="mess">${mess}</div>
<table id="table">
<tr>
<td>用户id</td>
<td>用户名</td>
<td>用户年龄</td>
<td>更新用户</td>
<td>删除用户</td>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td><a style="color:yellow" href="user_updateGet?user.id=${user.id}">更新</a></td>
<td><a style="color:red" href="user_delete?user.id=${user.id}">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>

17:创建addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>添加用户</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head> <body>
<div id="mess">${mess}</div>
<div id="back">
<div id="title">添加用户|ADD</div>
<form action="user_add" method="post">
<div id="bottom">
<br/>
<input class="input" name="user.name" type="text" placeholder="请输入用户名" /><br/>
<input class="input" name="user.age" type="text" placeholder="请输入用户年龄" /><br/>
<br/><a id="a" href="user_show">返回主页面</a><br/>
<input id="up" type="submit" value="添加" /><br/><br/>
</div>
</form>
</div>
</body>
</html>

18:创建updateUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>更新用户</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head> <body>
<div id="mess">${mess}</div>
<div id="back">
<div id="title">更新用户|UPDATE</div>
<form action="user_update" method="post">
<div id="bottom">
<br/>
请输入用户名
<input class="input" name="user.name" value="${user.name}" type="text"/><br/>
请输入用户年龄
<input class="input" name="user.age" value="${user.age}" type="text"/><br/>
<br/><a id="a" href="user_show">返回主页面</a><br/>
<input id="up" type="submit" value="添加" /><br/><br/>
</div>
</form>
</div>
</body>
</html>

struts2、hibernate和SSH的实现的更多相关文章

  1. 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

    上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...

  2. SSH(Spring Struts2 Hibernate)框架整合(注解版)

    案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 框架:Spring Struts2  Hibernate 案例架构: 1.依赖jar包 pom.xml < ...

  3. Spring整合Struts2,Hibernate的xml方式

    作为一个学习中的码农,一直学习才是我们的常态,所以最近学习了SSH(Spring,Struts2,Hibernate)整合,数据库用的MySQL. 写了一个简单的例子,用的工具是IntelliJ Id ...

  4. Struts2+Hibernate框架探险

    写这篇文章的目的 了解 JavaWeb 开发的人都知道SSH和SSM框架,前段时间开始接触 JavaWeb 开发,看了几个教学视频后就想上手构建一个小型 Web项目,可在跟着视频敲代码当中,使用 St ...

  5. 简单Spring+Struts2+Hibernate框架搭建

    使用Maven+Spring+Struts2+Hibernate整合 pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0&q ...

  6. [Java web]Spring+Struts2+Hibernate整合过程

    摘要 最近一直在折腾java web相关内容,这里就把最近学习的spring+struts2+hibernate进行一个整合,也就是大家经常说的ssh. 环境 工具IDE :Idea 2018 数据库 ...

  7. Spring+Struts2+Hibernate的整合

    这篇主要采用Maven搭建Spring+Struts2+Hibernate的整合项目,复习一下SSH框架,虽然spring提供自己的MVC框架, 但是Spring也提供和其他框架的无缝整合,采用组件形 ...

  8. struts2+hibernate整合-实现登录功能

    最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...

  9. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  10. struts2+hibernate+poi导出Excel实例

    本实例通过struts2+hibernate+poi实现导出数据导入到Excel的功能 用到的jar包: poi 下载地址:http://poi.apache.org/ 根据查询条件的选择显示相应数据 ...

随机推荐

  1. 1089 Insert or Merge(25 分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  2. ReflectionUtil

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  3. Java定时任务的几种实现方式

    java Timer比较具体的实现实例 https://www.cnblogs.com/0201zcr/p/4703061.html 转载大神 的 https://blog.csdn.net/kegu ...

  4. Access 将SQL查询结果强制转换为某种类型

    每个函数都可以强制将一个表达式转换成某种特定数据类型. 语法 CBool(expression) CByte(expression) CCur(expression) CDate(expression ...

  5. RabbitMQ使用教程(三)如何保证消息99.99%被发送成功?

    1. 前情回顾 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置 在以上两篇博客发布后 ...

  6. MySQL三种存储引擎总结

    MySQL三种存储引擎 MyISAM.InnoDB.MEMORY 1.MyISAM MyISAM,3.23.34a前的默认存储引擎. 优缺点 优点 在于占用空间小,处理速度快. 缺点 不支持事务的完整 ...

  7. (转)IE6 死后即将大快人心的10件事

    (转)未来五年程序员应当具备的十项技能 W3C CSS 2.1 Specification(Quick Table of Contents) (转)IE6 死后即将大快人心的10件事 2009-04- ...

  8. myBatis执行测试批量删除,出现测试类正常显示,但数据库数据没变

    一般在测试myBatis运行正常,但数据库数据不变时,有可能是SQL语句有问题,检查SQL语句没问题,但数据库依然没变,就说明myBatis方法执行后并未提交到数据库,可尝试在测试类添加   sess ...

  9. webpack4流程笔记

    初始化 mkdir webpack-demo   ->新建文件夹  cd webpack-demo  ->进入文件夹 第一步 npm init -y  -> 初始化项目(生成pack ...

  10. 从零开始的全栈工程师——js篇2.16

    js操作css样式 div.style.width=“200px” 在div标签内我们添加了一个style属性 并设定了width值 这种写法会给标签带来了大量的style属性 跟实际项目是不符的 我 ...