Struts2+MyBatis項目

目錄

web.xml

struts.xml

mybatis-config.xml

log4j.properties

database.properties

com.bdqn.entity

com.bdqn.utils

com.bdqn.dao

com.bdqn.action

lib

index.jsp

Login.jsp


 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>strutschu第一次萊尼聯</display-name>

	<filter>
		<!-- Struts2 的核心類配置,是必須配置 -->
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<!-- 一個filter可以對應多個mapping,出了寫成/*還可以攜程.action表示攔截以此結尾的請求 -->
		<!-- 攔截以後所有的東西都交由action來查找,action加載Struts.xml該配置文件和Struts1放在web-INF下不同,它是放在src文件夾下的 -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 中文亂碼過濾器配置——但是管不了ajax和action方法的結果交互 -->
	<filter>
		<filter-name>EncodingFilter</filter-name>
		<filter-class>com.bdqn.utils.EncodingFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>EncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

struts.xml
 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">      <!-- //頭必須要改成這個 -->
<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
	<package name="default" namespace="/" extends="struts-default">
	
	<!-- 設置了下面的配置,只需要在頁面輸入方法.action就可以準確定位方法所在位置了 -->
		<global-allowed-methods>regex:.*</global-allowed-methods>    <!-- //2.5版本以上要加這一句 -->
		<!-- 下面這個action默認的是走method=“execute"方法 -->
		<action name="GoodsAction" class="com.bdqn.action.GoodsAction">
			<!-- 結果爲“success”時,跳轉至success.jsp頁面 -->
			<result name="success">/index.jsp</result>
			<!-- 結果爲"error"時,跳轉至fail.jsp頁面 -->
			<result name="error">/fail.jsp</result>
			<allowed-methods>findALL</allowed-methods>     <!-- ←這裏是爲了後面快捷訪問網址/項目名/action的name+"!"+方法名.action 配置的對應方法 -->
		</action>
		
		<!-- 下面的action配置,每個對應的都是action中的一個method,前面的名字可以隨意取,只是在其它地方的引用名字 -->
		<action name = "findALLAction" class = "com.bdqn.action.GoodsAction" method = "findALL">
			<result name="success">/index.jsp</result>
		</action>
		<action name = "DeleteGoods" class = "com.bdqn.action.GoodsAction" method = "DeleteGoods">
			<result name="success" type="redirectAction">fenye</result>
		</action>
		<action name = "addGoods" class = "com.bdqn.action.GoodsAction" method = "addGoods">
			<result name="success" type="redirectAction">fenye</result>
		</action>
		<action name = "fenye" class = "com.bdqn.action.GoodsAction" method = "fenye">
			<result name="success">/index.jsp</result>
		</action>
		<action name = "update" class = "com.bdqn.action.GoodsAction" method = "update">
			<result name="success" type="redirectAction">fenye</result>
		</action>
		<action name = "findById" class = "com.bdqn.action.GoodsAction" method = "findById">
		</action>
		
		<!-- 標準的只有一個execute方法的實例,假如method不寫,默認找execute,假如class不寫默認找actionsupprt,假如result的name不寫默認走success -->
		<action name="Users1Action" class="com.bdqn.action.Users1Action">
			<!-- <result type="redirectAction" name="success">findALLAction</result> -->
			<result name="success" type="redirectAction">fenye</result>
			<result name="error">/Login.jsp</result>
			<allowed-methods>login</allowed-methods>     <!-- ←這裏是爲了後面快捷訪問網址/項目名/action的name+"!"+方法名.action 配置的對應方法 -->
		</action>
	</package>
</struts>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!--設置外置配置文件-->
	<properties resource="database.properties"></properties>
	
	<!--設置各種參數,包括類別名-->
	<settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>
	
	<!--設置類別名  p29-->
	<typeAliases>
		<package name="com.bdqn.entity"/>
	</typeAliases>
	
	<!--p30  -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置數據庫連接信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${user}" />
				<property name="password" value="${pwd}" />
			</dataSource>
		</environment>
	</environments>

	<!--p31  -->
	<mappers>
		<!-- 註冊userMapper.xml文件, userMapper.xml位於me.gacl.mapping這個包下,所以resource寫成me/gacl/mapping/userMapper.xml -->
		<mapper resource="com/bdqn/dao/GoodsMapper.xml"/>
		<mapper resource="com/bdqn/dao/Users1Mapper.xml"/>
	</mappers>
</configuration>

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

database.properties

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl1
user=system
pwd=1234

com.bdqn.entity

Goods.java

package com.bdqn.entity;
/*
 * 實體類雖然沒什麼好說的:但是對應的是Oracle所以有幾點要注意
 * 如果在數據庫的number是2位只能用byte,4位short,6位int,所以一般都設置爲6位
 */
public class Goods {
	private int id;
	private String name;
	private double price;
	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 double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public Goods() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Goods(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	
	
}

Users1.java

package com.bdqn.entity;
/*
 * 實體類雖然沒什麼好說的:但是對應的是Oracle所以有幾點要注意
 * 如果在數據庫的number是2位只能用byte,4位short,6位int,所以一般都設置爲6位
 */
/*
 * 由於Oracle數據庫user是關鍵字,所以不能用user建表
 */
public class Users1 {
	private int id;
	private String name;
	private String password;
	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 String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Users1(int id, String name, String password) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
	}
	public Users1() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	
}

com.bdqn.utils

EncodingFilter.java

package com.bdqn.utils;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class EncodingFilter implements Filter {
 
  
    
 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
 
        request.setCharacterEncoding("UTF-8");
 
        chain.doFilter(request, response);
        System.out.println("過濾器");
        response.setCharacterEncoding("UTF-8");
    }
 
  
    


	public void destroy() {
		// TODO Auto-generated method stub
		
	}





	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}
 
}

MyBatis.java

package com.bdqn.utils;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;



public class MyBatis {
	private static SqlSessionFactory factory;
	static{
		try {
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			factory = new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static SqlSession createSqlSession(){
		return factory.openSession(false);
		//這樣就不自動提交事務了
	}
	
	public static void closeSqlSession(SqlSession sqlSession){
		if (sqlSession!=null) {
			sqlSession.close();
		}
	}

}

com.bdqn.dao

GoodsMapper.java

package com.bdqn.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bdqn.entity.Goods;

public interface GoodsMapper {
	//查詢全部信息
	List<Goods> findALL();
	//根據id刪除對應的數據
	int deleteGoods(@Param("id")int id);
	//添加商品
	int addGoods(Goods goods);
	//分頁方法:這兩個one和two不是第幾頁,也不是每頁幾條,這是通過index和size計算出來的,筆記在有道筆記
	List<Goods> fenye(@Param("one")int one,@Param("two")int two);
	//跟分頁查詢配套的方法:用來查詢一個弄有幾條數據,用來計算總頁數的
	int findCount();
	//修改方法:底層寫成了MMyBatis的動態SQL
	int update(Goods goods);
	//通過id來尋找一個商品:跟修改是配套方法
	Goods findById(@Param("id")int id);
}

GoodsMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.bdqn.dao.GoodsMapper">
	<select id="findALL" resultType="Goods">
		select * from goods
	</select>
	<!-- 這個分頁查詢方法語句有個小於號是絕對報錯的,所以把它替換成&lt; -->
	<select id="fenye" resultType="Goods">
		SELECT * FROM  (  SELECT A.*, ROWNUM RN  FROM (SELECT * FROM goods) A  
		WHERE ROWNUM &lt; #{one} ) WHERE RN >= #{two}
	</select>
	<select id="findCount" resultType="int">
		select count(1) from goods
	</select>
	<select id="findById" resultType="Goods">
		select * from goods where id = #{id}
	</select>
	<delete id="deleteGoods" parameterType="int">
		delete from goods where id = #{id}
	</delete>
	<insert id="addGoods" parameterType="Goods">
		insert into goods values(goods_sequence.nextval,#{name},#{price})
	</insert>
	<update id="update" parameterType="Goods">
		update goods 
		<set>
			<if test="name != null">name = #{name},</if>
			<if test="price != null">price = #{price},</if>
		</set> 
		where id = #{id}
	</update>
</mapper>

Users1Mapper.java

package com.bdqn.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bdqn.entity.Users1;

public interface Users1Mapper {
	//登錄驗證方法
	List<Users1> login (@Param("name")String name,@Param("password")String password);
}

Users1Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.bdqn.dao.Users1Mapper">
	<select id="login" resultType="Users1">
		select * from users1 where name=#{name} and password=#{password}
	</select>
</mapper>

com.bdqn.action

GoodsAction.java

package com.bdqn.action;


import java.util.List;

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

import org.apache.ibatis.session.SqlSession;
import org.apache.struts2.ServletActionContext;

import com.alibaba.fastjson.JSONArray;
import com.bdqn.dao.GoodsMapper;
import com.bdqn.entity.Goods;
import com.bdqn.utils.MyBatis;
import com.opensymphony.xwork2.ActionSupport;


public class GoodsAction extends ActionSupport{
	//說實話Struts2是個很好用的框架,其它的框架都需要用request來獲取值,然後在來進行轉換,還有可能爲空報錯
	//但是在Struts2只需設置一個變量並給他set和get方法就可以直接使用這個變量名來存值取值
	
	//返回信息的變量
	private String mess;
	//記錄頁面刪除按鈕的value的值
	private int Delete;
	//添加方法封裝用戶傳來的信息
	private Goods addGoods;
	//默認設置第一次訪問第一個頁面
	private int index = 1;
	//每頁顯示兩條數據
	private int size = 2;
	//一共有幾頁
	private int count = 1;
	//傳遞修改方法的對象封裝
	private Goods goods;
	
	//查詢全部方法——在頁面有一個查詢全部的按鈕,跳轉路徑寫的就是這個方法
	public String findALL() throws Exception {
		//使用MyBatisSQL語句的方法,先獲取sqlsession鏈接對象
		//其它的步驟都封裝在utils包下了
		SqlSession session = MyBatis.createSqlSession();
		//調用GoodsMapper下的方法,他會自動根據MyBAtis下的配置,自動去尋找xml的SQL語句
		List<Goods> list = session.getMapper(GoodsMapper.class).findALL();
		//使用完一定要關閉鏈接,不然查詢的時候鏈接太多會造成多連接是的緩慢和延遲,親身體驗過!
		MyBatis.closeSqlSession(session);
		//在Struts2獲取request和response可以通過核心類來獲取
		HttpServletRequest request= ServletActionContext.getRequest();
		//獲取session鏈接
		HttpSession session1 = request.getSession();
		session1.setAttribute("list", list);
		return SUCCESS;
	}
	//刪除的方法
	public String DeleteGoods() throws Exception {
		//使用MyBatisSQL語句的方法,先獲取sqlsession鏈接對象
		//其它的步驟都封裝在utils包下了
		SqlSession session = MyBatis.createSqlSession();
		//調用GoodsMapper下的方法,他會自動根據MyBAtis下的配置,自動去尋找xml的SQL語句
		session.getMapper(GoodsMapper.class).deleteGoods(Delete);
		//記得事物是一定要提交纔會寫入數據庫,不然你的SQL語句是對的,返回結果是一但是查詢和數據庫都是空的就很難受了!親身體驗!
		session.commit();
		MyBatis.closeSqlSession(session);
		return SUCCESS;
	}
	//添加一個新的商品方法
	public String addGoods() throws Exception {
		//使用MyBatisSQL語句的方法,先獲取sqlsession鏈接對象
		//其它的步驟都封裝在utils包下了
		SqlSession session = MyBatis.createSqlSession();
		//調用GoodsMapper下的方法,他會自動根據MyBAtis下的配置,自動去尋找xml的SQL語句
		int count = session.getMapper(GoodsMapper.class).addGoods(addGoods);
		session.commit();
		MyBatis.closeSqlSession(session);
		return SUCCESS;
	}
	//分頁查詢方法
	public String fenye() throws Exception {
		SqlSession session = MyBatis.createSqlSession();
		//先獲取數據庫該表有幾條數據total,直接寫一個select count(1) from goods就可以了
		int total = session.getMapper(GoodsMapper.class).findCount();
		//用頁面量size和total來計算一共該顯示幾頁,就算最後一頁只有一條數據,也應該用一頁來顯示,所以必須先計算total/size是不是等於0
		count = total%size==0?total/size:(total/size)+1;
		//當一直點擊上一頁,到了第一頁時就不能讓index繼續減小,因爲沒有第0頁
		if (index<1) {
			index=1;
		//同理到了最大頁數的時候也不能讓他繼續加大
		}else if(index>count){
			index=count;
		}
		//這是計算分頁語句需要的參數值小於第幾條數據
		int one = (((index-1)*size)+1)+size;
		//這是計算該從第幾條數據開始顯示
		int two = ((index-1)*size)+1;
		
		//分頁方法
		List<Goods> list = session.getMapper(GoodsMapper.class).fenye(one, two);
		//使用完關閉下
		MyBatis.closeSqlSession(session);
		
		//獲取request和sqlsession 
		HttpServletRequest request= ServletActionContext.getRequest();
		HttpSession session1 = request.getSession();
		
		//在把值存入session之前先清空原先的值
		session1.removeAttribute("list");
		session1.setAttribute("list", list);

		return SUCCESS;
	}
	public String update() throws Exception {
		SqlSession session = MyBatis.createSqlSession();
		int count = session.getMapper(GoodsMapper.class).update(goods);
		session.commit();
		MyBatis.closeSqlSession(session);
		return SUCCESS;
	}
	public String findById() throws Exception {
		//獲取和響應器獲取
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		//這裏跟Ajax前端交互,但是過濾器是沒有的,所以手動設置
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		//獲取前端的id值然後查出該對象,然後返回給前端
		int id = Integer.parseInt(request.getParameter("id"));
		Goods good = MyBatis.createSqlSession().getMapper(GoodsMapper.class).findById(id);
		//用的是Ajax的json傳值方法
		response.getWriter().print(JSONArray.toJSONString(good));
		return NONE;
	}
	
	public String getMess() {
		return mess;
	}
	public void setMess(String mess) {
		this.mess = mess;
	}
	public int getDelete() {
		return Delete;
	}
	public void setDelete(int delete) {
		Delete = delete;
	}
	public Goods getAddGoods() {
		return addGoods;
	}
	public void setAddGoods(Goods addGoods) {
		this.addGoods = addGoods;
	}
	public int getIndex() {
		return index;
	}
	public void setIndex(int index) {
		this.index = index;
	}
	public int getSize() {
		return size;
	}
	public void setSize(int size) {
		this.size = size;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public Goods getGoods() {
		return goods;
	}
	public void setGoods(Goods goods) {
		this.goods = goods;
	}
	
	
}

Users1Action.java

package com.bdqn.action;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.bdqn.dao.Users1Mapper;
import com.bdqn.entity.Users1;
import com.bdqn.utils.MyBatis;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
//在struts2中我們有兩種選擇繼承的方法:
//第一:implements Action這種方法必須實現execute方法,
//但是我們假如生成了EXEcute方法,在後面多方法時地址跳轉的時候,會默認先找尋
//
public class Users1Action extends ActionSupport{
	//由於Struts有個很方便的屬性封裝的功能,所以我們只需要在action中
	//定義變量和它的set和get方法就可以前後頁面互相傳值
	//不用通過request.getparameter來獲取了
	private String name;
	private String password;
	//登錄驗證方法
	public String login() throws Exception {
		SqlSession session = MyBatis.createSqlSession();
		List<Users1> list= session.getMapper(Users1Mapper.class).login(name,password);
		if (list.size()>0) {
			return SUCCESS;
		}
		//這裏的返回值有兩種寫法:
		//要麼"success"或者SUCCESS,這兩種寫法的效果是等同的
		//大寫的方法只有五個參數,指代不同的意思是Struts2自帶的
		//SUCCESS成功
		//ERROR失敗
		//NONE  什麼時都不返回
		//LOGIN 
		//INPUT 
		//這些是java的默認final值所以需要大寫,其實代表的意思還需到配置文件去配置,纔會有效果;
		return ERROR;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Users1Action() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Users1Action(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}
	
	

}

WEB-INF

lib

commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang3-3.6.jar
fastjson-1.2.6.jar
freemarker-2.3.26-incubating.jar
javassist-3.20.0-GA.jar
log4j-1.2.17.jar
log4j-api-2.10.0.jar
mybatis-3.2.2.jar
mybatis-3.4.6.jar
mysql-connector-java-5.1.0-bin.jar
ognl-3.1.15.jar
ojdbc6.jar
struts2-core-2.5.17.jar

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
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>My JSP 'index.jsp' starting page</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">
	-->
	<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
  </head>
  
  <body>
  
    <div style="width: 400px;height: 400px;position: absolute;top: 50%;left: 50%;margin-left: -200px;margin-top: -200px;border: 1px solid black">
    	<table border="2">
    	<tr><td><a href="/封裝變量/Users1Action/findALLAction"><button>全部查詢</button></a></td></tr>
    	<tr>
    	<td>ID</td>
    	<td>商品名</td>
    	<td>價格</td>
    	<td>操作</td>
    	</tr>
    	<c:forEach items="${list}" var="li" varStatus="str">
    		<tr>
    			<td>${li.id}</td>
    			<td>${li.name}</td>
    			<td>${li.price}</td>
    			<td>
    			<a href="/封裝變量/DeleteGoods?Delete=${li.id}"><button>刪除</button></a>
    			<a><button name="updateButton" value="${li.id}">修改</button></a>
    			</td>
    		</tr>
    	</c:forEach>
    	</table>
    	<p>
    	共${count}/${index}頁
    	<a href="/封裝變量/GoodsAction/fenye?index=1&size=${size}&count=${count}"><button>首頁</button></a>
    	<a href="/封裝變量/GoodsAction/fenye?index=${index-1}&size=${size}"><button>上一頁</button></a>
    	<a href="/封裝變量/GoodsAction/fenye?index=${index+1}&size=${size}"><button>下一頁</button></a>
    	<a href="/封裝變量/GoodsAction/fenye?index=${count}&size=${size}"><button>尾頁</button></a>
    	</p>
    	
    	
    	
    	<p><button id="add">上架商品</button></p>
    	<div id="addGoods" style="display: none">
    	<form action="/封裝變量/GoodsAction/addGoods">
    	填寫新增商品名稱:<input type="text" name="addGoods.name"><br/>
    	填寫價格:<input type="text" name="addGoods.price"><br/>
    	<input type="submit" value="新增">
    	</form>
    	</div>
    	<div id="update" style="display: none">
    	<form action="/封裝變量/GoodsAction/update">
    	修改商品名稱:<input type="text" name="goods.name" id="goodsname"><br/>
    	修改商品價格:<input type="text" name="goods.price" id="goodsprice"><br/>
    	<input type="hidden" name="goods.id" id="goodsid"><br/>
    	<input type="submit" value="修改">
    	</form>
    	</div>
    </div>
    <script>
 	$(function(){
 		/* 點擊事件,只要點擊添加按鈕,就顯示添加表單 */
 		$("#add").bind("click",function(){
 			$("#addGoods").fadeIn(2000);
 		});
 		/* 只要點擊修改事件,就獲取該按鈕的value值,對應該行的商品id,然後把id給後臺,獲取goods對象,把值給表單,客戶修改完後再提交 */
 		$("[name='updateButton']").bind("click",function(){
 			var id = $(this).val();
 			$.ajax({
 				url:"http://localhost:8080/封裝變量/GoodsAction/findById",
 				type:"post",
 				data:{"id":id},
 				dataType:"json",
 				success:function(data){
 					alert(data.name);
 					$("#goodsname").val(data.name);
 					$("#goodsprice").val(data.price);
 				}
 			});
 			$("#goodsid").val(id);
 			$("#update").show();
 		});
 	});
 	
 	
  </script>
  </body>
</html>

Login.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>My JSP 'Login.jsp' starting page</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>
    <div style="width: 400px;height: 100px;position: absolute;top: 50%;left: 50%;margin-left: -200px;margin-top: -50px ">
    <form action="/封裝變量/Users1Action!login.action">
    	登錄名:<input type="text"  name="name"><br/>
    	密碼:<input type="text"  name="password"><br/>
    	<input type="submit" value="提交">
    </form>
    </div>
  </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章